Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Aula 09 – Herança
Disciplina: Programação Estruturada e Orientada a Objetos
Prof. Bruno Gomes
http://www.profbrunogomes.com.br/
Revisando - Abstração
Decompor um sistema complicado em suaspartes fundamentais;
Descrevê-las em uma linguagem simples eprecisa:
Atribuir-lhes um nome e descrever suasfuncionalidades:
Abstrair os detalhes desnecessários.
Revisando - Encapsulamento
Diferentes componentes de um sistema nãodevem revelar detalhes internos de suasrespectivas implementações: Visibilidade (public, private...);
Construtor, GETs, SETs, toString...;
Vantagens: Liberdade na implementação dos detalhes do sistema;
Permite a adaptação (modificar partes de umprograma sem afetar outros componentes do mesmo).
Revisando - Modularidade
Divisão dos componentes do software emunidades funcionais separadas;
Essas unidades se interagem entre si, fazendocom que o sistema funcione de forma adequada;
Vantagem:
Reutilização de Software.
Modularidade
A modularidade também pode ser feita de formade forma Hierárquica, por exemplo:
Prédio
Apartamento CasaPrédio
Comercial
Até 2 andares
Mais de 2 andares Térreo Sobrado Arranha-céu
Modelo Hierárquico
No modelo hierárquico, uma classe herdacaracterísticas para as demais;
Estrutura em árvores.
Tipos de modelo Hierárquico:
Herança;
Polimorfismo.
Problema
Situação - 2 Tipos de Funcionários:
Problema:
Repetição de alguns atributos para todos os funcionários!
Desenvolvedor GerenteAtributos:•Nome•CPF•Salário
Atributos:•Nome•CPF•Salário•Senha
Método:•autenticar()
FuncionárioAtributos:•Nome•CPF•Salário
Solução
Herança:
Desenvolvedor e Gerente herdam os atributos e métodosde Funcionário;
Desenvolvedor GerenteAtributos:•Senha
Método:•autenticar()
FuncionárioAtributos:•Nome•CPF•Salário
Herança
Estrutura Hierárquica e modular;
Classes especializadas reutilizam o código dasmais genéricas (elas herdam);
Representação: AB
CA
BA
BC
D
E
Características Herdadas
Classe Genérica
ClasseEspecializada
ClasseEspecializada
Na Herança:
Classe genérica, classe base, superclasse ou pai:
Define variáveis de instância “genéricas” e métodos.
Classe especializada, derivada, subclasse ou filha:
Especializa, estende ou herda os métodos “genéricos” de umasuperclasse;
Define apenas os métodos que são especializados.
Como implementar herançaclass ClasseA {
protected int a;public int getA() {
return a;}public void setA(int a) {
this.a = a;}
}class ClasseB extends ClasseA{
private int b;public int getB() {
return b;}public void setB(int b) {
this.b = b;}
}
extends é usado para indicar
herança em JAVA
Herança - Implementação
public static void main(String args[]) {ClasseB b = new ClasseB(); b.setA(20);b.setB(30);System.out.println(b.getB());System.out.println(b.getA());
}
Todos os membros definidos em ClasseA também existem em ClasseB
Subtipos
Uma classe que herda de outra é um subtipo;
Herança representa relacionamento “é um”:
Carro “é um” veículo;
Livro “é uma” publicação;
Cachorro “é um” mamífero.
Subtipo
Podemos ter uma variável do tipo ClasseA quereferencia um objeto do tipo ClasseB
ClasseA b = new ClasseB();a.setA(10);b.setA(20);//b.setB(30);System.out.println(a.getA()+b.getA());
variável b NÃOexecuta métodosde ClasseB, poisela só conhece ainterface deClasseA