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

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

Técnicas de Programação

Apresentações semelhantes


Apresentação em tema: "Técnicas de Programação"— Transcrição da apresentação:

1 Técnicas de Programação
Herança Prof.: José Eustáquio Rangel de Queiroz Carga Horária: 60 horas

2 Herança Tópicos 9.1 Introdução 9.2 Classes Base e Classes Derivadas
9.3 Relação entre Classes Base e Classes Derivadas 9.4 Estudo de Caso 9.5 Construtores e Destrutores em Classes Derivadas 9.6 Heranças public, protected e private 9.7 Engenharia de Software com Herança

3 9.1 Introdução Motivação: Manipulação de correio eletrônico
Conceito de uma mensagem de correio Conceito de uma caixa postal Operações típicas Ler mensagens Remover mensagens Enviar mensagens

4 9.1 Introdução

5 9.1 Introdução

6 9.1 Introdução MensagemTexto e MensagemAudio apresentam vários aspectos não desejáveis em boas práticas de programação: Código repetido Dificuldade de criação de novos tipos de mensagens MensagemVideo

7 9.1 Introdução MensagemTexto e MensagemAudio apresentam vários aspectos não desejáveis em boas práticas de programação: Dificuldade de manutenção Pequena alteração pode implicar alterações em várias partes do código  Possibilidade de introdução de falhas

8 9.1 Introdução Que tal criar uma classe Mensagem? Mensagem
MensagemTexto MensagemAudio

9 9.1 Introdução Refatoração de Código I
Integração de todos os trechos em comum, observando-se atentamente as diferenças Uma MensagemTexto não contém um arquivo de áudio Uma MensagemAudio tampouco contém conteúdo de texto

10 9.1 Introdução Refatoração de Código II
Comportamentos comuns entre MensagemTexto e MensagemAudio Remetente, assunto, data de envio Status Lida (ou não), excluída (ou não) Possibilidade de execução de várias ações Excluir, marcar como não excluída, marcar como não lida, exibir

11 9.1 Introdução Herança I Reusabilidade do código
Criação de uma nova classe a partir de uma classe existente Um objeto herda os dados e comportamentos de uma classe existente Especialização

12 9.2 Herança Herança II Especialização Classe Base Classe Derivada
Contém o comportamento que é compartilhado (Mensagem) Classe Derivada Contém as diferenças que caracterizam MensagemTexto e MensagemAudio

13 9.2 Herança Herança Classe Derivada herda da Classe-Base
Grupos de objetos mais específicos Comportamentos herdados da Classe-Base Comportamentos adicionais

14 9.2 Herança Hierarquia de Classes I Classe Base Direta
Explicitamente herdada (um nível acima na hierarquia) Classe Base Indireta Dois ou mais níveis acima na hierarquia

15 9.2 Herança Hierarquia de Classes II Herança Única Herança Múltipla
Única classe-base Herança Múltipla Múltiplas classes-base

16 9.2 Classes-Base e Classes Derivadas
Hierarquia de Herança Relacionamentos de Herança: hierarquia em árvore Classe-Base Fornecimento dos dados e comportamentos para as outras classes Classe Derivada Herança dos dados e comportamentos de outras classes

17 9.2 Classes-Base e Classes Derivadas
Exemplo 01 – Hierarquia de Herança para MembrosDoCampus MembroDoCampus Herança Única Servidor Aluno ExAluno Herança Única Administrador Professor Herança Múltipla Professor_Administrador

18 9.2 Classes-Base e Classes Derivadas
Exemplo 01 – Hierarquia de Herança para FormasGeometricas

19 9.2 Classes-Base e Classes Derivadas
“é um” vs. “tem um” “tem um” Composição Objeto contém um ou mais objetos de outras classes como membros Exemplo Carro tem rodas, tem direção, tem motor

20 9.2 Classes-Base e Classes Derivadas
“é um” vs. “tem um” “é um” Implica que tudo que um objeto da classe-base faz pode ser feito por um objeto da classe derivada Portanto, onde um objeto da classe base aparece, pode-se inserir um objeto de uma classe derivada

21 9.2 Classes-Base e Classes Derivadas
MensagemTexto "é um tipo de" Mensagem MensagemAudio "é um tipo de" Mensagem MensagemMissaoImpossivel "é um tipo de" MensagemTexto m é uma MensagemTexto O que acontece ao se escrever m = new MensagemMissaoImpossivel(...)

22 9.2 Classes-Base e Classes Derivadas
Um objeto de uma classe também é um objeto de outra classe Exemplo: Retangulo é um quadrilátero Classe Retangulo herda da classe Quadrilatero Quadrilatero: classe-base Retangulo: classe derivada

23 9.2 Classes-Base e Classes Derivadas
A Classe-Base geralmente representa um grupo mais geral que a derivada Exemplo: Classe-Base: Veículo Carros, caminhões, botes, bicicletas, … Classe Derivada: Carro Subconjunto menor e mais específico de veículos

24 9.2 Classes-Base e Classes Derivadas
Exemplos Classe-Base: Aluno Classes Derivadas: Aluno_Graduacao, Aluno_Mestrado Classe-Base: Forma_Geometrica Classes Derivadas: Circulo, Triangulo, Quadrilatero

25 9.3 Estudo de Caso Classes Abstratas I Não produzem instâncias
Agrupam características e comportamentos que serão herdados por outras classes Fornecem padrões de comportamento que serão implementados nas suas subclasses. Podem ter métodos com implementação definida.

26 9.3 Estudo de Caso Classes Abstratas II area calcularArea {abstrato}
Atributos Operações Figura calcularArea {abstrato} informarArea area

27 9.3 Estudo de Caso Classes Abstratas III area calcularArea lado1*lado2
Atributos Operações Triangulo calcularArea lado1*lado2 base*altura/2 Forma calcularArea {abstrato} informarArea area Retangulo

28 9.3 Estudo de Caso Polimorfismo
Possibilidade de se solicitar um serviço a um objeto, cuja execução é função do tipo de objeto instanciado O objeto solicitante não necessita conhecer especificamente o tipo do objeto receptor. Retangulo Triangulo Atributos Atributos Operações Operações calcularArea lado1*lado2 calcularArea base*altura/2

29 9.3 Estudo de Caso Relacionamentos
Vínculos existentes entre classes de um dado contexto de POO Associação Agregação Composição Dependência

30 9.3 Estudo de Caso Relacionamentos - Associações e Ligações
Mecanismos adotadosd para estabelecer relacionamentos entre objetos e classes. Associação Descrição de um conjunto de ligações potenciais. Aluno Turma Atributos 1 n Atributos Operações Operações n 1

31 9.3 Estudo de Caso Relacionamentos - Agregação I
Relacionamento do tipo “é parte de”, a partir do qual objetos representantes de componentes são associados a objetos representantes de uma montagem. Forma transitiva de associação com alguma semântica adicional Se B é parte de A e C é parte de B, então C é parte de A A D B C B D B D

32 9.3 Estudo de Caso Relacionamentos - Agregação II Faz parte do
Retângulo Desenho Faz parte do Atributos Atributos Operações Elipse Operações Faz parte do Atributos Operações

33 9.3 Estudo de Caso Herança em C++

34 9.4 Estudo de Caso Herança em C++ - Exemplo

35 9.4 Estudo de Caso

36 9.4 Estudo de Caso

37 9.4 Estudo de Caso

38 9.4 Estudo de Caso

39 9.4 Estudo de Caso

40 9.4 Estudo de Caso

41 9.4 Estudo de Caso

42 9.4 Estudo de Caso Funções virtuais são declaradas na classe-base e redefinidas nas classes derivadas Compilador  Garantia de que a função correta é invocada para o objeto usado

43 9.4 Estudo de Caso Polimorfismo
Obtenção do comportamento correto das funções, independentemente do tipo exato de objeto (classe base ou derivada) que é usado

44 9.4 Estudo de Caso Uso de funções virtuais
Manipulação de objetos via apontador

45 9.4 Estudo de Caso

46 9.5 Construtores e Destrutores em Classes Derivadas
Instância de objetos de classes derivadas Chamada encadeada de construtores A classe derivada invoca o construtor da Classe-Base Implícita ou explicitamente Hierarquia da herança Último construtor chamado na cadeia Primeiro construtor a terminar a execução

47 9.5 Construtores e Destrutores em Classes Derivadas
Instância de objetos de classes derivadas Chamada encadeada de construtores Hierarquia da herança Exemplo: Ponto3/Círculo4/Cilindro Construtor Ponto3 chamado por último Ponto3 termina primeiro a execução Inicialização de membros de dados O construtor de cada Classe-Base inicializa seus membros

48 9.5 Construtores e Destrutores em Classes Derivadas
Destruição de objetos da classe derivada I Chamadas dos destrutores em cadeia Ordem reversa da chamada de construtores Destrutores das classes derivadas chamados primeiro

49 9.5 Construtores e Destrutores em Classes Derivadas
Destruição de objetos da classe derivada II Chamadas dos destrutores em cadeia Destrutor da Classe-Base logo acima na hierarquia Continua subindo na hierarquia até a última Classe-Base Após a chamada do último destrutor o objeto é removido da memória

50 9.5 Construtores e Destrutores em Classes Derivadas
Construtores, destrutores e operadores de atribuição da Classe- Base Não herdados pela classe derivada Construtores e operadores de atribuição da classe derivada podem chamar Construtores Operadores de Atribuição

51 9.5 Construtores e Destrutores em Classes Derivadas

52 9.6 Tipos de Herança Tipos de Herança public private protected

53 9.7 Herança public public Membros public da classe-pai são public na classe derivada. Podem ser acessados diretamente Membros protected da classe-pai são protected na classe derivada. Podem ser acessados via funções-membros e friends da Classe-Base ou da classe derivada

54 9.7 Herança public public Membros private da classe-pai são invisíveis à classe derivada. Podem ser acessados somente via funções-membros da Classe-Base.

55 9.8 Herança protected protected I
Membros public da classe-pai são protected na classe derivada. Podem ser acessados via funções-membros e friends da Classe-Base ou da classe derivada

56 9.8 Herança protected protected II
Membros protected da classe-pai são protected na classe derivada. Podem ser acessados via funções-membros e friends da Classe-Base ou da classe derivada

57 9.8 Herança protected protected III
Membros private da classe-pai são invisíveis à classe derivada. Podem ser acessados somente via funções-membros da Classe-Base.

58 9.8 Herança private private I
Membros public da classe-pai são private na classe derivada. Podem ser acessados via funções-membros e friends da Classe-Base ou da classe derivada Membros protected da classe-pai são private na classe derivada. Podem ser acessados via funções-membros e friends da Classe-Base ou da classe derivada

59 9.9 Herança private private II
Membros private da classe-pai são invisíveis à classe derivada. Podem ser acessados somente via funções-membros da Classe-Base.

60 9.10 Síntese Tipos de Herança I public
Cada objeto da classe derivada é objeto da classe-base Objeto da classe-base não é necessariamente objeto da classe derivada Todo carro é um veículo, mas nem todo veículo é um carro

61 9.10 Síntese Tipos de Herança II public
Possibilidade de acesso a membros não-privados da Classe-Base Classes-base podem de fato modificar atributos privados de classes-base Via funções não-privadas

62 9.10 Síntese Tipos de Herança III private protected
Alternativa à composição protected Raramente utilizada

63 9.10 Síntese Herança public Especificação
class FormaBiDimensional:public Forma_Geometrica FormaBiDimensional herda de FormaGeometrica Membros private da Classe-Base Herdados mas não acessíveis diretamente Acessíveis por membros herdados da Classe-Base

64 9.10 Síntese Herança public Membros public e protected da Classe-Base
Herdados com acesso aos membros originais Funções friend Não herdadas

65 9.10 Síntese Acesso a membros protected
Nível intermediário de segurança entre private e public Membros protected são acessíveis a: Membros de classes-base friends de classes-base Membros de classes derivadas friends de classes-derivadas

66 9.10 Síntese Acesso a membros protected Membros de classes derivadas
Referem-se aos membros protected e public herdados através dos nomes originais

67 9.11 Engenharia de Software e Herança
Personalização de software existente Herança de classes existentes Inclusão de membros adicionais Redefinição de classes base Não é possível acessar o código da Classe-Base diretamente Link para o código-objeto

68 9.11 Engenharia de Software e Herança
Personalização de software existente Vendedores independentes de software (ISV) Desenvolvimento de código proprietário para venda/licenciamento Disponível no formato código-objeto Usuários derivam novas classes Sem acessar o código proprietário do ISV

69 Considerações Revisivas I
Classe  Representação lógica de algo do mundo real. Especificação da natureza e funcionalidade de um objeto do mundo real Exemplo: Pessoa Objeto  Representação física de uma classe. Exemplo: Eustáquio

70 Considerações Revisivas II
Atributos  Características do objeto representado na classe Exemplo: Telefone de Eustáquio Métodos (Funções-membros)  Representam os comportamentos e funcionalidades da classe

71 Considerações Revisivas III
Herança Capacidade de uma classe de herdar os dados e comportamentos de uma classe existente. Exemplo: Professor é uma Pessoa Professor herda as características de Pessoa

72 rangel@dsc.ufcg.edu.br, rangeldequeiroz@gmail.com
José Eustáquio Rangel de Queiroz UNIVERSIDADE FEDERAL DE CAMPINA GRANDE CENTRO DE CIÊNCIAS E TECNOLOGIA DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO


Carregar ppt "Técnicas de Programação"

Apresentações semelhantes


Anúncios Google