You are on page 1of 17

Agenda

!
! !

Introduo a OO
Histrico Motivos que influenciaram Vantagens da OO reas de aplicao O que a Orientao a Objetos? Preconceitos sobre a OO Desenvolvimento OO Linguagens de Programao OO

!
! ! ! ! ! ! ! !

Paradigma de Objetos
Classe e Objetos Encapsulamento Herana Polimorfismo Acoplamento Dinmico Classes Abstratas Delegao MetaClasses

Conceitos de Orientao a Objetos


Cleidson Souza - cdesouza@ufpa.br Departamento de Informtica Universidade Federal do Par 1
Informtica - UFPA

! ! ! ! ! !

Bibliografia

Informtica - UFPA

Histrico
!

Histrico(2)
!

Linguagens de Programao
Simula 67 : linguagem projetada para simulao. " Famlia de linguagens Smalltalk. Smalltalk-72 e 80. " Maior divulgao a partir de 1986 com o 1o Workshop em Programao Orientada a Objetos e a conferncia ObjectOriented Programming Languages, Systems and Applications (OOPSLA). " C++ " Java
"

Metodologias
Surgiram devido a incompatibilidade das abordagens estruturadas com a Programao Orientada a Objetos. " Exemplo de metodologias:
"

Coad - Yourdon (1990) OMT (1991) OOSE (1992) Fuso (1995) UML (1996) [notao]

! ! !

Banco de Dados Sistemas Operacionais ...


Informtica - UFPA

Informtica - UFPA

Motivos que influenciaram


!

Vantagens da Tecnologia de Objetos


! !

Avanos na tecnologia de arquiteturas de computadores, suportando sofisticados ambientes de programao e interfaces homen-mquina. Avanos na rea de linguagens de programao como modularizao, ocultamento de informao, etc. Crise do Software: termo utilizado para descrever problemas associados ao modo como o software desenvolvido, como feita a manuteno e como acompanhar a demanda por mais software [Pressman, 1995].
Informtica - UFPA

Facilita a reutilizao de cdigo; Os modelos refletem o mundo real de maneira mais aproximada:
" "

Descrevem de maneira mais precisa os dados; A decomposio baseada em um particionamento natural; e Mais fceis de entender e manter.

"

Pequenas mudanas nos requisitos no implicam em alteraes massivas no sistema em desenvolvimento.


"

Implementao de Tipos Abstratos de Dados;

Informtica - UFPA

O que a Orientao a Objetos ?


!

O que a Orientao a Objetos ?


!

um paradigma para o desenvolvimento de software que baseia-se na utilizao de componentes individuais (objetos) que colaboram para construir sistemas mais complexos. A colaborao entre os objetos feita atravs do envio de mensagens. Um paradigma um estabelecem fronteiras e problemas dentro desta ajuda-nos a organizar a e olhamos o mundo. conjunto de regras que descrevem como resolver fronteira. Um paradigma coordenar a maneira como

O paradigma de objetos baseia-se nos seguintes conceitos:


"Classes "Objetos "Herana "Polimorfismo

e "Binding Dinmico
!

Cada um destes conceitos ser abordado a seguir.


Informtica - UFPA

Informtica - UFPA

Preconceitos sobre Orientao a Objetos


!

Preconceitos (2)
!

A orientao a objetos no uma metodologia para o desenvolvimento de interfaces grficas amigveis, ou seja, o paradigma de objetos no est necessariamente relacionada a programao visual; A orientao a objetos no elimina a necessidade de implementar os sistemas, e nem est relacionadas apenas a fase de implementao;

Padres de projeto no so necessariamente abordagens relacionadas ao paradigma de objetos;

A orientao a objetos no garante a reutilizao, ela oferece mecanismos para que isso ocorra, mas sempre ser funo do desenvolvedor garantir isso.

Informtica - UFPA

10

Informtica - UFPA

Desenvolvimento Orientado a Objetos


!

Desenvolvimento Orientado a Objetos


!

Anlise Orientada a Objetos: o processo de construo de modelos do domnio do problema, identificando e especificando um conjunto de objetos que interagem e comportam-se conforme os requisitos estabelecidos para o sistema. Projeto Orientado a Objetos: o processo de gerao de uma especificao detalhada do software a ser desenvolvido, de tal forma que esta especificao possa levar a direta implementao no ambiente alvo.
Informtica - UFPA

11

12

Programao Orientada a Objetos: um modelo de programao que baseia-se em conceitos como classes, objetos, herana, etc. Seu objetivo a resoluo de problemas baseada na identificao de objetos e o processamento requerido por estes objetos, e ento na criao de simulaes destes objetos. A programao obtida atravs da definio de classes e criao de hierarquias, nas quais propriedades comuns so transmitidas das superclasses para as subclasses atravs do mecanismo de herana.
Informtica - UFPA

Desenvolvimento Orientado a Objetos


!

Linguagens Orientadas a Objetos


!

Objetos destas classes so instanciados tal que a execuo do programa vista como um conjunto de objetos relacionados que se comunicam enviando mensagens uns para os outros.

Na literatura existe uma distino entre linguagens baseadas em objetos e linguagens orientadas a objetos: " Uma linguagem baseada em objetos quando ela fornece apoio somente ao conceito de objetos. Exemplo: Ada e Visual Basic " Uma linguagem orientada a objetos quando ela fornece apoio a objetos, e requer que objetos sejam instncias de classes. Alm disso, um mecanismo de herana deve ser oferecido. Ex: C++, Java e Smalltalk.
Informtica - UFPA

13

Informtica - UFPA

14

Linguagens Orientadas a Objetos


!

Linguagens Orientadas a Objetos


Podemos identificar similaridades entre a programao procedural (ou imperativa) e a programao orientada a objetos.
!

Alm da distino entre linguagens baseadas em objetos e linguagens orientadas a objetos, existe uma outra distino que classifica as linguagens orientadas a objetos em: " Hbridas: So linguagens que originalmente no foram projetadas orientadas a objetos, mas que passaram a incorporar os conceitos deste paradigma. Ex: C++ e Object Pascal " Puras: So linguagens que foram projetadas originalmente orientadas a objetos. Ex: Smalltalk e Java.
Informtica - UFPA

!
! ! ! !

P a r a d i g m a Procedual
Tipos de Dados Varivel Funo / Procedimento Chamada de Funo

!
! ! ! !

Paradigma Objetos

de

Classes Objeto / Instncia Operao / Mtodo Servio Envio de Mensagem


Informtica - UFPA

15

16

Objetos
!

Objetos
!

Informalmente um objeto representa uma entidade, tanto fsica quanto conceitual ou de software.
Entidade Fsica: caminho, carro, bicicleta, etc. " Entidade Conceitual: processo qumico, matrcula, etc " Entidade de Software: lista encadeada, arquivo, etc.
"

Exemplos:

Objetos so implementaes de Tipos Abstratos de Dados (TADs). TADs, um conceito da rea de Linguagens de Programao, so entidades que encapsulam dados e operaes associadas que manipulam esses dados. Evoluo de Tipos de Dados
Assembler: no possui tipos, " Fortran: primeiro tipos primitivos, " Pascal: tipos agregados de dados; " Simula: associao de tipos e operaes.
"

Podemos afirmar que um objeto um conceito, abstrao, ou entidade com limites bem definidos e um significado para a aplicao.
Informtica - UFPA

17

18

Informtica - UFPA

Objetos
Operao 1

Objetos - Caractersticas
!

Exemplo
O per

O per

Atributos
era o 3 per a o 4

Objeto geomtrico
cor: posio:

Os dados de um objeto so totalmente escondidos e protegidos de outros objetos. A nica maneira de acess-los atravs da invocao de uma operao declarada na interface pblica do objeto. A interface pblica de um objeto consiste no conjunto de operaes que um cliente do objeto pode acessar; Variveis representando o estado interno do objeto so chamadas variveis de instncia ou atributos. As operaes so chamadas de mtodos.
Informtica - UFPA

ao

ao 2
Op

19

!
selecionar(p: Ponto): boolean girar(ngulo: real) mover(delta: coord) Informtica - UFPA

20

Objetos - Caractersticas
Comunicao entre Objetos
O per ao 5
Operao 1

Encapsulamento
!

Esconder os detalhes da implementao de um objeto chamado encapsulamento.


"A

O per ao 5

21

Informtica - UFPA

Encapsulamento (2)
!

Benefcios
"O

cdigo cliente pode usar apenas a interface para a operao; implementao do objeto pode mudar, para corrigir erros, aumentar performance, etc sem que seja necessrio modificar o cdigo do cliente; manuteno mais fcil e menos custosa; e um programa legvel e bem estruturado.
}

"A

"A

" Cria

23

Informtica - UFPA

o4

Op er

Um objeto comunica-se com outro atravs de mensagens que identificam operaes a serem realizadas no segundo objeto.

er Op 3

er Op 3

Atributos
a o4 Op er a o

a O per 2 o

Operao 1

capacidade de um objeto possuir uma parte

privada, acessvel somente atravs dos mtodos definidos na sua interface pblica;
" No

Atributos

a O per 2 o

se deve permitir acesso direto aos atributos de

uma classe;

22

Informtica - UFPA

Exemplo de Encapsulamento
!

Implementao Lista sem Encapsulamento:

de

uma usar

public class Lista{ public int dados[]; public int tamanho; public Lista(int n) { dados = new int[n]; tamanho = 0; }

public static void main(String args[]) { Lista al = new Lista(5); al.dados[0]=0; al.tamanho++; al.dados[1]=1; al.tamanho++; if (al.tamanho>=2) { System.out.println("Imprime o 1 elemento "+ al.dados[0]); System.out.println("Imprime o 2 elemento "+ al.dados[1]); } }

24

Informtica - UFPA

Exemplo (2)
!

Exemplo (3)
public int remove(int posicao) { if ((posicao>0) && (posicao<tamanho)) return dados[posicao]; return -1; }
!

Implementao de uma Lista com Encapsulamento:


public class ArrayLista{ private int dados[]; private int tamanho; public ArrayLista(int n) { dados = new int[n]; tamanho = 0; } public void add(int a) { dados[tamanho] = a; tamanho++; }

Implementao de uma Lista com Encapsulamento:

public static void main(String args[]) { ArrayLista al=new ArrayLista(5); al.add(1); al.add(2); System.out.println("Imprime o 1 elemento +al.remove(0)); System.out.println("Imprime o 2 elemento +al.remove(1)); } }

import java.util.Vector; public class VectorLista{ private int dados[]; public VectorLista(int n) { dados = new Vector(n); } public void add(int a) { dados.addElement(new Integer(a)); } public int remove(int posicao) { if ((posicao>0) && (posicao<dados.size())) return ((Integer) dados.elementAt(posicao)).intValue(); return -1; }

public static void main(String args[]) { VectorLista al = new VectorLista(5); al.add(1); al.add(2); System.out.println("Imprime o 1 elemento "+ al.remove(0)); System.out.println("Imprime o 2 elemento "+ al.remove(1)); } }

25

Informtica - UFPA

26

Informtica - UFPA

Objetos
!

Objetos
!

Formalmente, um objeto algo que possui: " um estado, que normalmente implementado atravs de
seu conjunto de propriedades (denominadas atributos), com os valores das propriedades, mais as ligaes que o objeto pode ter com outros objetos;

Um objeto possui um estado, exibe um comportamento bem-definido e possui uma identidade nica.

"

uma identidade nica. Identidade a propriedade de um objeto que distingue-o de outros objetos. Identidade no o nome do objeto, nem o endereo de memria onde ele est armazenado, um conceito de linguagens de programao que no visvel para os usurios. e um comportamento. O comportamento define como um objeto reage s requisies de outros objetos, em termos de mudanas de estados e passagem de mensagens.
Informtica - UFPA

"

27

28

Informtica - UFPA

Classe
!

Classes
!

a descrio de um grupo de objetos com propriedades similares (atributos), comportamento comum(operaes) , relacionamentos com outros objetos e semnticas idnticas.
Todo objeto instncia de uma classe. " Exemplo: int a; " Pessoa p;
"

Uma classe define a estrutura e o comportamento de qualquer objeto da classe, atuando como um padro para a construo de objetos. Objetos podem ser agrupados em classes.
Pessoa Atributos
nome:string idade:inteiro calcularIdade()

Enquanto um objeto individual uma entidade concreta que executa algum papel no sistema, uma classe captura a estrutura e comportamento comum a todos os objetos que esto relacionados.
Informtica - UFPA

Mtodos (Pessoa) Clarissa


Informtica - UFPA

(Pessoa) merson 30

(Pessoa) Romrio

29

Classes
!

Herana
!

A definio da classe consiste na definio dos atributos e operaes dos objetos desta classe; Um atributo uma caracterstica de uma classe. Atributos no apresentam comportamento, eles definem a estrutura da classe;

! !

um mecanismo existente no paradigma orientado a objetos que permite a reutilizao da estrutura e do comportamento de uma classe ao se definir novas classes; A herana tambm conhecida como relacionamento um; A classe que herda o comportamento chamada de subclasse e a que definiu o comportamento superclasse.
Pessoa
CIC

Operaes caracterizam o comportamento de um objeto, e so o nico meio de acessar, manipular e modificar os atributos de um objeto.

Professor

Aluno Informtica - UFPA

31

Informtica - UFPA

32

Herana (2)
!

Herana (3)
!

Herana de Atributos e de Mtodos


Veculo
placa registrar()

Herana de Relacionamentos
Veculo
N 1

Carro

Caminho

Todo carro e todo caminho possuem uma placa e uma operao registrar()

placa registrar()

Pessoa

pertence

Carro

Caminho

Todo carro e todo caminho pertencem a uma Pessoa

33

Informtica - UFPA

34

Informtica - UFPA

Herana (4)
!

Herana (5)
!

No h limites no nmero de nveis na hierarquia de herana.


Pessoa
CIC

A utilizao da herana facilita a reutilizao de cdigo porque o cdigo definido na superclasse pode ser utilizado automaticamente na subclasse;
Atravs da herana possvel representar a relao de generalizao/especializao entre duas classes:
" "

Professor

Aluno

a superclasse uma generalizao da(s) subclasse(s), e a subclasse uma especializao da(s) superclasse(s).

Pessoa
Professor Universitrio Professor Primrio Informtica - UFPA

Especializao 36 Professor Aluno

Generalizao
Informtica - UFPA

35

Tipos de Herana
! !

Tipos de Herana (2)


!

Herana estrita: as subclasses podem redefinir ou excluir propriedades herdadas da superclasse. Herana no estrita: as mudanas acima no so permitidas.
"

A subclasse pode : " Adicionar novas operaes:


- exemplo: na classe Professor a operao ministrarAula.
" Redefinir

Observao: se uma mudana de um tipo e/ou nome feita, pode caracterizar a subclasse de maneira diferente da superclasse. Pessoa
nome identificao endereo

uma operao existente.


Elipse

- exemplo: Um crculo um tipo especial de elipse cujo mtodo para calcular rea !*r*2.
" Remover

um comportamento. (pouco freqente) " Uma combinao das trs anteriores.

calcularArea

Livro

Crculo
calcularArea

37

nome identificao*

Aluno Informtica - UFPA

38

Informtica - UFPA

Tipos de Herana (3)


!

Tipos de Herana
!

Observaes:
"

Quando uma operao ou atributo redefinida em uma subclasse ele chamado de sobrecarregado (overloaded). Algumas linguagens de programao podem implementar a excluso de propriedades, no entanto, isto ocasiona um problema. No se sabe at onde a propriedade est sendo transmitida em uma hierarquia de generalizao. Na realidade em todas as linguagens onde existe alguma facilidade de cancelamento, a nica forma de verificar se alguma propriedade de uma classe ainda aceita em uma subclasse conferir cada uma das subclasses [TAK90].
Informtica - UFPA
!

"

"

A herana deve ser utilizada visando a reutilizao de comportamento. Ou seja, as classes derivadas devem se comportar como as superclasses. Para isso sempre deve existir uma hierarquia de Generalizao /Especializao entre as classes. Um objeto do tipo crculo pode ser usado no lugar de um objeto do tipo elipse porque todo crculo um tipo especial de elipse.

Elipse
calcularArea

Crculo
calcularArea

Crculos Elipses
Informtica - UFPA

39

40

Herana Mltipla
!

Herana Mltipla (2)


!

Herana mltipla a possibilidade de se definir uma subclasse com mais de uma superclasse.
CoisaQueVoa Animal

Outro Exemplo de Herana Mltipla

Professor

Aluno

Avio

Ave

Mamfero Professor Aluno

41

Ave herda de ambos, CoisaQueVoa e Animal


Informtica - UFPA

42

Informtica - UFPA

Herana Mltipla: Observaes


! !

Herana Mltipla: Observaes (2)


!

CoisaQueVoa
cor

Conceitualmente, a herana mltipla necessria para modelar o mundo real de maneira mais precisa; Na prtica, ela pode levar a problemas na implementao pois nem todas as linguagens de programao orientadas a objetos suportam herana mltipla; A
Animal
cor atributo

Em Java, uma interface especifica um conjunto de operaes que devem ser oferecidas por objetos que a implementarem.
package poo; public abstract interface InterfaceTest { public static final int CONSTANTE1 = 1; public static int CONSTANTE2 = 2; int CONSTANTE3 = 3; public abstract void metodo1(); public void metodo2(); }

A1
Ave

A2
!

Qual cor da ave ? B

Interfaces permitem a herana de tipos, no a herana de comportamento. Desta forma, no permitem a reutilizao de cdigo.
Informtica - UFPA

43

Informtica - UFPA

44

Polimorfismo
!

Polimorfismo
!

a habilidade de variveis terem mais de um tipo. Funes so ditas polimrficas quando seus operandos podem ter mais de um tipo.
Classificao de [Cardelli & Wegner, 1985]:
Polimorfismo

Coero: a linguagem de programao tem um mapeamento


interno entre tipos.
"

Exemplo: se o operador + definido para somar dois nmeros reais e um inteiro passado como parmetro ento o inteiro coargido para real.

Overloading (sobrecarga): permite que um nome de

Universal

Ad Hoc

funo seja usado mais de uma vez com diferentes tipos de parmetros. O compilador automaticamente chama a funo correta que deve ser utilizada.
"

Paramtrico

Incluso

Overloading

Coero

Exemplo: o operador + que pode ter 2 parmetros inteiros, 2 parmetros reais, 2 cadeias de caracteres (concatenao), etc. A instruo read(x) em Pascal onde x pode ser inteiro, real ou string. Informtica - UFPA

45

Informtica - UFPA

46

Polimorfismo
!

Polimorfismo
!

Em Orientao a Objetos : Professor


calcSalario()

Polimorfismo

Professor Universitrio
calcSalario()
!

Professor Primrio
calcSalario()

tipo de polimorfismo encontrado em linguagens orientadas a objetos. Todo objeto de uma subclasse pode ser usado no contexto de um superclasse. Exemplo: todo objeto do tipo crculo pode ser usado no lugar de um objeto do tipo elipse. Elipse /* Cdigo polimrfico */ calcularArea()
void main( ) { Elipse e; Circulo c; imprimir(e); imprimir(c); } void imprimir(Elipse eli) {.... }

de

Incluso:

Assim, pode-se adicionar um comportamento especfico (implementao) s subclasses de uma hierarquia de generalizao / especializao.
Informtica - UFPA

Crculo
calcularArea() Informtica - UFPA

47

48

Polimorfismo
!

Acoplamento (Binding)
!

Polimorfismo paramtrico ou parametrizao: a partir


de uma nica definio de uma funo ela pode trabalhar uniformemente. Tambm conhecido como genericity. Exemplo C++:
" "

uma associao feita pelo compilador (interpretador) entre um atributo e uma entidade.
"

Exemplo: acoplamento entre tipos e variveis.

/* Definio da Classe */ template class pilha <Tipo T> {


/* Estrutura de dados ... */

O acoplamento pode ser: " Esttico: se ocorre antes do tempo de execuo e


permanece inalterado durante a execuo do programa.
Exemplo: quando voc declara em Pascal que uma varivel do tipo integer;

" " " " " "

void empilhar( T ); T desempilhar( ); } /* Utilizao no cdigo Cliente */ pilha<int> pilhaInt; pilha<float> pilhaFloat; Informtica - UFPA

" Dinmico

execuo ou muda durante a execuo do programa.


Normalmente associado linguagens orientadas a objetos;

ou Atrasado: se ocorre durante o tempo de

49

50

Informtica - UFPA

Acoplamento (2)
!

Acoplamento (3)
!

Exemplo (Java):
" " " "

1 2 3 4

Elipse e; Circulo c; e := c; e.calcularArea( );

A atribuio da linha 3 dinamicamente acoplada, pois acopla o objeto e um tipo diferente de seu tipo originalmente declarado. Em princpio, seria uma violao atribuir um objetos de um tipo diferentes tipo a vrivel e, no entanto, como c (Circulo) subclasse de e (Elipse) essa atribuio vlida.
Qual o mtodo executado ? Crculo ou Elipse ?
Informtica - UFPA

A operao executada a de Circulo, porque o compilador em tempo de execuo verifica que a varivel aponta para um objeto desta classe; Em algumas linguagens o programador deve pedir explicitamente o acoplamento dinmico para uma mensagem em particular. Por exemplo, em C++ a operao deve ser declarada virtual na superclasse e redefinida na subclasse; Importante: Todas as operaes sobrecarregadas na classe derivada devem proporcionar semanticamente os mesmos servios oferecidos pela superclasse.
Informtica - UFPA

51

52

Classes Abstratas
!

Classes Abstratas (2)


!

Uma classe abstrata uma classe que no tem instncias diretas. Uma classe concreta uma classe que pode ter instncias. Em outras palavras se X uma classe abstrata o cdigo a seguir no pode ser executado: X objeto = new X(); Apesar disso, voc pode criar construtores de uma classe abstrata para que eles sejam chamados pelos construtores das subclasses. (Reutilizao) Em Java utiliza-se a palavra abstract para indicar uma classe abstrata:
"

O objetivo de criarmos classes abstratas encapsular outras classes com comportamento comum. Elas podem surgir naturalmente na modelagem ou serem criadas para promover o reuso. Alm disso, uma classe abstrata pode definir um protocolo para uma operao sem definir a implementao do mtodo.
" public

public abstract class Figure { ....


Informtica - UFPA

abstract class Figure { // inicio da class Figure " public abstract double area(); " public abstract double perimetro(); " }// fim da class Figure
54
Informtica - UFPA

53

Classes Abstratas (3)


!

Classes Abstratas (4)


!

Assim, voc pode declarar mtodos abstratos em uma classe abstrata apenas para especificar um protocolo comum de operaes. Toda subclasse concreta da classe abstrata deve fornecer uma implementao para TODOS os mtodos abstratos:
class Circle extends Figure { " protected double raio; " public Circle(double r) { raio = r;} " public double area() { return PI*raio*raio;} " public double perimetro() { return 2*PI*raio;} "}
"

Se uma subclasse de uma classe abstrata no implementa todos os mtodos abstratos ento ela tambm abstrata; e

Uma classe abstrata tambm pode ter mtodos concretos. Frequentemente, faz sentido mover o mximo de funcionalidade possvel para uma superclasse, seja ela abstrata ou no.

55

Informtica - UFPA

56

Informtica - UFPA

Delegao
! !

Delegao (2)
!

um outro mecanismo para reutilizao de cdigo; Normalmente ele utilizado em linguagens que no utilizam o conceitos de classes (Actor e Self). Nestas linguagens os objetos so chamados prottipos (prototypes) e cada um deles implementa um comportamento especfico.
Objeto A
Pessoal attr1 mtodos Compartilhada Pessoal attr1 mtodos Informtica - UFPA

Se o objeto A no implementa uma determinada mensagem ele delega (repassa) a mensagem para o objeto B. Se o objeto B implementa aquela mensagem ento ele a executa com os dados de A, seno ele a delega para seus delegatees .... Pode existir uma lista de objetos para os quais mensagens so delegadas, o que causa conflito assim como na herana mltipla. A soluo uma lista seqencial de objetos.
Informtica - UFPA

Objeto B
Compartilhada

57

58

Delegao (3)
!

Delegao (4)
!

A herana permite o compartilhamento de comportamento baseado em classes, enquanto que a delegao permite o compartilhamento baseado em objetos; A delegao um modo mais geral que a herana de estender a funcionalidade de uma classe, visto que existem muitas ocasies em que no conveniente usar a herana. Alm disso, a delegao permite que um objeto possa alterar suas respostas para pedidos de servios em tempo de execuo.
Informtica - UFPA

Segundo [Grand, 1998], qualquer extenso de uma classe que pode ser feita utilizando-se a herana, tambm pode ser feita com a delegao. Entretanto, a recproca no verdadeira; Em linguagens baseadas em classes este mecanismo tambm pode ser obtido. Isto feito atravs do repasse da mensagem para o outro objeto. Para isso necessrio que o objeto delegador do servio contenha uma referncia para o objeto responsvel pela execuo.
Informtica - UFPA

59

60

MetaClasses
!

MetaClasses: Vantagens
!

So classes cujas instncias tambm so classes. " Uma classe contm informao sobre os objetos, enquanto que uma metaclasse contm as informaes referentes classe. Dependendo da linguagem orientada a objetos :
Existe suporte explcito a metaclasses. Ex: ObjVLisp. " Existe suporte implicto a metaclasses. Ex: Smalltalk. " No existe suporte a metaclasses. Ex: C++ e Java.
"

1. Podem ser utilizadas para armazenar a informao em relao ao grupo de objetos.


"

Exemplo: o nmero de objetos instanciados a partir da classe, o valor mdio de uma propriedade calculada a partir dos valores especficos desta propriedade nas instncias, uma propriedade comum a todas as classes.
(Crculo) raio= 10 cor = preta
instncia

MetaCrculo
# de instncias = 2 pi = 3.1415
instncia

MetaClasse 61

instncia

Crculo
raio cor

Classe

instncia

Objeto
Informtica - UFPA

(Crculo) raio= 23 cor = azul

62

Informtica - UFPA

MetaClasses: Vantagens (2)


!

MetaClasses
(e
!

So utilizadas no processo de criao inicializao) das novas instncias de uma classe.


2.
"

importante frisar que o conceito de metaclasses na implementao tende a desaparecer. O nvel da metaclasse , frequentemente irrelevante para o programador tpico [TAK90]; Entretanto, o conceito de metaclasse utilizado em algumas metodologias de Anlise e Projeto Orientado a Objetos.

Exemplo: " Uma classe passa a ser tratada como um objeto que recebe uma mensagem solicitando a criao de objetos. Assim, o cdigo abaixo: Circulo c = new Circulo(); " corresponderia a enviarmos uma mensagem (new) a um objeto Crculo. Logo, assim com a classe especifica as operaes da interface pblica dos objetos, necessita-se de uma metaclasse para especificar as operaes da interface pblica das classes. 63
Informtica - UFPA

64

Informtica - UFPA

MetaClasses em Java
!

Consideraes Finais
!

Em Java o conceito de constructor e atributos e mtodos static, corresponde a unio do conceito de classes e metaclasses.
"

Orientao a Objetos:
"

Objetos; Classes; Mecanismo de Reutilizao de Cdigo: Herana ou Delegao; Polimorfismo (de incluso); Acoplamento Dinmico; MetaClasses;

Atributos Static: este modificador em atributos torna-os atributos da classe. Mtodos Static: da mesma forma, mtodos static pertencem a uma classe e no operam sobre instncias de uma classe. NomeDaClasse . MetodoStatic(Parametros) Por exemplo: double valor = Circulo.getPi();
Informtica - UFPA
!

"

"

" " "

A sintaxe para acessar metodo static :


" "

Linguagens de Programao, Metodologias, Notaes, etc.

65

66

Informtica - UFPA

Bibliografia
! ! ! ! ! ! ! ! ! ! !

Blair, G. et al. (Editors) Object-Oriented Languages, Systems and Applications, Pitman Publishing, 1991. Buzato, L. E., Rubira, C. M. F. Construo de Sistemas Orientados a Objetos Confiveis, Dcima Primeira Escola de Computao, Rio de Janeiro, Julho de 1998. Cardelli, L, and Wegner, P. On understanding types, data abstraction and polymorphism. Computing Surveys, 17(4):471-522, December 1985. Cornell, G., Horstmann, C. S. Core Java. Makron Books, So Paulo, 1998. Cesta, A. A., Rubira, C. M. F. Tutorial: A Linguagem de Programao Java, Campinas, junho de 1997. Flanagam, D. Java in a Nutshell, Second Edition, OReilly Associates, 1997. Grand, M. Patterns in Java, John Wiley & Sons, 1998. Meyer, B., Object-oriented software construction, Prentice-Hall, 1988. Oliva, Alexandre. Programao em Java. II Simpsio Brasileiro de Linguagens de Programao, Campinas, setembro de 1997. Takahashi, T. Programao Orientada a Objetos, Escola de Computao, So Paulo, 1990. Rubira, C. M. F. Tpicos Especiais em Engenharia de Software II, Universidade Estadual de Campinas, notas de aula, 1996.

67

Informtica - UFPA

You might also like