32
Programação Orientada a Objetos Herança

Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Programação Orientada a ObjetosHerança

Page 2: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Relacionamento entre Classes

▪ Diferentes classes podem se relacionar entre si, criando/compondo novos tipos de objetos

▪ Um determinado objeto pode ser basear em um outro e adicionar informações, estendendo a classe

▪ Pode também se basear em dois ou mais tipos diferentes de objetos.

▪ É possível também que um objeto “utilize” outro tipo de objeto

▪ Um projetor não utiliza uma lâmpada?

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 3: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Relacionamento entre Classes

▪ Os relacionamentos entre classes são:

▪ Herança;

▪ Associação;

▪ Composição;

▪ Agregação;

▪ Dependência

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 4: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Quando falamos de herança estamos falando de reutilização de código

▪ uma nova classe é criada absorvendo atributos de uma classe já existente

▪ Esta nova classe pode ter as mesmas características da classe pai, pode ser mais específica ou com modificações em comparação com a classe pai

▪ Com a herança o tempo de desenvolvimento é reduzido devido a reutilização de código

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 5: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Os relacionamentos entre classes são:

▪ Herança;

▪ Associação;

▪ Composição;

▪ Agregação;

▪ Dependência

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 6: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Os relacionamentos entre classes são:

▪ Herança;

▪ Associação;

▪ Composição;

▪ Agregação;

▪ Dependência

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 7: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Os relacionamentos entre classes são:

▪ Herança;

▪ Associação;

▪ Composição;

▪ Agregação;

▪ Dependência

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 8: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Os relacionamentos entre classes são:

▪ Herança;

▪ Associação;

▪ Composição;

▪ Agregação;

▪ Dependência

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 9: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Os relacionamentos entre classes são:

▪ Herança;

▪ Associação;

▪ Composição;

▪ Agregação;

▪ Dependência

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 10: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 11: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Chamaremos de SUBCLASSE a clases que herda da classe pai, e chamaremos de SUPERCLASSE a classe que vai gerar uma classe filha

▪ A classe imediatamente acima da classe filha é uma SUEPRCLASSE direta

▪ A classe que não está imediatamente acima da filha chamamos de SUPERCLASSE indireta

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 12: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Dizemos então que o relacionamento de Herança define um relacionamento do tipo “é um”

▪ “Mountain Bike é uma bicicleta”

▪ Indica que uma de duas classes relacionadas (a subclasse) é uma forma especializada da outra (a superclasse)

▪ A superclasse é considerada uma generalização da subclasse

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 13: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Diferentes tipos de objetos frequentemente possuem semelhanças com outros

▪ Bicicletas Tandem

▪ Mountain Bikes

▪ Bicicletas de corrida

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 14: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Todas estas bicicletas possuem características de bicicletas

▪ Velocidade atual

▪ Rotação atual

▪ Marcha atual

▪ No entanto, também possuem características diferentes

▪ As Tandem possuem dois bancos e guidões

▪ Mountain Bikes possuem correntes maiores

▪ As de corrida possuem guidão angulado

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 15: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ A orientação a objetos permite que as classes herdem o estado e comportamento comuns a outras classes

▪ Neste exemplo, a classe Bicicleta se torna a superclasse de Mountain Bike, Tandem Bike e Road Bike

▪ Estas agora são consideradas subclasses

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 16: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 17: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Neste exemplo, o mecanismo de herança permite que MountainBike, TnademBike e RoadBike possuam automaticamente os mesmos atributos e métodos da superclasse Bicicleta

▪ E ainda permite que cada uma das subclasses definam seus atributos e métodos adicionais

▪ Ou seja, nas subclasses nos preocuparemos em definir aquilo que se tornam diferentes

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 18: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ O código da superclasse não estará disponível no código da subclasse

▪ Então é necessário que ele esteja bem documentado

▪ Quando uma subclasse possui mais que uma superclasse, usamos o termo herança múltipla

▪ Também, uma subclasse pode se tornar superclasse de outras

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 19: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Podemos pensar sobre herança como algo semelhante a funções

▪ Quando identificamos um trecho de código que se repete várias vezes, criamos uma função com aquele conteúdo

▪ Quando identificamos várias características em comum em um grupo de classes, podemos criar uma superclasse

▪ Evitamos a redundância de código

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 20: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 21: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Resumindo

▪ Uma subclasse herda os métodos e atributos da sua superclasse (de acordo com os modificadores de acesso)

▪ Considere uma classe Pessoa, dela podemos gerar uma classe chamada Funcionário, e desta podemos gerar uma classe chamada Gerente

▪ A classe gerente terá todos os atributos e métodos das classes superiores (superclasses) Funcionário e Pessoa, veja o diagrama no próximo slide

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 22: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

Pessoa

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Funcionário

Vendedor Gerente

Page 23: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança Múltipla

▪ Herança múltipla ocorre quando uma classe herda atributos e métodos de outras duas ou mais classes

▪ A linguagem C++ permite herança múltipla

▪ Linguagens como C# e Java não permitem

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Pessoa Funcionário

Gerente

Page 24: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Vamos agora codificar a relação de herança com 3 níveisdo exemplo ao lado

▪ Nome e RG são atributos da classe Pessoa e,consequentemente, comum para todas as demaisclasses

▪ A classe funcionário herda estes atributos e ainda possuiCódigo Funcional (codFuncional) e salario

▪ O vendedor, além do salário, ainda possui a comissão

▪ O gerente possui e-mail, algo que o vendedor

não possui

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Pessoa

- nome- rg

Funcionario

- codFuncional- salario

Vendedor

- comissao

Gerente

- email

Page 25: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Pessoa

- nome- rg

Funcionario

- codFuncional- salario

Vendedor

- comissao

Gerente

- email

Page 26: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Crie os métodos gets e setspara os atributos de todas asclasses

▪ Agora, na classe principal,vamos criar um objeto do tipoVendedor e vamos invocaralguns métodos gets e sets

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 27: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Herança

▪ Linha 4: Criado o objeto v do tipovendedor

▪ Linha 7: Objeto v invocou ométodo setComissao() quepertence a classe Vendedor

▪ Linha 9 e 10: Objeto v invocou osmétodos setCodFuncional() esetSalario() da classe Funcionario

▪ Linha 12 e 13: Objeto v invocouos métodos setNome() e setRG()da classe Pessoa

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 28: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Especificadores de Acesso

▪ public:

▪ Os membros public de uma classe são acessíveis em qualquer parte de um programa em que haja uma referência a um objeto da classe ou das subclasses.

▪ private:

▪ Membros private são acessíveis apenas dentro da própria classe.

▪ protected:

▪ Membros protected podem ser acessados por por membros da própria classe, de subclasses e de classes do mesmo pacote

▪ protected também tem acesso de pacote.

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 29: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Especificadores de Acesso

▪ Todos os membros public e protected de uma superclasse mantêm seusespecificadores de acesso quando se tornam membros de uma subclasse

▪ Subclasses se referem a estes membros simplesmente pelo nome;

▪ Quando uma subclasse sobrescreve um método da superclasse, o métodooriginal da superclasse ainda pode ser acessado quando antecedido pela palavrasuper seguida de .

super.metodo();

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 30: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Class Object

▪ A hierarquia das classes em é iniciada pela classe Object

▪ Todas as outras classes herdam (ou estendem) direta ou indiretamente a partir dela

▪ Mesmo que não seja definido explicitamente.

▪ Define um construtor e 11 métodos

▪ Alguns devem ser sobrescritos pelas subclasses para melhor funcionamento.

▪ Não possui atributos.

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 31: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Por hoje é só!

▪ Qualquer dúvida:

▪ www.arieldias.com

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 32: Programação Orientada a Objetoarieldias.com/novo/material/2019-2/PG2/Aula4.pdfPodemos pensar sobre herança como algo semelhante a funções Quando identificamos um trecho de código

Referência

▪ Notas de aula Professor José Romildo Malaquias - UFOP

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda