aula 3.ppt
TRANSCRIPT
![Page 1: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/1.jpg)
Instrutor Daniel Bernardo
Programação Orientada a Objetos com Java
![Page 2: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/2.jpg)
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
![Page 3: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/3.jpg)
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.
![Page 4: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/4.jpg)
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;
![Page 5: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/5.jpg)
Instrutor Daniel Bernardo
Princípios de Orientação a Objetos
• Sistema para banco
– A classe Conta
![Page 6: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/6.jpg)
Instrutor Daniel Bernardo
Princípios de Orientação a Objetos
• Sistema para banco
– A classe Cliente
![Page 7: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/7.jpg)
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;
![Page 8: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/8.jpg)
Instrutor Daniel Bernardo
Princípios de Orientação a Objetos
• Métodos:
![Page 9: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/9.jpg)
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
![Page 10: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/10.jpg)
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;
![Page 11: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/11.jpg)
Instrutor Daniel Bernardo
API Java
![Page 12: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/12.jpg)
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.
![Page 13: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/13.jpg)
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
![Page 14: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/14.jpg)
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.
![Page 15: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/15.jpg)
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.
![Page 16: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/16.jpg)
Instrutor Daniel Bernardo
Herança
![Page 17: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/17.jpg)
Instrutor Daniel Bernardo
Herança
![Page 18: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/18.jpg)
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;
![Page 19: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/19.jpg)
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%;
![Page 20: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/20.jpg)
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;
![Page 21: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/21.jpg)
Instrutor Daniel Bernardo
Exercícios
Faça os exercícios 1, 2 e 3 da página 68.
![Page 22: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/22.jpg)
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
![Page 23: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/23.jpg)
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;
![Page 24: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/24.jpg)
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
![Page 25: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/25.jpg)
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)
![Page 26: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/26.jpg)
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;
![Page 27: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/27.jpg)
Instrutor Daniel Bernardo
Polimorfismo
![Page 28: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/28.jpg)
Instrutor Daniel Bernardo
Exercícios
• Exercícios 4 e 5 da página 68
![Page 29: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/29.jpg)
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.
![Page 30: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/30.jpg)
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
![Page 31: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/31.jpg)
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.
![Page 32: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/32.jpg)
Instrutor Daniel Bernardo
Exercícios
• Página 79.
![Page 33: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/33.jpg)
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.
![Page 34: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/34.jpg)
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;
• Uma classe pode implementar mais que uma Interface;
![Page 35: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/35.jpg)
Instrutor Daniel Bernardo
Exercicio página 89
![Page 36: Aula 3.ppt](https://reader035.vdocuments.pub/reader035/viewer/2022062221/55d274f0bb61eba4208b45ad/html5/thumbnails/36.jpg)
Instrutor Daniel Bernardo
Exceptions