1 / 51

Início Projeto Certificação SCJP

Início Projeto Certificação SCJP. Capítulo I. DECLARÇÕES E CONTROLE DE ACESSO. Objetivos para a certificação:. Declarar Classes e Interfaces; Desenvolver Interfaces e Classes Abstract; Usar Primitivos, Arrays , Enums e Identificadores Legais;

andren
Download Presentation

Início Projeto Certificação SCJP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Início ProjetoCertificaçãoSCJP

  2. Capítulo I DECLARÇÕES E CONTROLE DE ACESSO

  3. Objetivos para a certificação: Declarar Classes e Interfaces; Desenvolver Interfaces e Classes Abstract; Usar Primitivos, Arrays, Enums e Identificadores Legais; Usar Métodos Static, Nomeação JavaBeans; Exercícios;

  4. Revisão O que é um programa em Java ? É principalmente uma coleção de objetos falando com outros objetos por meio da invocação do métodos uns dos outros. Classe – Um modelo que descreve os tipos de estado e de comportamento que os objetos do seu tipo podem ter.

  5. Revisão Objeto – é uma instância de uma determinada classe. Essa instância terá o próprio estado e terá acesso a todos os comportamentos definidos pela classe da qual foi criada. (Ex: newCidadeVO();) Estado – Cada objeto terá o seu conjunto único de variáveis de instância conforme definido na classe. Coletivamente, os valores atribuídos às variáveis de instância de um objeto compõem o estado do objeto. Método (COMPORTAMENTO) – ao criar uma classe o programador cria métodos para essa classe. É nos métodos que a lógica da classe é armazenada. Nos métodos, o verdadeiro trabalho é realizado.

  6. Revisão Identificadores – Todos os componentes de Java – classes, variáveis e métodos - precisam de nomes, esses nomes são conhecidos como identificadores. Herança – Permite ao código definido em uma classe ser reutilizado em outras classes. (SuperClasses, SubClasses, Ex: SuperVO, CidadeVO); Interfaces - É uma espécie de superclasse 100% abstract que define os métodos que uma subclasse deve suportar. OBS: abstract é a forma de obrigar métodos ou classes a serem implementadas em suas classes filhas.

  7. Identificadores e JavaBeans Identificadores Abordados na Certificação: Identificadores Legais Convenções de Código Java da Sun Padrões de nomeação JavaBeans

  8. Identificadores Legais Regras dos Identificadores Legais: Devem começar com letras. (Ex: _a, $c, cont); Não podem começar com números. Depois do primeiro caractere pode conter combinação de letras, caracteres de moedas, de conexão (_), e números. Não há limite para número de caracteres de um identificador. Não se pode usar uma palavra-chave Java como identificador .(Ex: final, double, int, ...). Os identificadores Java são case sensitive, ou seja, foo e Foo, são diferentes.

  9. Convenções de Código Java da Sun A Sun Criou um conjunto de padrões de programação para Java e publicou esse padrões em um documento chamado “Convenções de Código Java”. Veremos essas convenções a seguir. Ops!!! – As questões do exame não seguem as convenções de código, devido a limitações do programa de provas que usado para ministrar o exame internacionalmente.

  10. Exemplo de Código: ClassWombatimplementsRunnable { privateint i; publicsynchronizedvoidrun() { if (i%5 != 0) { i++; } for (int x=0; x<5; x++; i++) { if (x > 1) thread.yield(); } System.out.print(i + “ ”); } Publicstaticvoidmain(String[] args) { Wombat n = newWombat(); for ( int x=100; x>0; --x) { new thread(n).start();} }}

  11. O único padrão que é seguido tanto quanto possível no exame real é o dos padrões de nomeação. Como: Classes e interfaces - Primeira letra maiúscula e, se várias palavras forem escritas juntas a primeira letra de cada palavra deve ser maiúscula (formato inglês de “camelCase”). Para Classes os nomes devem ser substantivos. Ex: Impressora, Conta, ... Métodos - A primeira letra deve ser minúscula, o formato camelCase deve ser usado. Ex: getBalanco, getNomeCliente; Variáveis – segue as mesmas regras dos métodos. Constantes: São criadas marcando-se variáveis como static e final. Devem ser nomeadas usando-se letras maiúsculas e (_) como separador de palavras. Ex: ALTURA_MINIMA;

  12. Java Beans JavaBeans são classes Java que têm propriedades. Propriedades são como variáveis de instância private. Sendo assim a única maneira pela qual podem ser acessadas de fora da sua classe é através de métodos da classe. (setter , getter); Segue as Regras de nomeação de propriedades JavaBeans para o exame: getSize() prefixo get, seguido pela primeira letra maiúscula; Boolean – get ou is. Ex: getMaior(); ou isMaior(); setSize() prefixo set, seguido pela primeira letra maiúscula; publicvoidsetNomeAluno(String nome){...}; public String getNomeAluno () {..}

  13. Declarar Classes Escrevendo código Java estamos escrevendo classes ou interfaces. Dentro dessas classes temos variáveis e métodos, onde a forma como isso tudo é escrito pode afetar drasticamente o comportamento do código. Uma prova disso são métodos do tipo public ou do tipo private, ambos podem causar grandes diferenças na execução do código.

  14. Regras de Declaração de Arquivos-Fonte Deve existir somente uma classe public em cada arquivo de código-fonte. Os comentários podem aparecer em qualquer lugar do código-fonte. São independentes de quaisquer regra. Se houver uma classe public no arquivo o nome do arquivo deve ser o mesmo da classe. Ex: publicclass Cidade{}, Cidade.java; Declaração de pacote deve estar na primeira linha do código-fonte, e as importações logo abaixo. Um arquivo pode ter mais de uma classe não-public. Arquivos que não possuam classes public podem ter o nome diferente das classes do arquivo.

  15. Declaração e Modificadores de Classe Seque a declaração de uma Classe simples. Ex: classminhaClasse{ } É possível adicionar modificadores antes da declaração da classe. Ex: public classe MinhaClasse {} Existem duas categoria de modificadores: De acesso: public, protected, private; Que não se referem a acesso: strictfp, final, abstract; Quando dizemos que uma classe A tem acesso a uma classe B, estamos dizendo que, a classe A pode instanciar a Classe B, pode estender a classe B, pode também acessar a classe B, dependendo do controle de acesso dos métodos e variáveis dessa classe.

  16. Acesso Default Consiste em a classe não possuir modificadores precedendo-a na declaração. Ex: class Estado{} É um acesso restrito ao nível de pacote, onde uma classe com acesso default só pode ser vista (acessada) por classes de dentro do mesmo pacote. Ex: package financeiro; classContasPagar {} Observe o segundo arquivo: package venda; import financeiro.ContasPagar; class Venda extendsContasPagar { } Erro: Can`t acessclass financeiro.ContasPagar. Classor interface mustbepublic, in same package, oranacessiblememberclass.

  17. Acesso Público A declaração de uma classe com a palavra-chave public dá a todas as classes de acesso, de todos os pacotes, acesso público à classe. Sendo indispensável ainda a importação dessa classe. Considerando o exemplo anterior (Acesso Default), como poderíamos corrigir o erro apresentado: package financeiro; publicclassContasPagar {} package venda; import financeiro.ContasPagar; class Venda extendsContasPagar { }

  18. Outros Modificadores de Classes (Não-Referente a Acesso) O programado pode modificar uma classe usando as palavras-chave final, abstract, ou strictfp. Esse modificadores existem em adição a qualquer controle de acesso. Então é possível declarar uma classe como public e final ao mesmo tempo. Mas não é sempre que isso ocorre. É possivel marcar uma classe como final e strictfp ao mesmo tempo, mais nunca, marcar uma classe como final e abstract. Considerações strictfp => página 8.

  19. Classe Final Usando na declaração de sua classe a palavra-chave final , você está classificando sua classe em questão a não permitir que ela possa ser subclassificada. Em outras palavras jamais outra classe poderá estender uma classe final. Caso o faça ocorrerá uma exceção. Por que criar uma classe final ? Para uma garantia absoluta de que nenhum dos métodos dessa classe jamais vai ser substituído. Um exemplo disso são as classes das bibliotecas fundamentais do Java, como a classe String. Sendo assim use final para segurança.

  20. Classes Abstract Uma classe definida com abstract nunca poderá ser instanciada. Sua única função é ser estendia (subclassificada). abstract class Carro { private String cor; private String chassi; public abstract voidPotenciaMotor(); public abstract voidVelociadadeMaxima(); }

  21. Declaração Interfaces Uma interface é um contrato. Você está definindo o que a classe pode fazer, sem mencionar nada sobre como a classe o fará. Uma interface pode ser implementada por qualquer classe, de qualquer árvore de herança. Podendo assim definir que duas classes implemente a mesma interface. Considere uma interface, sendo uma classe 100% abstract. Verificar figura página 11.

  22. Declaração Interfaces Regras para declaração de métodos e variáveis em uma interface: Todos os métodos são implicitamente public e abstract; As interfaces só podem declarar constantes e não variáveis de instância. Assim toda variável deve ser definida public, static e final; Já que os métodos são abstract, ele não podem ser marcados como final, native, strictfp ou synchronized; Uma interface pode estender uma ou mais interfaces diferente; Uma interface não pode estender nada que não seja outra interface; Um interface não pode implementar outra interface ou classe; Uma interface deve ser declarada com a palavra-chave interface; Exemplo de declaração de uma interface:public abstract interface CidadeInterface { } O modificador abstract é considerado redundante, as interfaces são implicitamente abstract.

  23. Declaração Interfaces O modificador public na declaração da interface é obrigatório de você deseja que ela tenha acesso público e não o default. Já os modificadores public e abstract nos métodos é redundante já que todos os métodos de uma interface são implicitamente public e abstract. Verificar exemplos página 12;

  24. Declaração Constantes de Interfaces Ao colocar uma constante em uma interface, você está garantindo que todas as classes que implementarem essa interface terão acesso a essa constante. Discutir código página 13;

  25. Declarar Membros de Classes Modificadores de Acesso: public; protect; default; private; Modificadores não referente a Acesso. Declarando Enums.

  26. Membros Public Quando um método ou variável é declarado public , isso significa que todas as outras classes, independente do pacote ao qual pertençam, podem acessar o membro em questão (Assumindo-se que a própria classe esteja visível). Ex: Existem três formas de acessar um método: Invocando um método declarado na mesma classe; Invocando um método usando uma referência da classe; Invocando um método herdado;

  27. Membros Public Ex: package venda; importbasico.*; class Venda { publicstaticvoidmain (String[] args) { Cidade c = new Cidade(); c.incluir(); } } package basico; publicclass Cidade { publicvoid incluir() { System.out.println(“DADOS INCLUIDOS”); } }

  28. Membros Private Membros marcados como private não podem se acessados por código em nenhuma outra classe que não aquela na qual o membro private foi declarado. Ex: package basico; publicclass Cidade { privatevoid incluir() { System.out.println(“DADOS INCLUIDOS”); } }

  29. Membros Private package venda; importbasico.*; class Venda { publicstaticvoidmain (String[] args) { Cidade c = new Cidade(); c.incluir(); } } Erro: cannotfindsymbol Symbol : method incluir()

  30. Membros Private E se uma subclasse tentasse herdar um membro private da sua superclasse ? Quando um membro é declarado private, uma subclasse não pode herdar dele. Assim uma subclasse não pode ver, usar e nem sequer pensar nos membros private da sua superclasse.

  31. Membros Protect e Default Os níveis de controle de acesso protect e default são quse idênticos, mas com uma diferença fundamental. Um membro default só pode ser acessado se a classe que o estiver acessando pertencer ao mesmo pacote, enquanto que um membro protect pode ser acessado (atráves da herança) por uma subclasse mesmo se a subclasse estiver em um pacote diferente. Exemplo página 19.

  32. Detalhes de Protect Quando criamos uma variável de instância protect, ela se torna acessível para todas as classes do pacote onde está a classe na qual ela foi criada, bem como herdável por quaisquer subclasses de fora do pacote, ou seja, subclasses da classe onde foi criada a variável terão acesso a essa variável, podendo essas subclasses estarem fora do pacote da mesma. Exemplo página 20 e 21.

  33. Detalhes de Protect Quando uma subclasse, de fora do pacote herda um membro protect, esse membro torna-se essencialmente private dentro da subclasse, de forma tal que apenas a subclasse e as suas subclasses podem acessá-los. Pacote A Pacote B Parenteprotect variável x herda Sobrinhonew Filho(); x não é acessível Filho private variável x

  34. Detalhes de Default Exemplo de código usando Default: package basico; publicclass Cidade { int x = 9; } package basico; public Estado extends Cidade{ staticpublicvoidmain(String[] args) { System.out.println(“variavel x = ” + x); } } Se mudarmos o pacote da segunda classe, ocorre o seguinte erro de compilação: Estado. Java:4: Undefinedvariable: x System.out.println(“variavel x = ” + x); 1 error

  35. Métodos Final A palabra-chave final impede que um método possa ser substituído em uma subclasse, e frequentemente é usada para forçar os recursos API de um método. Exemplo disso é a classe String, nã0 é possível subclassificar essa classe, ou seus métodos, devido a argumentos final em seus métodos. Esse argumento pode ser usado também em variáveis, quando isso ocorre essa variável passar a não poder ser alterada, quanto ao seu valor.

  36. Métodos Abstract É um método declarado, mas não implementado. Um método é marcado como abstract quando se quer forçar as subclasses a fornecer a implementação deste. Ex: public abstract voiddoIt(); Obs: É inválido ter um único método abstract que seja em uma classe que não seja declarada explicitamente como abstract. Porem o inverso é permitido, ou seja, possuir uma classe abstract e dentro dela possuir métodos que não sejam abstract. A primera subclasse concreta (não-abstract) de uma classe abstract deve implementar todos os métodos abstract da superclasse. Exemplo página 25.

  37. Métodos Synchronized A palavra-chave synchronized indica que um método só pode ser acessado por um thread de cada vez. Essa questão será tratada no capítulo 9. Basta apenas saber que esse modificador só pode ser aplicado a métodos – não a variáveis, nem classes, apenas a métodos. Ex: publicsynchronized Record retrieveUserInfo(int id){}

  38. Métodos Native O modificador native indica que o método está sendo implementado dependente da plataforma, freqüentemente em C. Não é necessário saber como usar métodos nativos para o exame, apenas saber que native é um modificador e que native só pode ser aplicado a métodos – não a classes, nem variáveis, apenas a métodos.

  39. Declarações de Variáveis Existem dois tipo de variáveis em Java: primitivos – um primitivo pode ser de oito tipos diferente: char, boolean, byte, short, int, long, doubleou float. Uma vez declarado o seu TIPO primitivo não pode nunca ser alterado, embora seu valor possa se modificar. variáveis de referência – são usadas para se referir a um objeto. Esse contexto será melhor abordado no capítulo 2.

  40. Declarações Primitivos byte b; booleanisNovo; int x, y, z; Declarações Variáveis de Referência Object o; DogminhaNovaReferencia; String s1, s2, s3;

  41. Variáveis de instâncias São definidas dentro da classe porem fora de qualquer método, e só são inicializados quando a classe é instânciada. class Pessoa { // Defini campo (variáveis de instância) para a // instância de Pessoa. private String nome; private String sobrenome; private String enreco; }

  42. Variáveis de instâncias Para o exame você precisa saber que as variáveis de instância: podem usar todos os níveis de acesso; podem ser marcadas como final e transient; não podem ser marcadas como: abstract, sinchronized, strictfp, native, static.

  43. Variáveis Locais São aquelas variáveis declaradas dentro de um método. Isso significa que a variável não é apensa inicializada dentro do método, mas também declarada dentro dele. Ela é inicializada e destruída quando o método inicia e logo após quando ele é finalizado.

  44. Variáveis Final Declarar uma variável com a palavra-chave final impossibilita a reutilização dessa variável depois de ela ter sido inicializada com um valor explícito. Isso significa, que depois que uma variável final receber um valor, esse valor não poderá ser alterado novamente.

  45. Variáveis Transient Se marcar uma variável de instância como transient, você está dizendo à JVM para ignorar essa variável quando você tentar serializar o objeto que a contém. Serialização foi adicionada ao exame na versão 5 do Java, e será estudado no capítulo 5.

  46. Variáveis Volatile Diz à JVM que 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. Como é que é? Não se preocupe no exame tudo que você precisa saber é que , assim como transient, esse modificador só pode ser aplicado a variáveis de instância.

  47. Variáveis e Métodos Static É usado para criar variáveis e métodos que irão existir independentemente de quaisquer instância criadas para a classe. Membros static existem antes mesmo de você criar uma nova instância de uma classe.

  48. Declarando ENUMS Permite restringir uma variável para ter um de apenas uns poucos valores pré-definidos, em outras palavras, um valor de uma lista enumerada. Ex: enumCafe {PEQUENO, MEDIO, GRANDE} Para pegar o valor, será necessário: Cafecf = Cafe.PEQUENO;

  49. Declarando ENUMS Um ENUM pode ser declarado como as suas próprias classes separadas, ou como membros de classes, mas não podem ser declarados dentro de um método. Isso pode modificar a forma como acessar um ENUM. Exemplo página 36 e 37.

  50. Exercícios Página 44 – Teste Individual (9 Questões).

More Related