Laboratório de programação II Paradigma de orientação a Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno
Sumário Contextualização Paradigma de orientação a
Contextualização A construção de um programa implica em Entendimento do problema Definição de um modelo de resolução Formas comuns de elaboração de um modelo de resolução Programação estrutural Fácil de codificar, mas a organização do código fica prejudicada Explora 3 estrutura básica: sequência, decisäo e iteração Programação orientado a Explora o conceito de camadas, a partir da interação entre elementos básicos chamados
Contextualização Programação estruturada vs Programação OO
Definição Paradigma para o desenvolvimento de software Basea-se na utilização de componentes individuais () Objetos colaboram para a construção de um Sistema completo Colaboração feita por troca de mensagens Encapsulamento Herança Polimorfismo
Etapas envolvidas no desenvolvimento orientado a Análise orientada a Projeto orientado a Programação orientada a
Etapas envolvidas no desenvolvimento orientado a Análise orientada a Processo de construção de modelos de domínio do problema Processo pelo qual se identifica e especifica um conjunto de Processo no qual a interação entre os é definido Projeto orientado a Programação orientada a
Etapas envolvidas no desenvolvimento orientado a Análise orientada a Projeto orientado a Processo de geração de especificação detalhada Programação orientada a
Etapas envolvidas no desenvolvimento orientado a Análise orientada a Projeto orientado a Programação orientada a Explora os conceitos de classes,, herança, etc
Paradigma baseado em pilares Entidades Herança Polimorfismo
Paradigma baseado em pilares Entidades Algo que tenha suas características e funções no mundo real Em programação a, nos referimos a entidades como Um objeto consiste em um conjunto de operações encapsuladas e um estado que grava e recupera os efeitos destas operações Operações encampsuladas são definidas por métodos Estado é mantido por atributos de um objeto Classe define as características de coleção de um objeto Descrevem métodos e atributos de pertencentes a classe Cada objeto é um encapsulamento de seu estado interno,
Paradigma baseado em pilares Entidades Herança Permite a definição de hierarquia de classes Um subclasse pode herdar a definição de componentes de uma classe pai Entende-se componentes por métodos, atributos Polimorfismo
Paradigma baseado em pilares Entidades Herança Tipos (De atributo e método) A classe que herda é chamada de subclasse. A classe que definiu o comportamento é chamada de superclasse Polimorfismo
Paradigma baseado em pilares Entidades Herança Tipos (De relacionamento) Polimorfismo
generalização especialização Paradigma de orientação a Paradigma baseado em pilares Entidades Herança Facilita o reuso Não há limite na hierarquização Polimorfismo
Paradigma baseado em pilares Entidades Herança Pode ter mais de uma superclasse Polimorfismo
Paradigma baseado em pilares Entidades Herança Polimorfismo Propriedade que permite o envio de uma mensagem para n entidades Cada entidade trata a mensagem da forma mais apropriada
Paradigma baseado em pilares Entidades Herança Polimorfismo Polimorfismo de inclusão Objetos de uma subclasse podem ser utilizados em uma superclasse 1. /* Código polimórfico */ 2. void main( ) { 3. Elipse e; 4. Circulo c; 5. imprimir(e); 6. imprimir(c); 7. } 8. void imprimir(elipse eli) {... }
Paradigma baseado em pilares Entidades Herança Polimorfismo Polimorfismo paramétrico (templates) A partir da definição de uma função, permite trabalhar genericamente 1. /* Definição da Classe */ 2. template class pilha <Tipo T> { 3. /* Estrutura de dados... */ 4. void empilhar( T ); 5. T desempilhar( ); 6. } 7. /* Utilização no cód. Cliente */ 8. pilha<int> pilhaint; 9. pilha<float> pilhafloat;
Vantagens do emprego de OO Facilita a organização do código Facilita o reuso de código Modelos permite maior proximidade com o mundo real Dados descritos de maneira mais precisa Mais fácil de entender e manter Pequenas mudanças de restrições ou requisites Tratadas de forma menos drástica quando comparada a
Exemplo de linguagens que empregam OO Java C# C++ Python Object pascal (Delphi) Objective C VB.net Ruby
Exemplo de codificação c++