Perigos da herança e do polimorfismo

Slides:



Advertisements
Apresentações semelhantes
Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI.
Advertisements

Princípios da Orientação a Objetos e a Linguagem UML
Paulo Marques Hernâni Pedroso
H ERANÇA E P OLIMORFISMO Prof. Thiago Pereira Rique
Análise e Projeto de Sistemas
Sistemas Distribuídos
Orientação a Objetos Introdução. Objetos: o que são? Olhando o mundo real pode-se ver vários objetos: mesa, cadeiras, alunos, professores etc. Esses objetos.
Análise Orientada a Objetos
Adapter.
(Linguagem de Modelagem Unificada)
1 Professor Rogério B. de Andrade - Aula 001- Dez/2008 Técnicas e Linguagem de Programação.
Capítulo 9 (continuação)
Programação Orientada a Objetos
Métodos Programação II
Métodos Programação II 1 Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre Classes Abstractas.
Orientação a Objetos.
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Polimorfismo em C#.
Introdução UML, Diagrama de Classes e Comunicação/Colabaração
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Conformidade de tipo e comportamento fechado
Análise da linguagem Java Planejamento. Objetivos Apresentar as soluções de implementação em Java para os conceitos de Orientação a Objetos introduzidos.
Conceitos básicos de orientação a objetos
Linguagens Orientadas a Objeto
. Smalltalk HISTÓRICO . Década de 60 – POO . Dynabook (Alan Kay)
Aula 3 CoL, atividade Polimorfismo (late binding) Modificador final Modificador abstract Interfaces Herança múltipla Atribuição, Construtores, Destrutores,
Métodos de Construção de Software: Orientação a Objetos
Paradigmas da Programação – Semestre 1 – Aula 2 Professores: Eduardo Mantovani Fábio de Paula.
Classification in Object-Oriented Systems Peter Wegner Carlos Eduardo da Silva César Frederico dos Santos.
Orientação a Objetos Parte I
Programação orientada a objectos em C++
Programação Orientada à Objetos
Definição Classe Objeto Construtor de Classes Manipulando o objeto Namespace Utilização do namespace Herança Polimorfismo Encapsulamento Propriedades.
Princípios de Análise e Projeto Orientados a Objetos com UML
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
Herança em POO Importante:
UML - Unified Modeling Language
SISTEMAS DISTRIBUIDOS Aula 4
Aula prática 14 Orientação a Objetos – C++ Parte 2
Análise Orientada Objeto
Projeto Orientado aos Objetos Prof. Wolley W. Silva
Análise Orientado aos Objetos Prof. Wolley W. Silva
Programação Orientada à Objetos
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 7. Análise e projeto orientados a objetos 7.1 Técnica de modelagem.
Polimorfismo.
Herança e Polimorfismos
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Generalização e herança Agregação e composição
Paradigmas da Programação – Semestre 2 – Aula 1 Professores: Fábio de Paula Santos Eduardo Mantovani
Programação I Aula 11 (Arrays de Objetos) Prof. Gilberto Irajá Müller Última atualização 27/5/2009.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Paradigmas de Programação –Aula 7 Lab 2 Professores: Eduardo Mantovani Fábio Paula Santos.
Orientação a Objetos com UML
Bruno Inojosa MCP .NET Framework
Conceitos de Orientação a Objetos zConceito de tipo zTipos Abstratos de Dados zMódulos/Pacotes zEncapsulamento.
Modelagem Conceitual descreve a informação que o sistema vai gerenciar.
Sistemas de Informação Prof Paulo Germano. Sistemas de Informação Um sistema de informação é um conjunto de componentes relacionados que recebe, trata,
Orientação a Objetos com UML. Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes Análise e Projeto OO com UML e Padrões|
2 – Revisão de Programação Orientada a Objetos
20/04/2017 Orientação a Objetos 1 1.
Módulo II Capítulo 1: Orientação a Objetos
Palavras-Chaves Linguagem gráficas e utilizações de símbolos.
4 CONCEITOS BÁSICOS EM POO Dilvan Moreira.  Objetos  Classes  Herança  Polimorfismo Lembrando: 4 Conceitos Básicos.
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Continuação Modelagem Orientada a Objetos Técnico Subsequente.
Fundamentos de Engenharia de SW Diagramas da UML Usados no Projeto de Software.
Diagrama de Classes Herança Dependências.
Desenvolvendo sotfware com UML1 Visão Geral de Orientação a Objetos.
Análise e Design de Software Site:
Visão Geral de Orientação a Objetos com UML Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.
Padrões de Projeto 2 – Revisão de Programação Orientada a Objetos.
Transcrição da apresentação:

Perigos da herança e do polimorfismo

Abusos da herança: Uso exagerado da herança! Conjuntos equivocados Hierarquia invertida Confusão de classe com instância Utilização inadequada Perigos

Conjuntos equivocados: Aeronave Asa Cauda Motor Fuselagem Perigos

Conjuntos equivocados: Aeronave Asa Cauda Motor Fuselagem Herança NÃO É Composição “Asa não é uma espécie de aeronave”! Perigos

… Asa Cauda Motor Fuselagem “Uma aeronave é uma asa, uma cauda, um motor e uma fuselagem” Aeronave Perigos

“Uma aeronave é, simultaneamente, uma espécie de asa, uma espécie … Asa Cauda Motor Fuselagem “Uma aeronave é uma asa, uma cauda, um motor e uma fuselagem” Aeronave “Uma aeronave é, simultaneamente, uma espécie de asa, uma espécie de cauda, …” Perigos

Hierarquia invertida MembroDeDiretoria Correto ? Gerente Funcionário Perigos

Hierarquia invertida Funcionário “Um membro da Diretoria Gerente é uma espécie de Gerente, e um Gerente é uma espécie de Funcionário.” MembroDeDiretoria Perigos

Confundir classe com instância Urso EspécieAmeaçada DeExtinção Panda Quais são as instâncias das 3 classes ? Perigos

Utilização inadequada (!) Cubóide /volume volume ampliar (…) rodar (…) As operações de ampliar e rodar são válidas ? Quarto Perigos

O perigo do Polimorfismo Promove concisão! Polimorfismo de operações Polimorfismo de variáveis Polimorfismo de mensagens Polimorfismo e generalidade Perigos

Polimorfismo de operações “escopo de polimorfismo de uma operação op é o conjunto de classes sobre as quais é definida op. A classe A junto com todas suas subclasses forma um cone de polimorfismo, tendo A como vértice de polimorfismo” Perigos

Exemplo válido: Polígono Triângulo Retângulo Hexágono Perigos

Exemplo inválido: “Imprimir” Perigos

Polimorfismo de variáveis “O escopo de polimorfismo de uma variável v é o conjuto das classes às quais os objetos referidos por v (durante a existência inteira de v) podem pertencer.” Perigos

Exemplos: var t: Triângulo permite que T aponte para qq Triângulo ou seus descendentes  OK Variável v aponte para Cavalo, Círculo ou Cliente  Não OK Aponte para Objeto, que está no topo de uma hierarquia de classes  OK Perigos

Polimorfismo em mensagens: Na passagem de uma mensagem temos: objetoDestinatário.operaçãoDestinatária COP: Cone de Polimorfismo do Objeto e Cone de Polimorfismo da Operação Perigos

COP de operaçãodestinatária COP de objetodestinatário Caso 1: COP de operaçãodestinatária COP de objetodestinatário Perigos

COP de operaçãodestinatária COP de objetodestinatário Caso 2: COP de operaçãodestinatária COP de objetodestinatário Perigos

Exemplos: dispositivoDeFábrica.ligar CASO 1: a msg aponta para Torneira, Motor ou Luz CASO 2: aponta para qq hardware: Torneira, Motor, Luz, Tubo, Tanque, Porta, Alavanca, … Perigos

Polimorfismo e generalidade A classe parametrizada: ÁrvoreDeClasse <ClasseDeNó> pode gerar: árvoreDeNúmeroReal := ÁrvoreDeClasse <NúmeroReal>.Novo; e dentro da ÁrvoreDeClasse: nó := ClasseDeNó.Novo; Perigos

Problema: O desenhista não tem idéia da classe efetiva que será passada em run-time: ÁrvoreDeClasse<Fuselagem>.Nova ÁrvoreDeClasse<NoComplexo>.Nova ÁrvoreDeClasse<Animal>.Nova Pode haver problema se objeto da classe Animal receber comunicação de “imprimir a si próprio”! Perigos

Soluções: O usuário de classe parametrizada ser responsável e só aceitar classes dinâmicas que sejam compativeis (sic!) Definir “Condição de Guarda” (mecanismo da Linguagem Eiffel!) Perigos