1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa...

60
1 Aula 8 Aula 8 Orientação à Orientação à Objetos Objetos Universidade do Vale do Rio dos S < Página da Disciplina > www.inf.unisinos.br/~barbosa www.inf.unisinos.br/~barbosa <Endereço do Professor > [email protected] [email protected]

Transcript of 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa...

Page 1: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

1

Aula 8Aula 8Orientação àOrientação à

ObjetosObjetos

Universidade do Vale do Rio dos Sinos

< Página da Disciplina >

www.inf.unisinos.br/~barbosawww.inf.unisinos.br/~barbosa

<Endereço do Professor >

[email protected]@exatas.unisinos.br

Page 2: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

2

1 – Introdução

SumárioSumário

Page 3: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

3

1 – Introdução2 – Programação Orientada a Objeto

SumárioSumário

Page 4: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

4

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto

SumárioSumário

Page 5: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

5

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto4 – Smalltalk

SumárioSumário

Page 6: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

6

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto4 – Smalltalk5 – C++

SumárioSumário

Page 7: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

7

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto4 – Smalltalk5 – C++6 – Java

SumárioSumário

Page 8: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

8

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto4 – Smalltalk5 – C++6 – Java7 – Ada 95

SumárioSumário

Page 9: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

9

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto4 – Smalltalk5 – C++6 – Java7 – Ada 958 – Eiffel

SumárioSumário

Page 10: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

10

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto4 – Smalltalk5 – C++6 – Java7 – Ada 958 – Eiffel9 – Implementação de Construções O. O.

SumárioSumário

Page 11: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

11

1 – Introdução - O que é uma plataforma O. O.? - Pura x Híbrida - O. O. imperativa - O. O. lógica - O. O. funcional - O. O. multiparadigma - Oz / Mozart

SumárioSumário

Page 12: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

12

1 – Introdução2 – Programação Orientada a Objeto - Tipos Abstratos de Dados - Herança - Vinculação Dinâmica (polimorfismo)

SumárioSumário

Page 13: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

13

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto

SumárioSumário

Page 14: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

14

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto

SumárioSumário

Page 15: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

15

- Exclusividade de objetos Tudo são objetos ou não?

Questões de ProjetoQuestões de Projeto

Page 16: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

16

- Exclusividade de objetos Tudo são objetos ou não?- Subclasse como subtipos Qual a compatibilidade entre classe-pai e subclase?

Questões de ProjetoQuestões de Projeto

Page 17: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

17

- Exclusividade de objetos Tudo são objetos ou não?- Subclasse como subtipos Qual a compatibilidade entre classe-pai e subclase?- Herança de interface x de Implementação Uma subclasse acessa interface ou implementação?

Questões de ProjetoQuestões de Projeto

Page 18: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

18

- Exclusividade de objetos Tudo são objetos ou não?- Subclasse como subtipos Qual a compatibilidade entre classe-pai e subclase?- Herança de interface x de Implementação Uma subclasse acessa interface ou implementação?- Polimorfismo x Verificação de tipos Quando verificar tipos de variáveis polimórficas?

Questões de ProjetoQuestões de Projeto

Page 19: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

19

- Exclusividade de objetos Tudo são objetos ou não?- Subclasse como subtipos Qual a compatibilidade entre classe-pai e subclase?- Herança de interface x de Implementação Uma subclasse acessa interface ou implementação?- Polimorfismo x Verificação de tipos Quando verificar tipos de variáveis polimórficas?- Herança simples x Herança múltipla Vale a pena suportar herança múltipla?

Questões de ProjetoQuestões de Projeto

Page 20: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

20

- Exclusividade de objetos Tudo são objetos ou não?- Subclasse como subtipos Qual a compatibilidade entre classe-pai e subclase?- Herança de interface x de Implementação Uma subclasse acessa interface ou implementação?- Polimorfismo x Verificação de tipos Quando verificar tipos de variáveis polimórficas?- Herança simples x Herança múltipla Vale a pena suportar herança múltipla?- Alocação e desalocação de objetos Onde alocar os objetos?

Questões de ProjetoQuestões de Projeto

Page 21: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

21

Código

DadosEstáticos

Heap

Pilha

Page 22: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

22

Código

DadosEstáticos

Heap

Pilha

Objetos Estáticos

Page 23: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

23

Código

DadosEstáticos

Heap

Pilha

Objetos Estáticos

Objetos Heap Dinâmicos

Page 24: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

24

Código

DadosEstáticos

Heap

Pilha

Objetos Estáticos

Objetos Stack Dinâmicos

Objetos Heap Dinâmicos

Page 25: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

25

- Exclusividade de objetos Tudo são objetos ou não?- Subclasse como subtipos Qual a compatibilidade entre classe-pai e subclase?- Herança de interface x de Implementação Uma subclasse acessa interface ou implementação?- Polimorfismo x Verificação de tipos Quando verificar tipos de variáveis polimórficas?- Herança simples x Herança múltipla Vale a pena suportar herança múltipla?- Alocação e desalocação de objetos Onde alocar os objetos?- Vinculação estática x Vinculação dinâmica Todas as vinculações são dinâmicas?

Questões de ProjetoQuestões de Projeto

Page 26: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

26

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto4 – Smalltalk - Todos os objetos alocados no Heap - Objetos acessados por variáveis de referência - Desalocação implícita (garbage collection) - Somente herança simples - Todas subclasses são subtipos - Toda herança é de implementação - Erros de tipos detectados durante execução - Busca da pureza total

SumárioSumário

Page 27: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

27

SumárioSumário1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto4 – Smalltalk - Todos os objetos alocados no Heap - Objetos acessados por variáveis de referência - Desalocação implícita (garbage collection) - Somente herança simples - Todas subclasses são subtipos - Toda herança é de implementação - Erros de tipos detectados durante execução - Busca da pureza total

Page 28: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

28

Exemplos - ExpressõesExemplos - Expressões

21 + 2

soma / cont

(total – 3) * divisor

Page 29: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

29

cont <- 1.soma <- 0.[cont <= 20] whileTrue: [soma <- soma + cont. cont <- cont + 1]

Exemplo – IteraçãoExemplo – Iteração

Page 30: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

30

Exemplo – SeleçãoExemplo – Seleção

total = 0 ifTrue: [media <- 0] ifFalse: [media <- soma // total]

Page 31: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

31

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto4 – Smalltalk5 – C++ - Busca da compatibilidade retrógrada com C - Objetos estáticos, stack-dinâmicos e heap-dinâmicos - Desalocação explícita: Operador delete - Classe pode ser independente (sem superclasse) - Operador de resolução de escopo (operador ::) - Herança múltipla (operador de escopo) - Compatibilidade de variável polimórfica (pai – filhos) - Polimorfismo explícito (palavra VIRTUAL) - Comparação de desempenho (C++ dez vezes mais rápido do que Smalltalk)

SumárioSumário

Page 32: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

32

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto4 – Smalltalk5 – C++6 – Java - Todas as classes devem ter pai (classe raiz OBJECT) - Todos os objetos são heap dinâmicos explícitos - Desalocação implícita - Suporta somente herança simples - Método FINAL - Todas as chamadas são vinculadas dinamicamente

SumárioSumário

Page 33: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

33

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto4 – Smalltalk5 – C++6 – Java7 – Ada 95 - Não existe chamada de construtores e destrutores - Vinculação dinâmica forçada através tipo especial de classe (classe ampla) - Suporta herança múltipla

SumárioSumário

Page 34: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

34

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto4 – Smalltalk5 – C++6 – Java7 – Ada 958 – Eiffel - Linguagem O. O. pura (segundo Sebesta) - Todos os objetos alocados no heap - Operador CLONE (Java/ Eiffel / Holo, etc) - Desalocação implícita - Herança múltipla - Todas as vinculações são dinâmicas

SumárioSumário

Page 35: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

35

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto4 – Smalltalk5 – C++6 – Java7 – Ada 958 – Eiffel9 – Implementação de Construções O. O.

SumárioSumário

Page 36: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

36

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto4 – Smalltalk5 – C++6 – Java7 – Ada 958 – Eiffel9 – Implementação de Construções O. O. 1) Estruturas para Armazenamento de Variáveis de Instância 2) Vinculações dinâmicas de mensagens e métodos (polimorfismo)

SumárioSumário

Page 37: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

37

1 – Introdução2 – Programação Orientada a Objeto3 – Questões de Projeto4 – Smalltalk5 – C++6 – Java7 – Ada 958 – Eiffel9 – Implementação de Construções O. O. 1) Estruturas para Armazenamento de Variáveis de Instância 2) Vinculações dinâmicas de mensagens e métodos (polimorfismo)

SumárioSumário

Page 38: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

38

REGISTRO DE INSTÂNCIA DE CLASSE (RIC)REGISTRO DE INSTÂNCIA DE CLASSE (RIC)

• C++: Classe definidas como extensões de STRUCTs

Page 39: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

39

REGISTRO DE INSTÂNCIA DE CLASSE (RIC)REGISTRO DE INSTÂNCIA DE CLASSE (RIC)

• C++: Classe definidas como extensões de STRUCTs• Estrutura da RIC é estática

Page 40: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

40

REGISTRO DE INSTÂNCIA DE CLASSE (RIC)REGISTRO DE INSTÂNCIA DE CLASSE (RIC)

• C++: Classe definidas como extensões de STRUCTs• Estrutura da RIC é estática• Usada como modelo para criação de instâncias de classes

Page 41: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

41

REGISTRO DE INSTÂNCIA DE CLASSE (RIC)REGISTRO DE INSTÂNCIA DE CLASSE (RIC)

• C++: Classe definidas como extensões de STRUCTs• Estrutura da RIC é estática• Usada como modelo para criação de instâncias de classes• Subclasses extendem o RIC da classe-pai

Page 42: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

42

REGISTRO DE INSTÂNCIA DE CLASSE (RIC)REGISTRO DE INSTÂNCIA DE CLASSE (RIC)

• C++: Classe definidas como extensões de STRUCTs• Estrutura da RIC é estática• Usada como modelo para criação de instâncias de classes• Subclasses extendem o RIC da classe-pai• Estrutura estática permite acesso usando OFFSETs

Page 43: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

43

REGISTRO DE INSTÂNCIA DE CLASSE (RIC)REGISTRO DE INSTÂNCIA DE CLASSE (RIC)

• C++: Classe definidas como extensões de STRUCTs• Estrutura da RIC é estática• Usada como modelo para criação de instâncias de classes• Subclasses extendem o RIC da classe-pai• Estrutura estática permite acesso usando OFFSETs

EXEMPLOEXEMPLOclass Pequena{ public int a,b,c;}class Grande extends Pequena{ public int d,e;}

Page 44: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

44

REGISTRO DE INSTÂNCIA DE CLASSE (RIC)REGISTRO DE INSTÂNCIA DE CLASSE (RIC)

• C++: Classe definidas como extensões de STRUCTs• Estrutura da RIC é estática• Usada como modelo para criação de instâncias de classes• Subclasses extendem o RIC da classe-pai• Estrutura estática permite acesso usando OFFSETs

EXEMPLOEXEMPLOclass Pequena{ public int a,b,c;}class Grande extends Pequena{ public int d,e;}

abc

RICde

Pequena

Page 45: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

45

REGISTRO DE INSTÂNCIA DE CLASSE (RIC)REGISTRO DE INSTÂNCIA DE CLASSE (RIC)

• C++: Classe definidas como extensões de STRUCTs• Estrutura da RIC é estática• Usada como modelo para criação de instâncias de classes• Subclasses extendem o RIC da classe-pai• Estrutura estática permite acesso usando OFFSETs

EXEMPLOEXEMPLOclass Pequena{ public int a,b,c;}class Grande extends Pequena{ public int d,e;}

abc

RICde

Pequena

Page 46: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

46

REGISTRO DE INSTÂNCIA DE CLASSE (RIC)REGISTRO DE INSTÂNCIA DE CLASSE (RIC)

• C++: Classe definidas como extensões de STRUCTs• Estrutura da RIC é estática• Usada como modelo para criação de instâncias de classes• Subclasses extendem o RIC da classe-pai• Estrutura estática permite acesso usando OFFSETs

EXEMPLOEXEMPLOclass Pequena{ public int a,b,c;}class Grande extends Pequena{ public int d,e;}

abc

abcde

RICde

Grande

RICde

Pequena

Page 47: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

47

VINCULAÇÕES DINÂMICAS (POLIMORFISMO)VINCULAÇÕES DINÂMICAS (POLIMORFISMO)

• Métodos vinculados de forma estática não precisam tratamento especial

Page 48: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

48

VINCULAÇÕES DINÂMICAS (POLIMORFISMO)VINCULAÇÕES DINÂMICAS (POLIMORFISMO)

• Métodos vinculados de forma estática não precisam tratamento especial• Métodos vinculados de forma dinâmica devem ser tratados usando a RIC

Page 49: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

49

VINCULAÇÕES DINÂMICAS (POLIMORFISMO)VINCULAÇÕES DINÂMICAS (POLIMORFISMO)

• Métodos vinculados de forma estática não precisam tratamento especial• Métodos vinculados de forma dinâmica devem ser tratados usando a RIC• Colocar ponteiros para métodos virtuais no RIC?

Page 50: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

50

VINCULAÇÕES DINÂMICAS (POLIMORFISMO)VINCULAÇÕES DINÂMICAS (POLIMORFISMO)

• Métodos vinculados de forma estática não precisam tratamento especial• Métodos vinculados de forma dinâmica devem ser tratados usando a RIC• Colocar ponteiros para métodos virtuais no RIC?• Métodos vinculados dinamicamente a um objeto serão sempre os mesmos -> Apenas uma estrutura

Page 51: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

51

VINCULAÇÕES DINÂMICAS (POLIMORFISMO)VINCULAÇÕES DINÂMICAS (POLIMORFISMO)

• Métodos vinculados de forma estática não precisam tratamento especial• Métodos vinculados de forma dinâmica devem ser tratados usando a RIC• Colocar ponteiros para métodos virtuais no RIC?• Métodos vinculados dinamicamente a um objeto serão sempre os mesmos -> Apenas uma estrutura• Tabela de Métodos Virtuais (VMT)

Page 52: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

52

VINCULAÇÕES DINÂMICAS (POLIMORFISMO)VINCULAÇÕES DINÂMICAS (POLIMORFISMO)

• Métodos vinculados de forma estática não precisam tratamento especial• Métodos vinculados de forma dinâmica devem ser tratados usando a RIC• Colocar ponteiros para métodos virtuais no RIC?• Métodos vinculados dinamicamente a um objeto serão sempre os mesmos -> Apenas uma estrutura• Tabela de Métodos Virtuais (VMT)• Variável polimórfica referencia objeto correto

Page 53: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

53

EXEMPLOEXEMPLO

class Pequena{ public int a,b,c; public void desenhar( ) {...}}

class Grande extends Pequena{ public int d,e; public void desenhar( ) {...} public void examinar( ) {...}}

Page 54: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

54

EXEMPLOEXEMPLO

class Pequena{ public int a,b,c; public void desenhar( ) {...}}

class Grande extends Pequena{ public int d,e; public void desenhar( ) {...} public void examinar( ) {...}}

abc

VMT

Page 55: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

55

EXEMPLOEXEMPLO

class Pequena{ public int a,b,c; public void desenhar( ) {...}}

class Grande extends Pequena{ public int d,e; public void desenhar( ) {...} public void examinar( ) {...}}

abc

VMT desenhar( )

VMTde

Pequena

Page 56: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

56

EXEMPLOEXEMPLO

class Pequena{ public int a,b,c; public void desenhar( ) {...}}

class Grande extends Pequena{ public int d,e; public void desenhar( ) {...} public void examinar( ) {...}}

abc

abc

de

VMT desenhar( )

VMT

VMTde

Pequena

Page 57: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

57

EXEMPLOEXEMPLO

class Pequena{ public int a,b,c; public void desenhar( ) {...}}

class Grande extends Pequena{ public int d,e; public void desenhar( ) {...} public void examinar( ) {...}}

abc

abc

de

VMT desenhar( )

desenhar( )VMT

examinar( )

VMTde

Pequena

VMTde

Grande

Page 58: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

58

EXEMPLOEXEMPLO

class Pequena{ public int a,b,c; public void desenhar( ) {...}}

class Grande extends Pequena{ public int d,e; public void desenhar( ) {...} public void examinar( ) {...}}

abc

abc

de

VMT desenhar( )

desenhar( )VMT

examinar( )

VMTde

Pequena

VMTde

Grande

CHAMADA POLIMÓRFICACHAMADA POLIMÓRFICA

objeto.desenhar( );

Page 59: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

59

EXEMPLOEXEMPLO

class Pequena{ public int a,b,c; public void desenhar( ) {...}}

class Grande extends Pequena{ public int d,e; public void desenhar( ) {...} public void examinar( ) {...}}

abc

abc

de

VMT desenhar( )

desenhar( )VMT

examinar( )

VMTde

Pequena

VMTde

Grande

CHAMADA POLIMÓRFICACHAMADA POLIMÓRFICA

objeto.desenhar( );

Instânciade

Pequena

Page 60: 1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

60

EXEMPLOEXEMPLO

class Pequena{ public int a,b,c; public void desenhar( ) {...}}

class Grande extends Pequena{ public int d,e; public void desenhar( ) {...} public void examinar( ) {...}}

abc

abc

de

VMT desenhar( )

desenhar( )VMT

examinar( )

VMTde

Pequena

VMTde

Grande

CHAMADA POLIMÓRFICACHAMADA POLIMÓRFICA

objeto.desenhar( );

Instânciade

Grande