SCJP

1,265 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,265
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
32
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

SCJP

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

×