Вы находитесь на странице: 1из 42

Programao Orientada a Objeto em JAVA Fundamentos

Programao Orientada a Objeto


Prof. Udo Fritzke Jr.
Curso de Cincia da Computao
PUC-Minas, Campus de Poos de Caldas

Histria
1991: Projeto de uma linguagem (na Sun, por
Patrick Naughton e James Gosling) para
equipamentos de consumo (Projeto Green)
Linguagem enxuta
e independente de arquitetura de hardware

Independncia de arquitetura : inspirao no


UCSD Pascal
Mquina Virtual: mquina hipottica para a qual
gerado cdigo intermedirio (ou bytecode)
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

Histria
Orientao a objeto: inspirao no C++, devido a
experincia com Unix
Primeiros prottipos:
Controle remoto (com poder de processamento de
uma Sparc Station)
Comutador de TV a cabo

1994 : A empresa que comercializou o projeto


Green (First Person, Inc.) foi dissolvida
Construo de um navegador (HotJava) capaz de
entender os bytecodes do Java
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

Histria
1995: incio do uso de Java na Internet
Por ser uma linguagem multi-plataforma e incluir
aspectos especficos como

Programao em rede
Conectividade com BD
Multi-processamento
Segurana, etc

Uso de bytecodes Java no Netscape 2.0 : incio


da popularizao da linguagem
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

Histria
Verses do Java SE:
J2SE 1.02 de 1996
Invocao remota de mtodos (objetos distribudos)
Conectividade com bancos de dados

J2SE 1.1 de 1997


Modelo de componentes JavaBeans

J2SE 1.2 de 1998


Toolkit de GUI (Swing)

J2SE 1.3, J2SE 1.4, J2SE 5


Atualmente: Java SE 7
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

Plataformas
Java SE (Standard Edition)
Para aplicaes em desktops e servidores
java.sun.com/javase/

Java EE (Enterprise Edition)


Para construo de aplicaes empresariais
orientadas a servio (SOA Service Oriented
Architectures)
java.sun.com/javaee/

Java ME (Micro Edition)


Para aplicaes em dispositivos mveis
java.sun.com/javame/index.jsp
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

Linguagem C
/* cdigo-fonte C */
int main()
{
Mova(personagem1, ...);
system("pause");
}

void outras_funcoes()
{ int outras_funcoes()
{ ...
...
}
}

ou

Compilador

ou
Arquivos com
cdigo-objeto
(extenso .obj)

01011101
10010101
10111010
10010011

01011101
01011101
10010101
10010101
10111010
10111010
10010011
10010011

Editor de ligaes
(linkeditor)
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

Arquivo
com cdigo
executvel
(extenso .exe)
01011101
10010101
10111010
10010011

Exclusivo para
uma arquitetura
especfica
7

Mquina Virtual Java (JVM)


/* cdigo-fonte Java */
class Personagem
{
int nr_passos;
Personagem(int np){}
void mova(){}
}

class OutraClasse()
{ int outras_funcoes()
{ ...
...
}
}

(extenso .java)

Compilador
Arquivos com
bytecode

Carga e
execuo
de classes
Programao Orientada a
Objeto

01011101
10010101
10111010
10010011

01011101
01011101
10010101
10010101
10111010
10111010
10010011
10010011

(extenses .class ou .jar)

Mquina Virtual
Java
Udo Fritzke Jr. PUC Minas

Mquina Virtual Java (JVM)


JVM Java Virtual Machine
Trata-se de um programa que executa
bytecodes
Para isso, a JVM prov um ambiente de
execuo com componentes como
Carregador de classes
Verificador de bytecode
Interpretador de bytecode / compilador JIT
Gerenciador de memria (coletor de lixo)
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

BlueJ
Ferramenta para desenvolvimento em Java
que tem como objetivo oferecer um contato
direto do programador com objetos
Foi desenvolvida pela Deakin University,
Melbourne (Australia) e pela University of Kent
at Canterbury (Reino Unido)
www.bluej.org

Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

10

Classes
Forma geral de uma definio de classe em Java
class nome-classe {
tipo var-instancia1;
Atributos
tipo var-instancia2;
tipo var-instanciaN;
tipo nome-mtodo1 (lista-de-parametros) {
corpo do mtodo;
}
tipo nome-mtodo2 (lista-de-parametros) {
corpo do mtodo;
}
tipo nome-mtodoN (lista-de-parametros) {
corpo do mtodo;
}
}
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

Mtodos

11

Atributos
Atributos so variveis de instncia de uma
classe
So declaradas como variveis (similar ao C)
tipo nome_var_instancia;
Tipo primitivo (int, long,
float, double,
byte,
char, etc.) ou
Tipo classe (Produto,
String, etc.)
Programao Orientada a
Objeto

Nome (ou identificador)


da varivel (preo, cdigo,
etc.)

Udo Fritzke Jr. PUC Minas

12

Atributos
O contedo destas variveis definem valores
para os atributos de uma instncia de classe
Ao conjunto de valores dos atributos de uma
classe podemos chamar de estado do objeto

Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

13

Mtodos
Os mtodos de uma classe definem o
comportamento dos objetos de uma classe
Por isso so implementados de forma similar a
funes em C
Mtodos so implementaes das operaes
definidas em um modelo de classes

Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

14

Mtodos
T

Metodo(T1 p1, T2 p2, ...){


... Texto ...

onde
T o tipo do valor retornado (return valor;)
T1, T2,... so os tipos dos parmetros
formais p1, p2 , ...
Texto define o comportamento (instrues e
definio de variveis locais) do mtodo
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

15

Classe de Objetos
Diagrama UML (Unified Modeling Language) para classes
nome da classe
atributo
operao/mtodo

classe de objetos

Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

16

Classe de Objetos
Diagrama UML para classes
nome da classe
atributos
operaes/mtodos

classe de objetos
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

17

Objetos
Um objeto uma instncia de uma classe
Em um programa em Java, um objeto
normalmente representado como uma
estrutura de dados e funes mantidas na
memria do sistema

Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

18

Objetos
A partir de uma classe podem ser instanciados
tantos objetos quanto forem necessrios
Desde que as restries de espao em memria
sejam respeitados

Os objetos reaproveitam as variveis e os


mtodos definidos na sua classe

Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

19

Construo de Objetos
Carregar o exemplo BlueJ_exec_1

Classe

Objeto (ou instncia de classe)

BlueJ
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

BlueJ_exec_1
20

Construo de Objetos
class Produto
{
Atributos / Propriedades /Caractersticas
float preco;
String tipo;
String descricao;
Mtodos/Operaes
String codigo;
Produto p;
Produto(String tip, String descr){
tipo=tip;
descricao=descr;
}
String getDescricao(){ return descricao; }
void setDescricao(String d) {descricao = d;}
String getTipo(){return tipo;}
void setTipo(String t){tipo = t;}
...
BlueJ BlueJ_exec_1
}
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

21

Construo de Objetos
Observar o comando de instanciao de classes

O operador new do Java cria uma nova instncia de


uma classe
BlueJ
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

BlueJ_exec_1
22

Construo de Objetos
Instanciar a classe Produto algumas vezes e
observar as diferenas entre classe e objeto
(instncia de classe):
A classe Produto define as caractersticas de
um produto
As instncias (objetos) representam os
produtos propriamente ditos (livros, CDs,
DVDs, etc.)
BlueJ
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

BlueJ_exec_1
23

Construo de Objetos
Observar os estados de cada instncia utilizando o
comando Inspect do BlueJ

Neste exemplo, cada Produto tem um estado,


definido por valores de seus atributos
BlueJ
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

BlueJ_exec_1
24

Construo de Objetos
Quando um objeto criado pelo operador new,
executado o mtodo construtor definido na classe
do objeto

BlueJ
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

BlueJ_exec_1
25

Construo de Objetos
Nos mtodos construtores so definidos
procedimentos de inicializao do objeto, como por
exemplo
Definio de valores iniciais de atributos
Alocao de recursos que o objeto necessita (arquivos,
conexes com banco de dados, etc.)
Criao de outros objetos, etc.

Estes mtodos levam o nome da sua classe


BlueJ
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

BlueJ_exec_1
26

Construo de Objetos
class Produto
{
Mtodos construtores
...
Produto(String tip, String descr)
{
tipo=tip;
descricao=descr;
}
Produto(String tip, String descr, float pr)
{
tipo=tip;
descricao=descr;
preco = pr;
codigo = "1";
}
...
BlueJ BlueJ_exec_1
}
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

27

Construo de Objetos
Se no for programado um construtor para uma
classe, o Java providenciar um construtor padro,
sem parmetros
Quando o objeto criado com new o construtor
padro inicializar
todos os campos numricos com zero
todas as variveis objeto referenciaro null
e todas as variveis lgicas sero false

BlueJ
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

BlueJ_exec_1
28

Construo de Objetos
Desta forma, o programador pode definir variveisobjeto e inicializ-las com novos objetos
Uma varivel-objeto uma varivel, cujo tipo uma
classe

Variveisobjeto

class Teste
{
Teste(){
Produto p1 = new Produto("Eletrodomestico",
"Liquidificador");
Produto p2 = new Produto("Eletrodomestico",
"Liquidificador", 100.00F);
}
Tipo das
BlueJ BlueJ_exec_1
}
variveis

Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

29

Responda
De acordo com o cdigo-fonte da classe
Produto, quais comandos de instanciao de
objeto so corretos?
a) Produto p1 = new Produto("Eletrodomestico", "Liquidificador");
b) Produto p2 = new Produto("Eletrodomestico", "Liquidificador",
100.00F);
c) Produto p3 = new Produto("Eletrodomestico");
d) Produto p4 = new Produto();
BlueJ
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

BlueJ_exec_1
30

Referncia para Objeto


A declarao e a construo de objetos so coisas
distintas
A declarao associa um tipo a um identificador
Produto p1
Uma declarao de uma varivel de tipo classe, ou
varivel-objeto, define uma referncia de objeto
A referncia o endereo de um objeto na
memria
Uma declarao de objeto no inicializada associa ao
identificador uma referncia null
BlueJ
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

BlueJ_exec_1
31

Referncia para Objeto


Declarao no inicializada
de varivel-objeto
Produto p1;

p1

null

Declarao inicializada
Produto p2 =
new Produto(
"Limpeza",
"Detergente");
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

p2

BlueJ

BlueJ_exec_1
32

Operador .
Permite o acesso a atributos e mtodos de
instncia de uma classe
referncia-a-objeto . nome-atributo
referncia-a-objeto . nome-mtodo
p2.preco = 155;
p2.setDescricao(pneu 195/55/r15);

BlueJ
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

BlueJ_exec_1
33

Chamada de mtodos
Observar o uso dos mtodos get e set a partir de
instncias da classe Produto
Tente invoc-los a partir da classe
Tente invoc-los a partir de uma instncia

Os mtodos so invocados a partir de um objeto


O BlueJ mostra com isso que precisamos de uma
instncia de uma classe para executar um mtodo

BlueJ
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

BlueJ_exec_1
34

Chamada de mtodos
Esta instncia considerada como o objeto alvo do
mtodo
Quando um mtodo executado, as variveis de
instncia pertencem a este objeto alvo, neste caso
chamado de instncia corrente
Posteriormente veremos que alguns mtodos no
precisam de um objeto alvo: os mtodos estticos

Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

35

Objeto
Representao UML
nome da instncia

nome da classe
do objeto

atributos

Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

36

Responda
Quantas referncias para objetos so definidas
pelo trecho de programa em Java abaixo?

BlueJ
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

BlueJ_exec_1
37

Responda
Quantas instncias de objeto so criadas pelo
trecho de programa em Java abaixo?

BlueJ
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

BlueJ_exec_1
38

Responda
Quantos objetos alvo so manipulados pelas
chamadas de mtodo do trecho de programa
em Java abaixo?

BlueJ
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

BlueJ_exec_1
39

Responda
Quais das afirmaes sobre classes e objetos abaixo so
CORRETAS?
I.
II.

O estado de um objeto definido pelos valores dos atributos do objeto.


O estado de um objeto pode ser alterado pelos mtodos da classe do
objeto.
III. O nmero de objetos de uma classe que podem ser instanciados
limitado a um objeto por classe.
IV. As operaes de uma classe de objetos podem ser utilizadas para definir
o comportamento dos objetos desta classe.
V. Dois objetos que tm estados iguais sempre se referem a mesma
instncia da classe.
VI. Uma classe de objetos pode ser instanciada apenas uma vez em um
programa Java.
Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

40

Bibliografia
Barnes, D. J., Klling, M.. Programao orientada a
objetos com Java Uma introduo prtica usando o
BlueJ. 4a. Edio. Pearson-Prentice Hall. Captulo 2.
2009.
Horstmann C. S, Cornell, G.. Core Java 2, Volume 1
Fundamentos. Makron Books. Captulo 4. 1999.
Cornell, Gary; Horstmann, Cay S. Core Java - Volume
1 - Fundamentos - 8 Ed. So Paulo. Pearson
Education do Brasil. Captulo 4. 2010.
Programao Orientada a
Objetos

Udo Fritzke Jr. - PUC-Minas

41

Material Complementar
Tutoriais Java:
http://docs.oracle.com/javase/tutorial/
http://en.wikipedia.org/wiki/Java_virtual_machi
ne

Programao Orientada a
Objeto

Udo Fritzke Jr. PUC Minas

42

Вам также может понравиться