Programa¸c˜
ao Orientada a Objetos
Programa¸c˜ao Orientada a Objetos
(Aula 2)
Leonardo Medeiros
Instituto Federal de Alagoas
Roteiro
1 Introdu¸c˜ao 2 Hist´orico 3 Portabilidade 4 Garbage Collector 5 POOO que ´
e Java ?
“Java ´e uma linguagem de programa¸c˜ao simples, orientada a objetos, distribu´ıda, interpretada, robusta, segura, independente de arquitetura, port´avel, de alta performance, concorrente e dinˆamica” Propaganda da SUN Microsystems
O que ´
e Orienta¸c˜
ao a Objetos
´
E considerar que tudo ´e um objeto: Os sistemas s˜ao objetos
Os dados manipulados e comunidados entre os sistemas s˜ao objetos
Cada parte de um sistema (sub-sistema) ´e um objeto Os dispositivos eletrˆonicos s˜ao objetos
A interface com o usu´ario ´e um objeto composto de v´arios outros objetos
Hist´
orico
A Orienta¸c˜ao a Objetos tem provado seu valor, devido a reusabilidade de c´odigo, legibilidade e facilitar o trabalho em grupos de equipes.
A Sun teve uma grande preocupa¸c˜ao com a documenta¸c˜ao de c´odigo, gerando arquivos javadoc juntamente com o c´odigo produzido. Atrav´es de coment´arios tecidos pelos
Independˆ
encia de Arquitetura
O compilador gera um arquivo objeto independente de plataforma. O c´odigo compilado ´e execut´avel em diversos processadores. Bastando ter um interpretador java em tempo de execu¸c˜ao para executar a aplica¸c˜ao.
O compilador gera ByteCodes que ´e interpretado pelo Java Runtime.
Portabilidade
Diferentemente das linguagens C e C++, n˜ao h´a aspectos “dependenes da implementa¸c˜ao” na especifica¸c˜ao da linguagem Java. Os tamanhos e os tipos de dados primitivos s˜ao
especificados, assim como o comportamente da aritim´etica utilizada.
Portabilidade na Pr´
atica
Em dispositivos m´oveis como a linguagem Java possui apenas uma especifica¸c˜ao os desenvolvedores de hardware tendem seguir as mesmas, contudo BUGs podem existir em determinadas
plataformas e em outras n˜ao, o que traz a necessidade de portar a aplica¸c˜ao em diversas plataformas.
Aten¸c˜ao
Linguagem Interpretada
O interpretador Java pode executar bytecodes Java diretamente em qualquer m´aquina na qual o interpretador tenha sido escrito
Garbage Collector (1/5)
Java n˜ao permite acesso direto `a mem´oria para fazer gerenciamento da mesma.
Ela possui o Garbage Collector (Coletor de Lixo) que roda eventualmente no sistema (Geralmente quando est´a ocioso) e libera espa¸co na mem´oria.
´
E uma vantagem para o desenvolvedor pois n˜ao o obriga a manipular diretamente o acesso `a mem´oria do computador fazendo-o abstrair de ficar liberando mem´oria.
Garbage Collector (2/5)
O gerenciamento de mem´oria est´a relacionado a duas tarefas: aloca¸c˜ao: quando o programa requisita um bloco de mem´oria, o gerenciador disponibiliza esse bloco para a aloca¸c˜ao;
reciclagem: quando um bloco de mem´oria foi alocado, mas os dados n˜ao foram requisitados j´a h´a algum tempo e, esse bloco pode ser reusado para outra requisi¸c˜ao
Garbage Collector (3/5)
Vantagens:liberdade do programador que n˜ao esta mais obrigado a ficar atento a detalhes de mem´oria;
h´a menos bugs de gerenciamento de mem´oria;
gerenciamento autom´atico ´e mais eficiente que o manual
Desvantagens:
desenvolvedor tende a estar mais desatento em rela¸c˜ao a detalhes de mem´oria;
Garbage Collector (4/5)
Em aplica¸c˜oes m´oveis o Garbage Collector (GC) pode ser cr´ıtico existe maneiras para facilitar o trabalho do GC.
1 Atribuir os objetos n˜ao utilizados para null
Garbage Collector (5/5)
System.Gc()
Esse m´etodo apenas sugere para que o GC seja chamado assim que puder removendo os objetos n˜ao utilizados e liberando espa¸co em mem´oria.
Classe carro
Classe Carro
O Objeto ‘carro’ tem propriedades e executa a¸c˜oes:
Propriedades (Atributos)
Cor Tamanho Potˆencia
A¸c˜oes (M´etodos)
Acelera Freia
Source Files
Todo arquivo possui a extens˜ao .java;
Cont´em uma classe definida como p´ublica(com nome idˆentico ao arquivo) e ilimitadas a classes particulares;
A classe se apresenta na seguinte ordem: package, imports, declara¸c˜ao e defini¸c˜ao da classe;
Example
1 package ifal.poo; 2 import java.util.*;
Case Sensitive
Case Sensitive
distin¸c˜ao entre mai´usculas e min´usculas int Numero1 = 0;
int numero1 = 5;
Na mesma declara¸c˜ao s˜ao duas vari´aveis distintas. Nomes iniciam por letras ( a..z A..Z ), sinal de dollar ( $ ) ou underscore ( ) depois ´e permitido d´ıgitos ( 0..9 )
Tipos Primitivos
boolean char byte short int long float doubleTamanho dos tipos Primitivos
Tipo Tamanho (Bits)
byte 8 int 32 float 32 char 16 short 16 long 64 double 64 Tabela: Tarefas
Signed Data - Inteiros
Tipos primitivos que recebem valores positivos, negativos ou zero. Tipo Tamanho M´aximo M´ınimo
byte 8 −27 27 - 1
short 16 -215 215 - 1 int 32 −231 231 -1
long 64 −263 263 - 1 Tabela: Signed Data
Unsigned Data
N˜ao possui valores negativos
O tipo char ´e inteiro mas n˜ao possui sinal. Ou seja ele vai de 0 a 216 -1.
O tipo char ´e o tipo que consegue armazenar um caractere em UNICODE
Unicode ´e o padr˜ao de caracteres que permite armazenar todos os caracteres em todos os idiomas ele possui 2 bytes de armazenamento o que lhe permite 65.536 caracteres. Bem mais do que o padr˜ao ASCII cerca de 35 mil
Tipo Boolean
Permite dois valores false
Constantes Para Valores N˜
ao Num´
ericos
Algumas opera¸c˜oes matem´aticas retornam valores que n˜ao podem ser expressos em n´umeros como INFINITO por exemplo.
Float.NaN
Float.NEGATIVE INFINITY Float.POSITIVE INFINITY Double.NaN
Atribui¸c˜
ao e Inicializa¸c˜
ao
Ap´os declarar uma vari´avel, deve-se inicializ´a-la explicitamente por meio de uma instru¸c˜ao de atribui¸c˜ao – nunca se deve ter vari´aveis n˜ao inicializadas.
int num1; //isto ´e uma declara¸c˜ao int num1 = 45; //isto ´e uma atribui¸c˜ao char digito = ‘S’;
D ´UVIDAS ? P´agina das aulas: