1 of 17

Banco de Dados

Introdução a BD

Prof. Marcelo Iury de Sousa Oliveira

marceloiury@gmail.com

http://sites.google.com/site/marceloiury

LP I (C++)

Aula 4 – Polimorfismo

(Slides Baseados no Material dos professores Tiago Maritan e Derzu Omaia)

2 of 17

O que é Banco de Dados?

  • Com a herança podemos evitar códigos duplicados
    • Ex: Conversivel não replica códigos de Veiculo
  • Inserimos um código comum em uma superclasse e deixamos as subclasses herdarem esse código.

2

Relembrando...

3 of 17

O que é Banco de Dados?

  • Ou seja, estamos definindo um protocolo comum para um grupo de classes...

  • Todos os subtipos de Animais (Cachorro, Gato, Lobo, etc.) poderão fazer as mesmas coisas...
    • comer(), fazerRuido(), dormir(), circular()...

3

Relembrando...

4 of 17

O que é Banco de Dados?

4

Exemplo de Polimorfismo

5 of 17

O que é Banco de Dados?

5

Exemplo de Polimorfismo

6 of 17

O que é Banco de Dados?

6

Exemplo de Polimorfismo

7 of 17

O que é Banco de Dados?

7

Exemplo de Polimorfismo

8 of 17

O que é Banco de Dados?

8

Exemplo de Polimorfismo

9 of 17

O que é Banco de Dados?

9

Exemplo de Polimorfismo

10 of 17

O que é Banco de Dados?

  • Virtual:
    • Um método virtual (na superclasse) define que este será ligado dinamicamente, ou seja, de acordo com sua instanciação.
      • Caso seja usado alocação dinâmica de memória.
    • Um método virtual puro (superclasse) deve obrigatoriamente ser sobrescrito pela classe filha (subclasse);
      • A superclasse que tiver um método virtual puro será uma classe Abstrata e não poderá ser instancializada.

10

Sobreescrita de Métodos

11 of 17

O que é Banco de Dados?

11

Polimorfismo

12 of 17

O que é Banco de Dados?

  • Portanto, se usarmos argumentos polimórficos (parâmetros com o tipo da superclasse)...
  • Podemos passar qualquer objeto subclasse na chamada (em tempo de execução...)
    • Ex: Argumento de vacinar() é do tipo Animal, então podemos passar qualquer subclasse (Cachorro, Gato, etc.) na chamada!.

12

Polimorfismo

13 of 17

O que é Banco de Dados?

  • Além disso, o código de Veterinário não precisa ser alterado se um novo tipo de subclasse for introduzido:

13

Polimorfismo

14 of 17

O que é Banco de Dados?

14

Exemplo 2

15 of 17

O que é Banco de Dados?

15

Exemplo 2

16 of 17

O que é Banco de Dados?

16

Exercício

Implemente classes para representar as figuras geométricas: círculo, retângulo e quadrado. Para todas elas devem ser implementados métodos para retornar a área e o perímetro. O círculo possui um raio e as outras classes os tamanhos dos lados. Além disso as figuras possuem uma cor, definida por um atributo string e um atributo “filled” que diz se a figura é preenchida pela cor ou se é vazia.

17 of 17

Banco de Dados

Introdução a BD

Prof. Marcelo Iury de Sousa Oliveira

marceloiury@gmail.com

http://sites.google.com/site/marceloiury

LP I (C++)

Aula 4 – Polimorfismo

(Slides Baseados no Material dos professores Tiago Maritan e Derzu Omaia)