Carregar apresentação
A apresentação está carregando. Por favor, espere
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.