Você está na página 1de 41

Programao Orientada a

Objetos

quarta-feira, 2 de maio de 2012

Conceitos
Orientao

a Objetos: Conceito e

Vantagens

Metodologias
Orientao
Classes
quarta-feira, 2 de maio de 2012

da OO

a Objetos

Introduo

Paradigmas de Programao
Programao Estruturada
Procedimentos e Funes. Ex.: C e Pascal.
Compostos de: seqncia, deciso e
iterao

Programao Orientada a Eventos

RAD.

Ex: Delphi e Visual Studio.


Programao Orientada Objetos


Foco em classes (atributos e mtodos)
comunicao entre classes.

quarta-feira, 2 de maio de 2012

Introduo
Programao funcional
Lisp
Programao Orientado
Java(AspectJ)

quarta-feira, 2 de maio de 2012

a aspecto

Conceito
Programao

Orientada a Objetos um
paradigma de Anlise, Projeto e
Programao que baseado na relao
entre objetos que iro compor o
sistema.

quarta-feira, 2 de maio de 2012

Conceitos
Linguagens

OO: C++, Java, C# , ObjectPascal, Ruby, Python.

Reuso de cdigo
Encapsulamento
Acoplamento
quarta-feira, 2 de maio de 2012

Conceitos
Anlise:
Investigar o que tem de ser
Projeto:
Planejar como ser feito.
Implementao:
Colocar a mo na massa.
quarta-feira, 2 de maio de 2012

feito.

Objeto

objeto uma representao


de algo que seja real ou
abstrato que contenha traos
bem definidos.

quarta-feira, 2 de maio de 2012

Vantagens

Facilidade de manuteno.
Reusabilidade.
Simplicidade.
Agilidade.
quarta-feira, 2 de maio de 2012

Principais Elementos
Classes
Defini a estrutura do objeto
Objetos contm:
Atributos(Definio de seus traos,
caractersticas)

Mtodos - Comportamentos
Construtores - Criar um objeto
quarta-feira, 2 de maio de 2012

Exemplo de Objetos

Objetos:

Mesa, Cadeira, Pessoa, Carro,


Conta bancaria, Clima

E os traos??
Como classificar objetos:
Objetos com os mesmo traos

recebem a mesma classificao.

Os

objetos podem ser concretos ou


abstrato:

Concretos: pessoa, carro,


Abstratos: conta, msica
quarta-feira, 2 de maio de 2012

casa

Linguagem Java
Poderosa
Abrangente
Hbrida - Compilada / Interpretada
Funciona em qualquer equipamento virtuais

quarta-feira, 2 de maio de 2012

Mquinas

Linguagem Java

Ciclo de funcionamento:
cdigo fonte --> compilador

--> bytecode(sada)
--> execuo(mquina virtual)

quarta-feira, 2 de maio de 2012

1.02
JavaJava1.02
1996
250 classes
Lenta.

Java 5.0 (verses 1.5 e


Java Java
1.22 (verses
- 1.41.2 - 1.4)
Java 1.5
posteriores)
1998,2000,2002
2004
Java 6 - 2006
Java 7 - 2011
Atualmente esta na verso Java 1.7 ou Java 7

Nome e logotipo
in teressante s.
Divertida de u sar .
Muito s erros . Os
applets so o
destaque.

Java 1.1
Java
1.1
1997
500 classes

2.300 classes

Um pouco ma is rpida.

MUito mais rpida.

Mais recursos , mais


amigvel. Comeando a
se tornar muito
popular. Cdigo de GUI
mais adequado .

Po de (em al gumas situaes)


ser exec ut ada e m velocidades
condi zentes . Pro fi ssion al,
poderosa. Vem e m trs
verses: Micro Edition
(J2ME), Standard Edit ion
(J 2SE) e Enterprise Edition
.(J2EE). Torna - se a linguagem
preferida para novos
ap li cativos empresari ai s
(pr incipa lmente os baseados
na Web) e mvei s .

3.500 classes

Mais recursos, mais fcil de


desenvolver.
Alm d e ad ici ona r mais de n;lil
clas s es comp l ement ares, a Java
5. O (conhecida como "Tiger'j )
acre s cento u alteraes
sign if icativas prpria
l ingu agem, tornando-a maiS j fCil
(pe lo menos em teoria) p ar l os
prog r a madores e f ornecendo novo s
recu r sos que eram populare; em
ou tr a s linguagens.

( quarta-feira,
( ( (' 2( de( maio
( de
( 2012
( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (' ( ( ( ( \ ( ;

Problemtica
Era

uma vez em uma loja de softwares,


dois programadores que receberam as
mesmas especificaes e a ordem
"construam". O Gerente de Projetos Muito
Chato forou os dois codificadores a
competirem, prometendo que quem acabasse
primeiro ganharia uma daquelas modernas
cadeiras AeronTM que todo mundo no Vale
de Santa Clara tem.

quarta-feira, 2 de maio de 2012

quarta-feira, 2 de maio de 2012

As especificaes

te

m.
da

r?
".
m

quarta-feira, 2 de maio de 2012

Tanto

Larry, o programador de
procedimentos, quanto Brad, o adepto
da 0 0 , sabiam que isso seria fcil.

quarta-feira, 2 de maio de 2012

Larry
Como

j tinha feito milhares de vezes, Larry


comeou a escrever seus Procedimentos
Importantes. Ele criou rotate e playSound sem
demora.

rotate(shapeNum)
{ faz a
playSound(shapeNum) {usa

forma girar 360' }

shapeNum para
pesquisar que som AIF reproduzir e execut-lo}

quarta-feira, 2 de maio de 2012

envolvidos?"
aro que ele
o evento de Clicar.
ens, portanto, se
ra saber como Brad e
resposta
"

Brad

A cadeira

laptopclasses
de Brad para
dentro representar
do restauranteos
BradNocriou

elementos

;1

ou a
Brad criou uma classe para cada uma das trs formas
grficos:
ou rotate e
Square
11

II c Circle

rotate (
playSo1.;

o
}

/I c

-1

Triangle
r ota te ()

II cdigo pa ra gira r um tringul o

playSou
}

li

II de
}

IJ

/I c

'"'-I

I;

II c
II de

. J

11

rota t e

p laySound ()

fi cdigo pa ra rep ro duzi r o arquivo AIF

!I

I / de um tringulo

quarta-feira, 2 de maio de 2012

_.

_J

fi cdigo pa ra rep ro duzi r o arquivo AIF

I / de um tringulo

_J
Alterao na _. especificao
}

e
ixo

temos

eba na
d U\:n a am
, formatO e
f :nas.
Havera o
as outras on ba ela
. to CO\:n , .
a ame '
tela, .lun
ur'o ClICar n
_e
Quando o us s outras formas
bif
, O\:nO a
. de SO\:n .
<Tirara c
, .,... arquIVO
'
d\rz.i.ra UI"
repro
t;>

rry,
o. "E

e
.

!I

da
o que foi adicionado s especificaes
quarta-feira, 2 de maio de 2012

Larry

Larry

teve de rescrever o cdigo para tocar a


msica

quarta-feira, 2 de maio de 2012

classes e objetos

Brad

Usando o laptop de Brad na praia

va
um

Brad sorriu, tomou um gole de sua marguerita e criou uma


nova classe . s vezes o que ele mai s adorava na 00 era no
ser preciso mexer em cdigo que j tivesse sido testado e
Brad
criou
apenas extensibilidade
mais uma ...classe
para
distribudo.
"Flexibilidade,
" ele pensou,
refletindo sobre osabenefcios
da 00.
representar
Amoeba
Amoeba

rotate ()
II c digo pa ra girar a ameba

playSound ( )

s
e de
as.

1/ cdigo para repr odu z ir o n ovo


I I a rqui vo .hif de uma a me ba

Brad.
quarta-feira, 2 de maio de 2012

II
I;

de um ponto em uma extremidade, como um ponteiro de relgio .

m Wonderbread chamuscado. "Porm, hmmm. Eu poderia apenas


mento de rotao e, em seguida, embutir o cdigo do ponto de
atrapalhar nada." Mas uma voz longnqua em sua mente dizia:
te que as especificaes no mudaro novamente?"

Nova Mudana

ba na versa
da
ame
de rotaao

ponto
d'
de Larry e Bra .

Onde o
' a estar.
deve(1

quarta-feira, 2 de maio de 2012

de rotaao

da ameba

o que as
especificaes
esqueceram de
mencionar
adequadamente

Larry

Teve

de rescrever praticamente todo o


cdigo

quarta-feira, 2 de maio de 2012

testado e compilado das outras partes do programa. Para


fornecer classe Amoeba um ponto de rotao, ele adicionou
um atributo que todos os objetos Amoeba teriam. Ele
modificou, testou e di stribuiu (com tecnologia sem fio) o
programa revisto apen as durante o show de Bela Fleck.

Brad

Amoeba

in t x point;
int y point;
rotate() (
II c dig o para girar a ameba
/ 1 usa n do os pontos x e y

playSound()
II

cdigo para reproduzir o novo

1/ a rqui vo .hi f d e uma ameba

adeira, certo?
quarta-feira, 2 de maio de 2012

iJ

Mas ento quem


ganhou a cadeira?

quarta-feira, 2 de maio de 2012

do.

execuo, a JVM saber exatamente que mtod


importa. Como a ameba pode fazer algo diferente se ela "herda" sua funcionalidade da
Amoeba gire.
?

Soluo detalhada de BRAD

a ltima etapa. A classe Amoeba sobrepe os mtodos da classe Shape. Portanto, no tempo de
JVM saber exatamente que mtodo rotate( ) exec utar quando algum solicitar que o objeto
.

S
Fiz com que a classe Amoeba sobrepusesse os
mtodos rotate( ) e playSound( ) da superclasse
Shape. Sobrepor significa apenas que uma
subclasse redefinir um de seus mtodos herdados
quando precisar alterar ou estender o
comportamento desse mtodo.
Superclasse

Shape
ro ta te ()

(mais abstrata)

Superclasse
(mais abstrata)

Square

Square

.___1

"J
Subclasses
(mais especficas)

---I

Mtodos de
sobreposio

da ameba
playSound ( )
Il cdigo de
reproduo
de som
Ilespecfico
da ameba

.___1

Subclasses
(mais especficas)

o voc "diria" a um objeto Amoeba para fazer algo? No preciso chamar o procedimento,
- I
todo, e, em seguida, lhe informar que item girar?
quarta-feira, 2 de maio de 2012

"J

digo do programa referenciar (chamar) o mtodo rotate( ) no objeto Triangle. O resto do programa no
aber ou se importar realmente em como o tlingulo o far. E quando voc precisar adicionar algo novo
o programa, apenas criar uma nova classe para o novo tipo de objeto, para que os novos objetos tenham
eu prprio comportamento.

Sei como um objeto Shape


deve se comportar. Sua tarefa
me informar o que fazer e a
minha fazer acontecer. No

o
O

voc est aqui

quarta-feira, 2 de maio de 2012

!lo--

Classe
Quando

formos criar uma classe temos


de nos preocupar com duas coisas:

o
o

quarta-feira, 2 de maio de 2012

que o OBJETO conhece


que o OBJETO faz

Despertador

carrinhoCompras

a classe,
pense nos objetos
que
sero
criados
h o r a Alarme
con
t
e
doCarrinho
conhece
modoAl arme
Considere:
ad i c i o narAoCarrinho(
configurarHoraAlarme (
carJtur a1. Ho [CtAlarme ( )
a l a rmeEs!:..iC:1n f i g u rado(

faz

remove rDoCa r r i nho(


passarCai x a ( )

s o n e ca ( )

Boto

carrinhoCompras

ce

con t e doCarrinho
ad i c i onarAoCarrinho(
remove rDoCa r r i nho( )
passarCai x a ( )

quarta-feira, 2 de maio de 2012

conhece

faz

rtul o
cor
con fi g u r arCor ( )
conf i gu rarR t u l o( )
soltar( )
pressionarNovarnente (

Classe
O

que o OBJETO conhece chamamos


de variveis de instancia ou atributos

que o OBJETO faz chamamos de


mtodos a parte comportamental

quarta-feira, 2 de maio de 2012

, Aponte seu lpis

Atividade

Preencha com o que um objeto televiso


pode ter que saber e fazer.
Televiso

li
li

variveis de
instncia (estado)

mtodos
(comportamento)

I!
quarta-feira, 2 de maio de 2012

Interface

um grupo de mtodos sem nenhuma


implementao que d a liberdade de
se criar elementos que possam se
comunicar e trocar mensagens. Uma
classe em java pode-se utilizar de
vrias interfaces ao mesmo tempo.

quarta-feira, 2 de maio de 2012

Exemplo
public interface Veiculo {
boolean ligar();
boolean desligar();
}
public class Carro implements Veiculo{

public boolean ligar()


{...}

quarta-feira, 2 de maio de 2012

Herana

Forma

com que uma classe possa


herdar os comportamentos de outra
classe, no herda os atributos apenas
os mtodos. Em java existe apenas a
herana simples.

quarta-feira, 2 de maio de 2012

Exemplo
public abstract class Veiculo {
.....
}

public class Carro extends Veiculo


{

.....

quarta-feira, 2 de maio de 2012

Polimorfismo

Forma

de abstrao em que possvel


utilizar uma classe pai ou interface
como referencia do objeto. Com isso
possvel se utilizar de chamadas
polimorficas sem a necessidade de
identificar qual classe realmente se
esta trabalhando.

quarta-feira, 2 de maio de 2012

Exemplo
public interface Veiculo {
boolean ligar();
boolean desligar();
}
public class Carro implements Veiculo{

....

}
Main{

Veiculo c = new Carro();

c.ligar();

quarta-feira, 2 de maio de 2012

Exemplo
public abstract class Veiculo {
public boolean ligarVeiculo(){}
public boolean desligarVeiculo(){}
}
public class Carro extends Veiculo{

....

}
Main{

Veiculo c = new Carro();

c.ligar();

quarta-feira, 2 de maio de 2012

Atividade
Utilizando se da atividade anterior
(Carro,Motor) cria uma interface
Veiculo com os seguintes mtodos:

boolean ligar();

boolean desligar();

boolean andar();

boolean parar();

quarta-feira, 2 de maio de 2012