Aula 09 Herança - ifrn.edu.br

19
Aula 09 Herança Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes http://www.profbrunogomes.com.br/

Transcript of Aula 09 Herança - ifrn.edu.br

Aula 09 – Herança

Disciplina: Programação Estruturada e Orientada a Objetos

Prof. Bruno Gomes

http://www.profbrunogomes.com.br/

Agenda da Aula

Herança;

Revisando

Princípios da Programação Orientada à Objetos:

Abstração;

Encapsulamento;

Modularidade.

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.

Herança - Representação

Seta vazadaIndica herança

Herança - Representação

Carro possui todas as características de Terreste e também de Veiculo

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

Dúvidas?