Académique Documents
Professionnel Documents
Culture Documents
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 Classes Abstratas Polimorfismo Delegao Acoplamento Dinmico MetaClasses
Bibliografia
Informtica - UFPA
Histrico
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
Informtica - UFPA
Histrico(2)
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)
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. Mais fceis de entender e manter.
Informtica - UFPA
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
Informtica - UFPA
e Binding Dinmico
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.
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
Sistemas baseados em interfaces grficas. Sistemas de tempo real. Software Bsico (sistemas operacionais, protocolos de comunicao, etc.) Software comercial Sistemas de Banco de Dados outros ....
10
Informtica - UFPA
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.
11
Informtica - UFPA
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
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.
13
Informtica - UFPA
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
14
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
15
P a r a d i g m a Procedual
Tipos de Dados Varivel Funo / Procedimento Chamada de Funo
Paradigma Objetos
de
16
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:
Podemos afirmar que um objeto um conceito, abstrao, ou entidade com limites bem definidos e um significado para a aplicao.
Informtica - UFPA
17
Objetos
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.
18
Informtica - UFPA
Objetos
Operao 1
Exemplo
O per
ao
O per
Atributos
era o 3 O per a o 4
Objeto geomtrico
cor: posio: selecionar(p: Ponto): boolean girar(ngulo: real) mover(delta: coord)
ao 2
19
Op
Informtica - UFPA
Objetos - Caractersticas
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. As operaes so chamadas de mtodos. Um objeto comunica-se com outro atravs de mensagens que identificam operaes a serem realizadas no segundo objeto. 20 Informtica - UFPA
Objetos - Caractersticas
Comunicao entre Objetos
O per ao 5
Operao 1
O per ao 5
21
Informtica - UFPA
er Op 3
o4
Op
e ra
er Op 3
Atributos
a o4 Op e ra o
a O per 2 o
Operao 1
Atributos
a O per 2 o
Encapsulamento
Esconder os detalhes da implementao de um objeto chamado Encapsulamento. A capacidade de um objeto possuir uma parte privada, acessvel somente atravs dos mtodos definidos na sua classe. Benefcios:
O cdigo cliente pode usar apenas a interface para a operao. A implementao do objeto pode mudar, para corrigir erros, aumentar performance, etc sem que seja necessrio modificar o cdigo do cliente. A manuteno mais fcil e menos custosa. Cria um programa legvel e bem estruturado Informtica - UFPA
22
Exemplo de 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]); } }
23
Informtica - UFPA
Exemplo de 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)); } }
24
Informtica - UFPA
Exemplo de Encapsulamento
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
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;
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.
26
Informtica - UFPA
Objetos
Um objeto possui um estado, exibe um comportamento bem-definido e possui uma identidade nica.
27
Informtica - UFPA
Classe
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;
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
28
Classes
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()
(Pessoa) merson 29
(Pessoa) Romrio
Classes
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. Operaes caracterizam o comportamento de um objeto, e so o nico meio de acessar, manipular e modificar os atributos de um objeto.
30
Informtica - UFPA
Herana
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 relac. -um. A classe que herda o comportamento chamada de subclasse e a que definiu o comportamento superclasse.
Pessoa
CIC
Professor
31
Herana
Herana de Atributos
Veculo
placa registrar()
Carro
Caminho
Todo carro e todo caminho possuem uma placa e uma operao registrar()
32
Informtica - UFPA
Herana
Herana de Relacionamentos
Veculo
placa registrar()
N 1
Pessoa
pertence
Carro
Caminho
33
Informtica - UFPA
Herana
Professor
Aluno
Professor Universitrio
34
Herana
A utilizao da herana aumenta 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:
a superclasse uma generalizao da(s) subclasse(s), e a subclasse uma especializao da(s) superclasse(s).
Tipos de Herana
Herana estrita: as subclasses podem redefinir ou excluir propriedades herdadas da superclasse. Herana no estrita: as mudanas acima so permitidas.
Observao: se uma mudana de um tipo e/ou nome feita, pode caracterizar a subclasse de maneira diferente da superclasse. Pessoa
nome identificao endereo
Livro
36
nome identificao*
Tipos de Herana
redefinir
Exemplo: Um crculo um tipo especial de elipse cujo mtodo para calcular rea r2. Elipse remover um comportamento. (pouco frequente) calcularArea
uma
Crculo
calcularArea
37
Informtica - UFPA
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].
38
Informtica - UFPA
Tipos de Herana
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 circulo um 39 tipo especial de elipse.
Elipse
calcularArea
Crculo
calcularArea
Crculos Elipses
Informtica - UFPA
Herana Mltipla
Herana mltipla a possibilidade de se definir uma subclasse com mais de uma superclasse.
CoisaQueVoa Animal
Avio
Ave
Mamfero
40
Herana Mltipla
Empregado
Cliente
Empregado Cliente
41
Informtica - UFPA
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
A1
Ave
A2 B
42
Informtica - UFPA
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]:
Polimorfismo
Universal
Ad Hoc
Paramtrico
Incluso
Overloading
43
Polimorfismo
Exemplo: se o operador + definido para somar dois nmeros reais e um inteiro passado como parmetro ento o inteiro coargido para real.
funo seja usado mais de uma vez com diferentes tipos de parmetros. O compilador automaticamente chama a funo correta que deve ser utilizada.
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
44
Polimorfismo
Professor Universitrio
calcSalario()
Professor Primrio
calcSalario()
Assim, pode-se adicionar um comportamento especfico (implementao) s subclasses de uma hierarquia de generalizao / especializao.
Informtica - UFPA
45
Polimorfismo
void empilhar( T ); T desempilhar( ); } /* Utilizao no cdigo Cliente */ pilha<int> pilhaInt; pilha<float> pilhaFloat; Informtica - UFPA
46
Polimorfismo
Polimorfismo
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:
Crculo
calcularArea() Informtica - UFPA
47
Acoplamento (Binding)
uma associao feita pelo compilador (interpretador) entre um atributo e uma entidade.
Dinmico
48
Informtica - UFPA
Acoplamento
Exemplo (Java):
1 2 3 4
49 Elipse ?
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
Informtica - UFPA
Acoplamento
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. 50 Informtica - UFPA
Classes Abstratas
Uma classe abstrata uma classe que no tem instncias diretas, mas cujas subclasses podem ter instncias. Uma classe concreta uma classe que pode ter instncias. Em outras palavras se X uma classe abstrata vc no pode executar o cdigo a seguir: 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:
51
Informtica - UFPA
Classes Abstratas
O objetivo de criarmos classes abstratas para 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
abstract class Figure { // inicioFigure public abstract double area(); public abstract double perimetro(); }// fimFigure
52
Informtica - UFPA
Classes Abstratas
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;} }
53
Informtica - UFPA
Classes Abstratas
Qualquer classe com pelo menos um mtodo abstract automaticamente abstrata e deve ser declarada como tal. Se uma subclasse de uma classe abstrata no implementa todos os mtodos abstratos ento ela tambm abstrata. 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. Uma classe pode ser abstrata sem ter mtodos 54 abstratos. Isto evita que a classe seja instanciada. - UFPA Informtica
Delegao
um outro mecanismo para compartilhamento de cdigo. Tambm conhecido como composio. Normalmente ele utilizado em linguagens que no utilizam o conceitos de classes. 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
Objeto B
Compartilhada
55
Delegao
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 sequencial de objetos. Exemplos de linguagens: Actor e Self.
Informtica - UFPA
56
Delegao
A herana permite o compartilhamento 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.
57
Informtica - UFPA
Delegao
Segundo [Grand98], 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
58
1. Se uma subclasse precisar esconder um mtodo ou varivel herdado da subclasse. Na maioria das linguagens orientadas a objetos no existe nenhum mecanismo para permitir isto, logo deve-se evitar a herana.
Lista
addInicio(Item) addFinal(Item) remInicio remFinal
Pilha
empilhar -->addInicio(Item) desempilhar --> remInicio
59
Informtica - UFPA
60
Informtica - UFPA
2. Quando voc tem um cdigo a ser reutilizado entre duas ou mais classes e no existe herana entre elas:
public class ClienteJuridico extends Cliente { private Endereco _endereco; public void setEndereco(numero, rua, cidade, estado, cep) { _endereco.setData(numero, rua, cidade, estado, cep) ;} } public class Fornecedor { private Endereco _end; public void setEndereco(numero, rua, cidade, estado, cep) { _end.setData(numero, rua, cidade, estado, cep) ; } }
61
Informtica - UFPA
62
Informtica - UFPA
A herana implica em uma acomodao fraca dos objetos que mudam de classe ao longo do tempo: Um aluno est frequentemente mudando de subclasses, ou seja, hoje ele um Bolsista, depois de um ms ele um Estagirio, e assim por diante.
Informtica - UFPA
63
Para modelarmos isso, seria necessrio que o objeto Bolsista existente fosse destrudo do sistema e um novo objeto Estagirio fosse criado, entretanto deveramos ter antes copiado os atributos comuns de um objeto para outro. Alm disso, quando um objeto se transmuta, ele perde todo o seu histrico. Isso torna a mudana mais complexa. A soluo usar a delegao, visto que ela se ajusta melhor mudanas freqentes. Quando um objeto precisa de responsabilidades adicionais especficas do papel, basta adicionar um novo papel.
Informtica - UFPA
64
Desta forma, estaremos usando a composio (uma pessoa e seus papis) e a herana(papis especializados desempenhados por um aluno).
public class Aluno { // Atributos comuns de um Aluno //Um novo atributo adicionado que corresponde // a um apontador para uma lista de papis // desempenhados pelo aluno Vector _papeis; }
65
Informtica - UFPA
66
Informtica - UFPA
MetaClasses
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.
MetaClasse 67
instncia
Classe
instncia
Objeto
Informtica - UFPA
MetaClasses
Vantagens 1. As classes 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. MetaCrculo
# de instncias = 2 pi = 3.1415
instncia
Crculo
raio cor
68
MetaClasses
(e
Exemplo: - Uma classe passa a ser tratada como um objeto que recebe uma mensagem solicitando a criao de objetos. Assim, o cdigo abaixo corresponderia a : Circulo c = new Circulo(); 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. 69
Informtica - UFPA
MetaClasses
importante frisar que o conceito de metaclasses na implementao tende a desaparecer. O ponto a destacar que o nvel da metaclasse , frequentemente irrelevante para o programador tpico [TAK90]. O conceito de metaclasse utilizado em algumas metodologias de Anlise e Projeto Orientado a Objetos.
70
Informtica - UFPA
MetaClasses em Java
Em Java o conceito de constructor e atributos e mtodos static, corresponde a unio do conceito de classes e 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.
71
Informtica - UFPA
MetaClasses em Java
public class Circulo { static final double Pi = 3.14; int raio; Color cor; public Circulo(int raio) {this.raio = raio; } public static double getPi() { return Pi;} public double getArea() { return Pi*raio*raio;} } (Crculo) raio= 10 cor = preta
instncia
MetaCrculo
# de instncias = 2 pi = 3.1415
instncia
Crculo
raio cor
72
MetaClasses em Java
Um mtodo static pode ser chamado sem que seja necessrio criar um objeto da classe. Exemplo:
public class TestRan { static public void main(String[] args) { double d, soma = 0; int i=0; while (i<100) { d = Math.random(); soma += d; i++; } System.out.println(" A media e "+(soma/100));} }
73
Informtica - UFPA
MetaClasses em Java
Um mtodo static s pode acessar atributos static. Como o mtodo main static ele no pode acessar atributos no static da classe. Por isso, no mtodo main frequentemente voc dever criar objetos da prpria classe para que assim voc possa referenciar atributos desta classe.
class Application{ public static void main(String[] args) { Application a = new Application(); } }
74
Informtica - UFPA
Bibliografia
75
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. Cornell, G., Horstmann, C. S. Core Java. Makron Books, So Paulo, 1998. Oliva, Alexandre. Programao em Java. II Simpsio Brasileiro de Linguagens de Programao, Campinas, setembro de 1997. 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.
Informtica - UFPA
Bibliografia
Grand, M. Patterns in Java, John Wiley & Sons, 1998. Meyer, B., Object-oriented software construction, Prentice-Hall, 1988. Flanagam, D. Java Examples in a Nutshell, First Edition, OReilly Associates, 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.
76
Informtica - UFPA