OO com Java
Luiz Carlos d´Oleron
Roteiro de aula
Roteiro
• Pacotes
• Modificadores
• Utilizando
– Encapsulamento
– Herança
– Polimorfismo
Pacotes
• O que se faz quando existem milhares de
classes em um projeto?
• O que se faz quando existem duas
classes com o mesmo nome em um
projeto?
• Usamos pacotes para agrupar classes de
responsabilidades semelhantes
Pacotes
• Definem o nome
completamente
qualificado de uma
classe
• Ex:
umPacote.Exemplo1
Exemplo1
São classes distintas
Definindo e usando pacotes
• Para declarar que uma classe está em um pacote:
package <nomeDoPacote>;
• Para usar numa classe uma outra classe de outro
pacote
import <nomeDoPacote >.<nomeDaClasse>;
Modificadores de visibilidade
• Encapsulamento é o modo como se
esconde os detalhes de implementação
de um componente (um objeto)
• Usamos 3 modificadores: public,
protected e private
• Eles podem ser utilizados com classes,
atributos e métodos
Risco de acessar diretamente
atributo não privado
Usando private: Compilador proíbe acesso ao atributo não público:
The field ControleDoMotor.potencia is not visible
O que ocorre se não colocar nem
public nem private?
• O atributo, classe ou
método só será visível
pelas classes que
estiverem no mesmo
pacote
• Por isso, normalmente
colocamos os atributos
private e os métodos
public
Herança
• Mecanismo pelo qual é possível escrever
uma classe a partir de outra
• Herdando seus atributos
• Favorece sistemas mais robustos e
simples de fazer
Exemplo de Herança
• Vamos extender o controle de avião que fizemos antes com novas
coisas
• Controle de motor de avião
– Potência máxima : 100 (igual)
– Potência mínima : 0 (igual)
– Recebe sinal de 32 bits via USB permitindo controle externo da
potência do motor (igual)
– Possui uma chave liga-desliga (nova coisa)
– Só pode aumentar ou baixar a potência se estiver ligado
Potência
Mais Potência
Menos Potência
0
Ligar
Desligar
USB control
Usando o extends para herança
Polimorfismo
Qual deve ser a saída esperada para a execução do software
a seguir?
Exercício – montar a hierarquia de
classes a seguir
Criar uma classe com um método
main e o seguinte código
Expressao
Expressao
Expressao
Expressao
x = new ExpressaoAtomica(‘x’);
y = new ExpressaoAtomica(‘y’);
negY = new Negacao(y);
ou = new ExpressaoOU(x, negY);
String e = ou.representacao();
System.out.println(“Altura de ” + e + “ : ”
+ ou.altura());
System.out.println (“Número de operadores de
” + e + “ : ” + ou.numeroOperadores());
Download

aulaOOengenharia2