Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... ·...
Transcript of Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... ·...
![Page 1: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/1.jpg)
Programação Orientada a Objetos
Herança e Polimorfismo
André Santanchè e Oscar RojasInstitute of Computing – UNICAMP
Março 2015
Pic
ture
by
htt
p:/
/ww
w.f
lickr
.co
m/p
ho
tos/
cro
uch
y69,
201
0
![Page 2: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/2.jpg)
Herança
▪ Capacidade das classes expandirem-se a partir das classes existentes.
▪ Classe herdeira (subclasse)
▫ possui os mesmos atributos da superclasse
▫ herda acesso aos métodos desta superclasse
▫ pode acrescentar novos atributos e métodos (extensão)
![Page 3: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/3.jpg)
Herança em Java
▪ Para se estabelecer que uma classe é herdeira de outra, após o nome da classe coloca-se a cláusula extends e o nome da superclasse.
▪ No exemplo abaixo, Perfeito é herdeira de Bastiao:
class Perfeito extends Bastiao
![Page 4: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/4.jpg)
Herança em Java
▪ No exemplo iremos criar as classes Perfeito e Monstro que são herdeiras de Bastiao.
▪ Elas possuem todos os recursos de Bastiao mais as capacidades específicas.
Bastiao
Perfeito Monstro
![Page 5: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/5.jpg)
Herança – Alguem
Alguem
+getNome()
Melissa
+getNome()
Alcebiades
+getNome()
![Page 6: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/6.jpg)
HerançaExemplo do Tempo
Tempo
+quantidade(): long+toString(): String
Data
-dia: int-mes: int-ano: int
<<create>>+Data()<<create>>+Data(dia: int, mes: int, ano: int)+quantidade(): long+toString(): String
Horario
-hora: int-minuto: int-segundo: int
<<create>>+Horario()<<create>>+Horario(hora: int, minuto: int, segundo: int)+quantidade(): long+toString(): String
![Page 7: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/7.jpg)
Herança em JavaScript
▪ Simulação de Herança com Protótipos
▪ Cópia de atributos e métodos a partir do prototype
![Page 8: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/8.jpg)
Polimorfismo
![Page 9: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/9.jpg)
Princípios do ParadigmaPolimorfismo
▪ "Que se apresenta sob numerosas formas"
▪ "Capacidade de uma referência de classe se associar a instâncias de diferentes classes em tempo de execução”.
▪ "Habilidade das mais importantes dos sistemas orientados a objetos, e que consiste em as operações automaticamente se adequarem aos objetos aos quais estão sendo aplicadas." [Meyer]
![Page 10: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/10.jpg)
Sobrecarga de Métodos
▪ Sobrecarga de método: técnica que envolve criar vários métodos com o mesmo nome e implementações diferentes.
▪ Tipos:
▫ sobrecarga na mesma classe
◦ assinaturas têm que ser diferentes
◦ identificados pela assinatura
▫ sobrecarga em classes herdeiras
◦ assinaturas podem ser iguais ou diferentes
◦ tratado na aula de herança
![Page 11: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/11.jpg)
Sobrecarga em Classes Herdeiras
▪ Métodos podem ter mesma assinatura
▪ Neste caso, a decisão de qual método chamar (superclasse ou subclasse) depende:
▫ do tipo do ponteiro
▫ do tipo de amarração
![Page 12: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/12.jpg)
Princípios do Polimorfismo com Herança
▪ Uma variável declarada em uma classe pode ser instanciada em qualquer subclasse
Alguem umaPessoa = new Melissa();
Alguem
+getNome()
Melissa Alcebiades
![Page 13: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/13.jpg)
Princípios do Polimorfismo com Herança
▪ A decisão de quem chamar depende do tipo de amarração:
▫ Estática
▫ Dinâmica
![Page 14: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/14.jpg)
PolimorfismoAmarração Estática x Dinâmica
▪ Amarração: ligação da chamada de um método ao método.
▪ Amarração estática (static bindind): define permanentemente o endereço do método acionado durante a compilação.
▪ Amarração dinâmica ou tardia (dynamic or late binding): determina o endereço do método acionado no momento da execução.
![Page 15: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/15.jpg)
Princípios do Polimorfismo com Herança
▪ A decisão de quem chamar depende do tipo de amarração:
▫ Estática – retorna nome de Alguem
▫ Dinâmica – retorna nome de Melissa
Alguem umaPessoa = new Melissa();
String x = umaPessoa.getNome();
Alguem
+getNome()
Melissa Alcebiades
![Page 16: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/16.jpg)
HerançaExemplo do Tempo
Tempo
+quantidade(): long+toString(): String
Data
-dia: int-mes: int-ano: int
<<create>>+Data()<<create>>+Data(dia: int, mes: int, ano: int)+quantidade(): long+toString(): String
Horario
-hora: int-minuto: int-segundo: int
<<create>>+Horario()<<create>>+Horario(hora: int, minuto: int, segundo: int)+quantidade(): long+toString(): String
![Page 17: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/17.jpg)
André Santanchèhttp://www.ic.unicamp.br/~santanche
![Page 18: Herança e Polimorfismo - Instituto de Computaçãosantanch/teaching/oop/2015-1/... · 2015-05-08 · Polimorfismo "Que se apresenta sob numerosas formas" "Capacidade de uma referência](https://reader034.fdocuments.co/reader034/viewer/2022042119/5e983dad3bdd7a04fb4e76af/html5/thumbnails/18.jpg)
License▪ These slides are shared under a Creative Commons License.
Under the following conditions: Attribution, Noncommercial and Share Alike.
▪ See further details about this Creative Commons license at:http://creativecommons.org/licenses/by-nc-sa/3.0/