Sintaxe Java sobre os Pilares da OO

Propaganda
Os Pilares da OO em Java
Alexandre Parra
E-mail: [email protected]
Site:
www.udesc.br
Roteiro

Como expressar o Encapsulamento em Java

Sintaxe para expressar herança em Java

Sintaxe para expressar Polimorfismo em Java
Encapsulamento (ocultação)



Implementação não interessa a quem usa os
objetos.
Papel dos usuários de classes
 Não
precisa saber como a classe foi
implementada.
 Usa apenas a interface da classe.
Papel do desenvolvedor de classes
 Definir novos tipos de dados.
 Expor a interface (métodos) da classe e ocultar
suas implementações.
Sintaxe de Herança Simples e Múltipla



A herança possibilita o compartilhamento de
atributos e métodos de uma ou mais classes em
uma subclasse.
A classe X que herda as variáveis e métodos de
instância da classe Y é denominada subclasse.
A sintaxe de definição de Herança Simples em Java:
class NomeDaSubClasse extends NomeDaSuperClasse { ... }
Modelagem de Herança Simples em Java
Pessoa
- nome
- idade
- endereco
- setNome(nome)
- getNome()
- setEndereco(end)
- getEndereco()
- setIdade(idade)
- getIdade()
Professor
Aluno
- salario
- curriculo
- matricula
- curso
- setSalario(valor)
- getSalario()
- setCurriculo(curriculo)
- getCurriculo()
- printCurriculo()
- setMatricula(mat)
- getMatricula()
- setCurso(curso)
- getCurso()
- addDisciplina(disc)
- removeDisciplina(disc)
- printDisciplinas()
Exemplo de Herança Simples em Java
declara herança da superclasse “Pessoa”
// Classe Pessoa derivada da classe Pessoa
public class Aluno extends Pessoa {
// Definição dos atributos da classe Pessoa
private String matricula;
private Vector<String> disciplinasCurscadas;
// construtor para a classe Pessoa
public Aluno(String nome, String end, int idade, String mat, Vector<String> disciplinas) {
super(nome,end,idade);
// chama o construtor da superclasse
setMatricula(mat);
setDisciplinas(disciplinas);
}
// configura a matrícula do Aluno
public void setMatricula(String mat) {
matricula = mat;
}
...
Modelagem “Herança Múltipla” em Java
<<interface>>
Relogio
<<interface>>
Radio
- setEmissora(emissora,tipoEmi)
- getEmissora()
- getTipoEmissora()
- setVolumeRadio(vol)
- getVolumeRadio()
- setHorario(horario)
- getHorario()
- setHorarioAlarme(horario)
- getHorarioAlarme(horario)
- ligarAlarme()
- desligarAlarme()
- setVolumeRelogio(vol)
- getVolumeRelogio()
RadioRelogio
- horario
- despertar
- horarioAlarme
- emissora
- tipoEmissora
- volumeRadio
- volumeRelogio
Exemplo de Herança Múltipla em Java
public interface Relogio {
public void setHorario(Date horario);
public Date getHorario();
public void setHorarioAlarme(Date horario);
public Date getHorarioAlarme();
public void ligarAlarme();
public void desligarAlarme();
public void setVolumeRelogio(int volume);
public int getVolumeReologio();
}
public interface Radio {
public void setEmissora(float emissora, String tipo);
public float getEmissora();
public String getTipoEmissora();
public void setVolumeRadio(int volume);
public int getVolumeRadio();
}
public class RadioRelogio implements Radio, Relogio {
private Date horario;
private Date horarioAlarme;
private boolean despertar;
private float emissora;
private String tipoEmissora;
private int volume;
public RadioRelogio(Date horario) {
this.horario = horario;
}
public void setHorario(Date horario) {
this.horario = horario;
}
public void setHorarioAlarme(Date horario) {
horarioAlarme = horario;
}
...
Modelagem de Polimorfismo em Java
FigurasGeometricas
- base
- altura
- coordX
- coordY
- setBase(base)
- getBase()
- setAltura(altura)
- getAltura()
- setCoordenadaX(x)
- getICoordenadaX()
- setCoordenadaY(y)
- getICoordenadaY()
- calculaArea()
Triangulo
- calculaArea()
Quadrado
- calculaArea()
Retangulo
- calculaArea()
Exemplo de Polimorfismo em Java
Classe abstrata
public abstract class FigurasGeometricas {
private float base;
private float altura;
private float coordX;
private float coordY;
public class Triangulo extends FigurasGeometricas {
public Triangulo(float base, float altura, float coordX, float coordY) {
super(); // chamada do construtor padrão da superclasse
setBase(base);
setAltura(altura);
setCoordenadaX(coordX);
setCoordenadaY(coordY);
}
public abstract float calculaPerimetro();
public abstract float calculaArea();
public void setBase(float base) {
this.base = base;
}
public float getBase() {
return base;
}
public void setAltura(float altura) {
this.altura = altura;
}
...
}
public float calculaArea() {
return (getBase() * getAltura()) / 2;
}
}
Métodos abstratos
Trabalho e Exercícios


Elaborar um resumo em dupla de no mínimo 4 páginas e
máximo de 5, destacando entre outros assuntos como
representar Classes, Objetos, Encapsulamento, Herança
(Simples e Múltipla), Polimorfismo e os principais
relacionamentos entre classes em UML.
Fazer
os
exercícios
propostos
no
arquivo
“exercicios_sintaxe_ling_java.doc” que se encontra em
http://www.joinville.udesc.br/portal/professores/parra/ no link
“Materiais” da disciplina LPG-II.
Download