Upload
michelmedeiros
View
1.131
Download
4
Embed Size (px)
Citation preview
Grupo de Estudos Certificação Java
SCJP – Sun Certified Java Programmer
Orientação a Objetos –Encapsulamento
O encapsulamento ajuda a implementação por trás de uma interface (ou API);Proteção de variáveis de instância (private);Acesso através de métodos “capturadores - gets” e “configuradores - sets”;O relacionamento É UM se refere a herança, é representado por extends.O relacionamento TEM-UM são baseados na utilização e significa que a instância de uma classe “tem uma” referência a instância de outra classe.
Orientação a Objetos –Herança
Mecanismo que permite que uma subclasse herda variáveis e métodos da superclasse;
Conceito fundamental do polimorfismo; Todas as classes herdam de Object;
Polimorfismo
Significa “muitas formas”;Variáveis de referências são imutáveis, mais podem se referir a objetos de subtipos;O tipo de variável de referência (não o tipo do objeto) determina quais métodos poderão ser chamados;As chamadas polifórmicas se aplicam apenas a métodos de instâncias subscritos;
Subscrição e Subrecarga de métodosOs métodos podem ser subscritos e sobrecarregados, os construtores só podem ser sobrecarregados; Os métodos abstract devem ser subscritos pela primeira subclasse concreta (não abstract);A respeito ao método subscrito, o método novo:
Deve ter a mesma lista de argumentos; Deve ter o mesmo tipo de retorno (exceto covariantes Java 5 – retorno de subclasse);Não deve ter um modificador de acesso mais restritivo;Não pode lançar exceções verificadas novas ou mais abrangentes;
Os métodos final não podem ser subscritos;Só os métodos herdados podem ser subscritos, os métodos private não são herdados;Chamadas super.metodoSubscrito, chamam versão da superclasse de um método subscrito.
Subscrição e Subrecarga de métodosSignifica reutilizar o mesmo nome do método, mas com argumentos diferentes;Os métodos sobrecarregados:
Devem ter lista de argumentos diferentes; Podem ter tipos de retorno diferentes, contanto que a lista de argumentos sejam diferentes;Podem ter modificadores de acesso diferentes;Podem lançar exceções diferentes;
Os métodos de uma superclasse podem ser sobrecarregados em uma subclasse;O polimorfismo é aplicável à subscrição e não à sobrecarga;O tipo de objeto (e não o tipo de referência) diz qual o método subscrito será usado no tempo de execução;O tipo de referência diz qual método sobrecarregado será usado no tempo de compilação;
Modificadores de Acesso a Membros
NãoNãoNãoSim
Qualquer classe que não seja uma subclasse e esteja fora do mesmo pacote
NãoNãoSim
(herança)Sim
Subclasse fora do mesmo pacote
NãoSimSimSimSubclasse do mesmo pacote
Não SimSimSimQualquer classe do mesmo pacote
SimSimSimSim
A partir da mesma classe
PrivateDefaultProtectPublicVisibilidade
Variáveis Locais
As declarações de variáveis locais não podem ter modificadores de acesso; final é o único modificador disponível para variáveis locais;As variáveis locais não recebem valores padrão, portanto, devem ser inicializadas antes do uso;
Outros modificadores – membros
Os métodos final não podem ser sobrecarregados em uma subclasse;Os métodos abstract foram declarados, com uma assinatura, um tipo de retorno e uma cláusula throws opcional, mais não foram implementados;Os métodos abstract terminam com um ponto-e-vírgula, e não chaves;Pode-se ter uma classe abstrata sem método abstract;Há três maneiras de identificar um método não abstract;
O método não é marcado como abstract;O método possui chaves;O método possui código entre chaves;
A primeira classe não-abstrata concreta a estender uma classe abstract deve implementar todos os métodos abstratos dessa;
Outros modificadores - membros
O modificador syncronized só é aplicado a métodos e blocos de código, podendo ter qualquer controle de acesso e serem marcados como final (Ex. Método só pode ser acessado por uma thread de cada vez) ;Os métodos abstract devem ser implementados por uma subclasse, tem de ser herdados, por isso não podem ser private nem final;O modificador native só é aplicado a métodos (Ex.: Indica que o método está sendo implementado conforme plataforma, comumente C);O modificador strictfp só é aplicado a classes e métodos (Ex.: Força pontos flutuantes a aderir o padrão IEEE754);
Métodos com Argumentos Variáveis
A partir do Java 5, os métodos podem declarar um parâmetro que aceita zero a vários argumentos, é o chamado método var-arg;Um parâmetro var-arg é declarado com a sintaxe tipo...nome; por exemplo:
teste (int ... X) {}Um método var-arg só pode ter um parâmetro var-arg;Em métodos com parâmetros normais e um var-arg, o var-arg deve vir por último;
Declaração de Variáveis
São classificadas em primitivas e de referência;As variáveis de instância (alocadas no heap – objetos) podem qualquer tipo de controle de acesso e serem marcadas como final ou transient;As variáveis de instância não podem ser declaradas como abstract, syncronized, native, strictfp ou static;É válido declarar uma variável local com o mesmo nome de uma variável de instância: isso é chamado de sombreamento;As variáveis final possuem as seguintes propriedades:
Não podem ser reinicializadas, uma vez que tiverem um valor atribuído;Não podem referenciar um objeto diferente se já tiverem um objeto atribuído a elas;
Declaração de VariáveisAs variáveis de referência final devem ser inicializadas antes que a execução do construtor seja concluída;Não existe objetos final. Uma referência a objeto marcada como final não significa que o objeto propriamente dito seja inalterável;É válido declarar uma variável local com o mesmo nome de uma variável de instância: isso é chamado de sombreamento;As variáveis locais residem na pilha(destrói após uso);O modificador transient só pode ser aplicado a variáveis de instância (Ignorar variável quando tentar serializar objeto que a contém);O modificador volatile só pode ser aplicado a variáveis de instância (Diz a um thread que acesse a variável deve sempre reconciliar a sua cópia private da variável com a cópia master presente na memória);
Declaração de Arrays
Os arrays podem armazenar tipos primitivos ou objetos, mas o array propriamente dito é sempre um objeto;Quando você declara um array, os colchetes podem ficar a esquerda ou a direita do nome da variável;Nunca é válido incluir o tamanho do array na declaração;Um array de objetos pode armazenar qualquer objeto que passe no teste É-UM (ou instanceof) para o tipo declarado do array. Por exemplo: Se horse estender Animal, então um objeto Horse pode ser colocado em um array de Animal;
Variáveis e métodos static
Não são associados a nenhuma instância específica de classe;Não é necessária a existência da instância de uma classe para que os membros static desta sejam usados;Só haverá uma cópia da variável ou classe static e todas as instância a compartilharão;Os métodos static não têm acesso direto a membros não-static;
Enums (Lista Numerada)
Um enum especifica uma lista de valores constantes que podem ser atribuídos a um determinado tipo;Um emum não é uma String nem um int; o tipo constante de um enum é o tipo do próprio enum. Por exemplo: INVERNO, PRIMAVERA, VERÃO e OUTONO são do tipo enum Estação;Um enum pode ser declarado fora ou dentro de uma classe, mas não em um método;Um ewnum declarado fora de uma classe não pode ser marcado com static, final, abstract, protect ou private;
Enums
Os enums podem conter construtores, métodos, variáveis e corpos de classes constantes;As constantes enum podem enviar argumentos para o construtor enum, usando a sintaxe BIG(8), onde o literal int 8 é passado ao construtor enum;Os construtores enum podem ter argumentos e podem ser sobrecarregados;Os construtores enum nunca podem ser chamados diretamente no código. Eles são sempre chamados automaticamente quando um enum é inicializado;O ponto-e-vírgula ao final da declaração de um enum é opcional. Ambos são válidos:
enum Numero { UM, DOIS, TRES}enum Numero { UM, DOIS, TRES} ;
FIM