laboratório de programação ii - inf.pucrs.bremoreno/undergraduate/ec/laproii/class_files/... ·...
TRANSCRIPT
Laboratório de programação II
Paradigma de orientação a objetos
Edson [email protected]
http://www.inf.pucrs.br/~emoreno
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 objetos
Explora o conceito de camadas, a partir da interação entre
elementos básicos chamados objetos
Paradigma de orientação a
objetos
Definição
Paradigma para o desenvolvimento de software
Basea-se na utilização de componentes individuais
(objetos)
Objetos colaboram para a construção de um
Sistema completo
Colaboração feita por troca de mensagens
Encapsulamento
Herança
Polimorfismo
Paradigma de orientação a
objetos
Etapas envolvidas no desenvolvimento orientado
a objetos
Análise orientada a objetos
Projeto orientado a objetos
Programação orientada a objetos
Paradigma de orientação a
objetos
Etapas envolvidas no desenvolvimento orientado
a objetos
Análise orientada a objetos
Processo de construção de modelos de domínio do
problema
Processo pelo qual se identifica e especifica um conjunto
de objetos
Processo no qual a interação entre os objetos é definido
Projeto orientado a objetos
Programação orientada a objetos
Paradigma de orientação a
objetos
Etapas envolvidas no desenvolvimento orientado
a objetos
Análise orientada a objetos
Projeto orientado a objetos
Processo de geração de especificação detalhada
Programação orientada a objetos
Paradigma de orientação a
objetos
Etapas envolvidas no desenvolvimento orientado
a objetos
Análise orientada a objetos
Projeto orientado a objetos
Programação orientada a objetos
Explora os conceitos de classes, objetos, herança, etc
Paradigma de orientação a
objetos
Paradigma baseado em pilares
Entidades
Algo que tenha suas características e funções no mundo
real
Em programação a objetos, nos referimos a entidades
como objetos
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 objetos pertencentes
a classe
Cada objeto é um encapsulamento de seu estado interno,
mensagens e métodos
Paradigma de orientação a
objetos
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 de orientação a
objetos
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 de orientação a
objetos
Paradigma baseado em pilares
Entidades
Herança – Tipos (De relacionamento)
Polimorfismo
Paradigma de orientação a
objetos
Paradigma baseado em pilares
Entidades
Herança
Facilita o reuso
Não há limite na
hierarquização
Polimorfismo
espec
iali
zaçã
o
gen
eral
izaç
ão
Paradigma de orientação a
objetos
Paradigma baseado em pilares
Entidades
Herança
Pode ter mais de uma superclasse
Polimorfismo
Paradigma de orientação a
objetos
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 de orientação a
objetos
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 de orientação a
objetos
Paradigma baseado em pilares
Entidades
Herança
Polimorfismo
Polimorfismo paramétrico (templates)
A partir da definição de uma função, permite trabalhar
genericamente1. /* 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;
Paradigma de orientação a
objetos
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
outras formas
Paradigma de orientação a
objetos
Exemplo de linguagens que empregam OO
Java
C#
C++
Python
Object pascal (Delphi)
Objective C
VB .net
Ruby