Anúncio

Aula 3.ppt

Systems Analyst
12 de Jun de 2015
Anúncio

Mais conteúdo relacionado

Similar a Aula 3.ppt(20)

Anúncio

Último(20)

Aula 3.ppt

  1. Instrutor Daniel Bernardo Programação Orientada a Objetos com Java
  2. Instrutor Daniel Bernardo Princípios de Orientação a Objetos • Construímos Software para resolver problemas • Pessoas tem problemas • Logo, construímos Software para pessoas
  3. Instrutor Daniel Bernardo Princípios de Orientação a Objetos Um bom Software não apenas resolve um problema imediatamente, como também está projetado para suportar as inevitáveis mudanças solicitadas pelas pessoas.
  4. Instrutor Daniel Bernardo Princípios de Orientação a Objetos • Validação de CPF – Espalhado por várias partes do sistema; • Adição de novas funcionalidades – Validar maior idade;
  5. Instrutor Daniel Bernardo Princípios de Orientação a Objetos • Sistema para banco – A classe Conta
  6. Instrutor Daniel Bernardo Princípios de Orientação a Objetos • Sistema para banco – A classe Cliente
  7. Instrutor Daniel Bernardo Princípios de Orientação a Objetos • Usando nossa Classe – Devemos utilizar nossa classe em forma de Objeto; – Um objeto é uma instância de uma classe; – Para instanciar um objeto de uma classe, usa-se a palavra new; – Se você tentar utilizar uma variável do tipo da nossa classe, sem utilizar o new, obterá um NullPointerException;
  8. Instrutor Daniel Bernardo Princípios de Orientação a Objetos • Métodos:
  9. Instrutor Daniel Bernardo Pacotes • Quando um programador utiliza as classes feitas por outro surge um problema clássico: como escrever duas classes com o mesmo nome? • Por exemplo, pode ser que a minha classe de Data funcione de um certo jeito e a classe de Data de um colega de outro jeito. Pode ser que a classe de Data de uma biblioteca funcione ainda de terceira maneira. • Os diretórios estão diretamente relacionados aos chamados pacotes e costumam agrupar classes de funcionalidade parecida. • Um pacote pode conter nenhum, um ou mais subpacotes e/ou nenhuma,uma ou mais classes dentro dele
  10. Instrutor Daniel Bernardo Pacotes • Em Suma: – Um pacote ou package na tecnologia Java nada mais é do que um conjunto de classes localizadas na mesma estrutura hierárquica de diretórios. – Usualmente, são colocadas em um pacote classes relacionadas, construídas com um propósito comum para promover a reutilização de código: • validação de CPF e CNPJ, operações com data, manipulação de vetores, cálculos matemáticos como médias e percentuais, etc;
  11. Instrutor Daniel Bernardo API Java
  12. Instrutor Daniel Bernardo Padrão de nomenclatura • br.com.nomedaempresa.nomedoprojeto.subpacote • br.com.nomedaempresa.nomedoprojeto.subpacote2 • br.com.nomedaempresa.nomedoprojeto.subpacote2.subpacote3 • Os pacotes só possuem letras minúsculas, não importa quantas palavras estejam contidas nele. • Esse padrão existe para evitar ao máximo o conflito de pacotes de empresas diferentes.
  13. Instrutor Daniel Bernardo Import Full Qualified Name Esse é o verdadeiro nome de uma classe, por isso que duas classes X em pacotes diferentes não conflitam: br.com.empresa.pacote.Classe Utiliza-se o import para declaração de classes que são referenciadas no arquivo fonte mas que não pertencem ao pacote onde este arquivo se encontra. Podem referenciar: Outras classes no mesmo projeto Classes da API Java, como por exemplo java.util.List Classes contidas nas bibliotecas utilizada pelo projeto, ou seja, nos arquivos *.jar referenciados no classpath do projeto
  14. Instrutor Daniel Bernardo Import • Classes essencias para o funcionamento de qualquer projeto Java, são implicitamente importadas na Classe. • Por isso que não é necessário fazer o import das classes System e String por exemplo.
  15. Instrutor Daniel Bernardo Modificadores de Acesso • private: A única classe capaz de acessar os atributos, construtores e métodos privados é a própria classe. Classes não podem ser private, mas atributos, construtores e métodos sim. • protected: Aquilo que é protected pode ser acessado por todas as classes do mesmo pacote e por todas as classes que a estendam. Somente atributos, construtores e métodos podem ser protected. • default: (sem nenhum modificador) – Se nenhum modificador for utilizado, todas as classes do mesmo pacote têm acesso ao atributo, construtor, método ou classe. • public: Todas as classes podem acessar aquilo que for definido como public. Classes, atributos, construtores e métodos podem ser public.
  16. Instrutor Daniel Bernardo Herança
  17. Instrutor Daniel Bernardo Herança
  18. Instrutor Daniel Bernardo Herança • Regras para Herança no Java: – Uma classe pode ser Herdada por várias outras classes; – Uma classe só pode Herdar uma única classe; – Membros protected são acessíveis; – Toda classe herda de Object;
  19. Instrutor Daniel Bernardo Herança • Problema 1: – No fim de ano, todos funcionários recebem uma bonificação no valor de 10% do salário; – Exceto os Gerentes, que recebem uma bonificação de 15%;
  20. Instrutor Daniel Bernardo Herança • Problema 2: – A regra para cálculo da bonificação de gerentes mudou, agora ela será no mesmo valor percentual da bonificação dos funcionários mais R$ 1.000,00;
  21. Instrutor Daniel Bernardo Exercícios Faça os exercícios 1, 2 e 3 da página 68.
  22. Instrutor Daniel Bernardo Polimorfismo • Traduzindo, do grego, ao pé da letra, polimorfismo significa "muitas formas". • Essas formas, em nosso contexto de programação, são as subclasses/objetos criados a partir de uma classe maior, mais geral, ou abstrata. • Polimorfismo é a capacidade que o Java nos dá de controlar todas as formas de uma maneira mais simples e geral, sem ter que se preocupar com cada objeto especificamente
  23. Instrutor Daniel Bernardo Polimorfismo • Uma variável do tipo Funcionario, pode armazenar um objeto do tipo Funcionario; • Se gerente é um Funcionario, então uma variável do tipo Funcionário pode armazenar um objeto do tipo Gerente;
  24. Instrutor Daniel Bernardo Polimorfismo • Qual método o Java invocará? – De Funcionário? – De Gerente? A escolha de qual implementação será chamada é feita em Tempo de Execução
  25. Instrutor Daniel Bernardo Polimorfismo • O benefício do Polimorfismo é observado quando utilizamos os tipos como parâmetros dos métodos: • Problema 3: Criar uma funcionalidade que calcule o total gasto em bonificações. Considerando todos funcionarios da empresa. (Funcionario, Gerente e qualquer outro que houver)
  26. Instrutor Daniel Bernardo Polimorfismo • Sistema para faculdade que controle o gasto com funcionários; • Relatório que imprima informações do funcionário e quanto a faculdade gasta com ele; • Funcionario recebe salário; • Professor recebe salário + 10,00 hora / aula;
  27. Instrutor Daniel Bernardo Polimorfismo
  28. Instrutor Daniel Bernardo Exercícios • Exercícios 4 e 5 da página 68
  29. Instrutor Daniel Bernardo Classes Abstratas Faz sentido existir um objeto Funcionario? No mundo real, funcionário idealiza um segmento. Nós temos Secretárias, Diretores, Gerentes… Não designamos niguém como Funcionário.
  30. Instrutor Daniel Bernardo Classes Abstratas • Quando não queremos receber uma instância desta classe, mas queremos obter a vantagem do polimorfismo e da herança, utilizamos classe Abstrata. • Métodos abstratos: • Não faz sentido o método getBonificacao() ter uma implementação na classe Funcionario, já que em nosso sistema, queremos que cada funcionário específico tenha uma regra de bonificação diferente. • Deixamos abstrato para utilizar na classe controladora de bonificação. • Qualquer classe que estender Funcionário, será obrigada a implementar o método abstrato
  31. Instrutor Daniel Bernardo Classes Abstratas • Classe Diretor estende Gerente: não precisa implementar o método, pos gerente já implementa • Classe Secretária e Classe SecretariaAdministrativa que estende Secretária. Classe Secretaria não precisa implementar o método, já que é uma classe abstrata.
  32. Instrutor Daniel Bernardo Exercícios • Página 79.
  33. Instrutor Daniel Bernardo Interfaces • Problema: Em um sistema de banco, podem acessar Gerentes e Diretores; • Nem todo funcionário tem o método autentica e nem deve ter; • Uma classe Abstrata FuncionarioAutenticavel resolveria o problema em partes; • Surge outro problema: Agora os clientes podem acessar o sistema. • Jamais faça Herança sem Sentido.
  34. Instrutor Daniel Bernardo Interfaces • Interfaces fazem com que classes garantam sempre um comportamento; • Cria um contrato que define o que uma classe deve fazer; • A classe que quiser, pode assinar este contrato e fica obrigada a implementar o que a Interface define; • Interfaces expõem o que deve ser feito, e não como deve ser feito; • Interfaces deixam o código mais flexível a mudanças; • Métodos public e abstract;
  35. Instrutor Daniel Bernardo Exercicio página 89
  36. Instrutor Daniel Bernardo Exceptions
Anúncio