A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Organizando seu código Classes, pacotes, modificadores. Padrões.

Apresentações semelhantes


Apresentação em tema: "Organizando seu código Classes, pacotes, modificadores. Padrões."— Transcrição da apresentação:

1 Organizando seu código Classes, pacotes, modificadores. Padrões

2 Davi Pires {dpr@cin.ufpe.br} Revisão Classes Atributos Métodos Construtores Palavras-chave –class, void, return, new, this, null

3 Davi Pires {dpr@cin.ufpe.br} Pacotes Permitem organizar um projeto com diversas classes de forma mais intuitiva. docentesdisciplinas Professor CadastroProfessor RepositorioProfessor ProfessorAdjunto Disciplina CadastroDisciplina RepositorioDisciplina DisciplinaDaPos

4 Davi Pires {dpr@cin.ufpe.br} Pacotes Não há sub-pacotes. Mas podemos ligar pacotes “semanticamente” –Usando o nome. –Servidor projeto.rede projeto.rede projeto.rede.servidor Conexao ConexaoHandler ConexaoFinalizer AbstractProtocol Servidor ServidorHTTP ServidorFTP ServidorIRC

5 Davi Pires {dpr@cin.ufpe.br} Porque usar pacotes? Isola declarações de nomes. Ligação semântica entre as classes. Ligação entre a classes e o modo como elas estão fisicamente armazenadas. –Pacotes e estrutura de diretórios projeto rede servidor Conexao ConexaoHandler ConexaoFinalizer AbstractProtocol Servidor ServidorHTTP ServidorFTP ServidorIRC

6 Davi Pires {dpr@cin.ufpe.br} Ligando classes e pacotes Cláusula package: –Se estiver presente, deve ser a primeira cláusula num arquivo. projeto.rede Conexao ConexaoHandler ConexaoFinalizer AbstractProtocol package projeto.rede; class Conexao { AbstractProtocol protocol; //... }

7 Davi Pires {dpr@cin.ufpe.br} Como ligar pacotes? Cláusula import –Usada para importar para dentro do pacote atual as definições de classes contidas em outro pacote. projeto.rede projeto.rede.servidor Conexao ConexaoHandler ConexaoFinalizer AbstractProtocol Servidor ServidorHTTP ServidorFTP ServidorIRC package projeto.rede.servidor; class Servidor { Conexao conexao; //... } import projeto.rede.Conexao;

8 Davi Pires {dpr@cin.ufpe.br} Cláusula import Versão genérica: –import projeto.rede.*; –Não carrega todas as classes. Somente aquelas que você precisa. projeto.rede projeto.rede.servidor Conexao ConexaoHandler ConexaoFinalizer AbstractProtocol Servidor ServidorHTTP ServidorFTP ServidorIRC package projeto.rede.servidor; import projeto.rede.*; class Servidor { Conexao conexao; ConexaoHandler handler; //... }

9 Davi Pires {dpr@cin.ufpe.br} Pacotes Fundamentais em projetos grandes. –Organização das classes. –Divisão de tarefas dentro da equipe. Melhora a geração de documentação. Ajuda a implantação do tópico que veremos no slide seguinte...

10 Davi Pires {dpr@cin.ufpe.br} Controle de Acesso Como controlar a “visibilidade” de um atributo? Porque controlar a visibilidade de um atributo?

11 Davi Pires {dpr@cin.ufpe.br} Modificadores de Acesso Atributos –private – só é visto dentro da classe. –public – acessíveis de qualquer outra parte do projeto. –default – visibilidade de pacote. Métodos –private – auxiliares; visíveis só na classe. –public – acessíveis de qualquer outra parte do projeto. –default – visibilidade de pacote.

12 Davi Pires {dpr@cin.ufpe.br} Modificadores de Acesso Classes –public – acessível de qualquer parte. –private – acessível apenas no arquivo. –default – visibilidade de pacote. Pacotes –são sempre visíveis.

13 Davi Pires {dpr@cin.ufpe.br} Modificadores de Acesso Tentando acessar conteúdo private –PrivateExample.java –PrivateAcessor.java Tente compilar ambas as classes. –O que acontece?

14 Davi Pires {dpr@cin.ufpe.br} Corrigindo o erro... Sugestões?

15 Davi Pires {dpr@cin.ufpe.br} Corrigindo o erro... Será uma boa tornar o atributo public? –Resposta: NÃO! Razões –E se mudarmos o tipo ou a forma de armazenamento do atributo? –E se queremos ele read-only? –Ou write-only?

16 Davi Pires {dpr@cin.ufpe.br} Encapsulamento Solução: métodos get/set public! –Torne o atributo private –Crie métodos public que permitam acessar o valor da variável, ou alterá-lo.

17 Davi Pires {dpr@cin.ufpe.br} Exemplos // típico método get private int atributoSecreto; public int getAtributoSecreto( ) { return atributoSecreto; } // típico método set private int atributoSecreto; public void getAtributoSecreto (int parametro ) { atributoSecreto = parametro; }

18 Davi Pires {dpr@cin.ufpe.br} Encapsulamento Solução largamente encontrada em diversas aplicações (reais!). Tornando os atributos private você concentra os erros nos métodos public. –Facilita a detecção dos erros.

19 Davi Pires {dpr@cin.ufpe.br} Encapsulamento Exercício: –Altere os arquivos PrivateExample.java e PrivateAcessor.java. –Aplique encapsulamento nos campos de PrivateExample e altere o código em PrivateAcessor para que ele funcione com essas alterações.

20 Davi Pires {dpr@cin.ufpe.br} Padrão de Codificação Padrão de codificação Java. Variáveis e Métodos: –1ª palavra minúscula; palavras subjacentes maiúsculas. Classes –Sem underlines; todas palavras começando com maiúscula. Pacotes –letras minúsculas.

21 Davi Pires {dpr@cin.ufpe.br} Padrão de Codificação Nomes significativos para variáveis –Evite declarações como: int i = 0; boolean v; //para representar se o usuário é VIP –Prefira int contador = 0; boolean ehUsuarioVIP;

22 Davi Pires {dpr@cin.ufpe.br} Exercício Voltem à modelagem do restaurante da aula passada. Organize suas classes em pacotes. Reflita sobre a facilidade da implantação de mudanças neste design.

23 Este trabalho está licenciado sob uma Licença Creative Commons Atribuição-Uso Não-Comercial-Compatilhamento pela mesma licença. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-sa/2.0/br/ ou envie uma carta para Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.


Carregar ppt "Organizando seu código Classes, pacotes, modificadores. Padrões."

Apresentações semelhantes


Anúncios Google