A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos"— Transcrição da apresentação:

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

2 2 1 – Introdução Sumário

3 3 2 – Programação Orientada a Objeto Sumário

4 4 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto Sumário

5 5 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto 4 – Smalltalk Sumário

6 6 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto 4 – Smalltalk 5 – C++ Sumário

7 7 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto 4 – Smalltalk 5 – C++ 6 – Java Sumário

8 8 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto 4 – Smalltalk 5 – C++ 6 – Java 7 – Ada 95 Sumário

9 9 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto 4 – Smalltalk 5 – C++ 6 – Java 7 – Ada 95 8 – Eiffel Sumário

10 10 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto 4 – Smalltalk 5 – C++ 6 – Java 7 – Ada 95 8 – Eiffel 9 – Implementação de Construções O. O. Sumário

11 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ário

12 12 1 – Introdução 2 – Programação Orientada a Objeto - Tipos Abstratos de Dados - Herança - Vinculação Dinâmica (polimorfismo) Sumário

13 13 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto Sumário

14 14 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto Sumário

15 15 - Exclusividade de objetos Tudo são objetos ou não? Questões de Projeto

16 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 Projeto

17 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 Projeto

18 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 Projeto

19 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 Projeto

20 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 Projeto

21 21 Código Dados Estáticos Heap Pilha

22 22 Código Dados Estáticos Heap Pilha Objetos Estáticos

23 23 Código Dados Estáticos Heap Pilha Objetos Estáticos Objetos Heap Dinâmicos

24 24 Código Dados Estáticos Heap Pilha Objetos Estáticos Objetos Stack Dinâmicos Objetos Heap Dinâmicos

25 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 Projeto

26 26 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto 4 – 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ário

27 27 Sumário 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto 4 – 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

28 28 Exemplos - Expressões soma / cont (total – 3) * divisor

29 29 cont <- 1. soma <- 0. [cont <= 20] whileTrue: [soma <- soma + cont. cont <- cont + 1] Exemplo – Iteração

30 30 Exemplo – Seleção total = 0 ifTrue: [media <- 0] ifFalse: [media <- soma // total]

31 31 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto 4 – Smalltalk 5 – 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ário

32 32 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto 4 – Smalltalk 5 – 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ário

33 33 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto 4 – Smalltalk 5 – C++ 6 – Java 7 – 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ário

34 34 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto 4 – Smalltalk 5 – C++ 6 – Java 7 – Ada 95 8 – 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ário

35 35 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto 4 – Smalltalk 5 – C++ 6 – Java 7 – Ada 95 8 – Eiffel 9 – Implementação de Construções O. O. Sumário

36 36 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto 4 – Smalltalk 5 – C++ 6 – Java 7 – Ada 95 8 – Eiffel 9 – 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ário

37 37 1 – Introdução 2 – Programação Orientada a Objeto 3 – Questões de Projeto 4 – Smalltalk 5 – C++ 6 – Java 7 – Ada 95 8 – Eiffel 9 – 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ário

38 38 REGISTRO DE INSTÂNCIA DE CLASSE (RIC) C++: Classe definidas como extensões de STRUCTs

39 39 REGISTRO DE INSTÂNCIA DE CLASSE (RIC) C++: Classe definidas como extensões de STRUCTs Estrutura da RIC é estática

40 40 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

41 41 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

42 42 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

43 43 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 EXEMPLO class Pequena { public int a,b,c; } class Grande extends Pequena { public int d,e; }

44 44 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 EXEMPLO class Pequena { public int a,b,c; } class Grande extends Pequena { public int d,e; } a b c RIC de Pequena

45 45 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 EXEMPLO class Pequena { public int a,b,c; } class Grande extends Pequena { public int d,e; } a b c RIC de Pequena

46 46 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 EXEMPLO class Pequena { public int a,b,c; } class Grande extends Pequena { public int d,e; } a b c a b c d e RIC de Grande RIC de Pequena

47 47 VINCULAÇÕES DINÂMICAS (POLIMORFISMO) Métodos vinculados de forma estática não precisam tratamento especial

48 48 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

49 49 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?

50 50 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

51 51 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)

52 52 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

53 53 EXEMPLO class Pequena { public int a,b,c; public void desenhar( ) {...} } class Grande extends Pequena { public int d,e; public void desenhar( ) {...} public void examinar( ) {...} }

54 54 EXEMPLO class Pequena { public int a,b,c; public void desenhar( ) {...} } class Grande extends Pequena { public int d,e; public void desenhar( ) {...} public void examinar( ) {...} } a b c VMT

55 55 EXEMPLO class Pequena { public int a,b,c; public void desenhar( ) {...} } class Grande extends Pequena { public int d,e; public void desenhar( ) {...} public void examinar( ) {...} } a b c VMT desenhar( ) VMT de Pequena

56 56 EXEMPLO class Pequena { public int a,b,c; public void desenhar( ) {...} } class Grande extends Pequena { public int d,e; public void desenhar( ) {...} public void examinar( ) {...} } a b c a b c d e VMT desenhar( ) VMT de Pequena

57 57 EXEMPLO class Pequena { public int a,b,c; public void desenhar( ) {...} } class Grande extends Pequena { public int d,e; public void desenhar( ) {...} public void examinar( ) {...} } a b c a b c d e VMT desenhar( ) VMT examinar( ) VMT de Pequena VMT de Grande

58 58 EXEMPLO class Pequena { public int a,b,c; public void desenhar( ) {...} } class Grande extends Pequena { public int d,e; public void desenhar( ) {...} public void examinar( ) {...} } a b c a b c d e VMT desenhar( ) VMT examinar( ) VMT de Pequena VMT de Grande CHAMADA POLIMÓRFICA objeto.desenhar( );

59 59 EXEMPLO class Pequena { public int a,b,c; public void desenhar( ) {...} } class Grande extends Pequena { public int d,e; public void desenhar( ) {...} public void examinar( ) {...} } a b c a b c d e VMT desenhar( ) VMT examinar( ) VMT de Pequena VMT de Grande CHAMADA POLIMÓRFICA objeto.desenhar( ); Instância de Pequena

60 60 EXEMPLO class Pequena { public int a,b,c; public void desenhar( ) {...} } class Grande extends Pequena { public int d,e; public void desenhar( ) {...} public void examinar( ) {...} } a b c a b c d e VMT desenhar( ) VMT examinar( ) VMT de Pequena VMT de Grande CHAMADA POLIMÓRFICA objeto.desenhar( ); Instância de Grande


Carregar ppt "1 Aula 8 Orientação à Objetos Universidade do Vale do Rio dos Sinos"

Apresentações semelhantes


Anúncios Google