Professional Documents
Culture Documents
Encapsulamento
Os três pilares da POO Herança
Polimorfismo
y double x;
double y;
SuperClasse
o Ponto ( )
rai Ponto (double x, double y)
y
void setPonto (double x, double y)
String emPalavras ( )
Classe Circulo
x x
double r;
Circulo ( )
Circulo (int double, double y,double r) SubClasse
void setRaio(double r)
String emPalavras ( )
POOemJava-Herança[anibal@directnet.com.br] 1
public class Ponto{
protected double x, y;
public Ponto(){
setPonto( 0, 0 );
}
public Ponto( double a, double b ){
setPonto( a, b );
}
public void setPonto( double a, double b ){
x = a;
y = b;
}
public String emPalavras( ){
return "[" + x + ", " + y + "]";
}
}
public class Circulo extends Ponto{
protected double r;
public Circulo(){
setRaio( 0 );
}
public Circulo( double a, double b, double r ){
super( a, b );
setRaio( r );
}
public void setRaio( double r ){
this.r = r;
}
public String emPalavras( ){
return super.emPalavras( ) + "[" + r + "]";
}
} POOemJava-Herança[anibal@directnet.com.br] 2
Herança: é o meio pelo qual um objeto herda comportamento e
atributos de outros objetos similares
subclasse superclasse
superclasse subclasse
public class Mamifero { public class Dog extends Mamifero {
String name;
public void speak ( ) {
public void sleep ( ) { System.out.println(“Arf! Arf!”);
System.out.println(“ZZ ZZZ ZZ”);
} }
} }
POOemJava-Herança[anibal@directnet.com.br] 3
Testando a Hierarquia
Speak.java
class Speak {
public static void main( String arguments[ ] ) {
Dog lessie = new Dog( ); // objeto lessie da classe Dog
Pluto mutly = new Pluto(); // objeto mutly da classe Pluto
lessie.name = “Boby”;
mutly.name = “Baco”;
Saída:
Primeiro vamos ouvir a Lessie:
Arf! Arf!
Agora é a vez do Mutly
Cadê a minha Medalha?
Já é hora de ambos dormirem:
ZZ ZZZ ZZ
ZZ ZZZ ZZ
POOemJava-Herança[anibal@directnet.com.br] 5
public class CommissionedEmployee extends Employee {
private double commission; // custo por unidade
private int units; // controle do # de unidades vendidas
POOemJava-Herança[anibal@directnet.com.br] 6
Como a interface pública de Employee se torna parte da interface
de CommissionedEmployee, você pode enviar para
CommissionedEmployee qualquer mensagem que poderia
enviar para Employee.
c.addSales(5);
System.out.println(“First Name: ” + c.getFirstName( ) );
System.out.println(“Last Name: ” + c.getLastName( ) );
System.out.println(“Base pay: $ ” + c.getWage( ) );
System.out.println(“Total Pay: ” + c.calculatePay( ) );
}
}
POOemJava-Herança[anibal@directnet.com.br] 7
Classes Abstratas
public Animal(String n) {
nome = n;
}
POOemJava-Herança[anibal@directnet.com.br] 9
public abstract class Passaro extends Animal
{
public Passaro(String n) {
super(n);
}
public void talk( ) {
System.out.println("Piu piu");
}
}
Repare que o método talk( ) em Mamifero é abstract, pois
não possui implementação. Já em Passaro, há implementação.
Finalize os exercícios:
1- Super classe Ponto e Subclasse Círculo.
2- Criar a classe Retangulo utilizando a Ponto como base.
3- Classe de animais => utilizando classes abstratas.
POOemJava-Herança[anibal@directnet.com.br] 10
Orientação a Objetos (OO)
O termo Orientação a Objetos (OO) significa organizar o
mundo real como uma coleção de objetos que incorporam
Estrutura de Dados e Comportamento.
Um Objeto Comportamento/Métodos/Procedimentos
Propriedades/Dados/ Variáveis
andar tamanho
ar
O Objeto Carro in
pa
z
bu
ra
capacidade
r
girar
velocidade
Quilometragem
z
bu
ra
r
girar
POOemJava-Herança[anibal@directnet.com.br] 11
Encapsulamento
O Encapsulamento é definido como uma técnica para minimizar
interdependências entre módulos através da definição de interfaces
externas.
Interface
andar
in
ar Mudanças na implementação de uma classe
pa
z
bu
ra
Mensagens
Objetos interagem e se comunicam através de Mensagens
Emissor Andar(...)
Receptor
POOemJava-Herança[anibal@directnet.com.br] 12
Métodos
O que um determinado Método pode fazer com os Dados do Objeto?
Construtor
Destrutor
Tipos de Métodos
Transformador
Acesso
Exercícios:
1- Dê três exemplos de Objetos
2- Para cada um deles, sugira alguns Métodos pertinentes
3- Vamos implementar esses exemplos em Java
class bibliX { metodoB
int m, o A m
bi
od
bl
et
iX
int z; m
z
bibliX
float n; n
float s;
s
bibliX( ) { m=0; z=0; n=0.0; s=0.0; }
bibliX(int a; int b; float c; float d) {
m=a; z = b; n = c; s = d;
}
int metodoA ( ){
return (m + n);
}
void metodoB ( ) {
System.out.println(“Valor de m: ” + m + “valor de s: ”+ s);
}
}
class usaX ( ) {
public static void main (String arg []) {
bibliX aux = new bibliX(10,20, 12.5, 22.8 ) // método Construtor
aux.metodoA( ); javac bibliX.java
aux.metodoB( ); javac usaX.java
} java usaX
} POOemJava-Herança[anibal@directnet.com.br] 13
Projeto: Implementar uma classe CDPlayer cuja interface é apresentada
na Figura abaixo.
Lembre-se: a cada interface, disponível ao usuário,
haverá um método correspondente.
Stop ( )
)
Pa
y(
us
a
Pl
e(
)
Eject ( )
Pense nos Atributos e Métodos necessários para implementar o projeto
class CDPlayer {
// atributos
// métodos
CDPlayer( ){ } // construtor
Play ( ) {
}
Eject ( ) {
}
Pause ( ) {
}
MetodoX ( ) { }
}
POOemJava-Herança[anibal@directnet.com.br] 14
POOemJava-Herança[anibal@directnet.com.br] 15