Você está na página 1de 75

Orientao a Objetos na Prtica

Entenda o contexto da modelagem de software e sistemas, descubra a


importncia e as principais caractersticas da orientao a objetos.
Andre Luiz Monteiro da Costa
andre.monteiro@prof.infnet.edu.br
2 2
O paradigma da Orientao a Objetos

Paradigma ==> forma de abordar um problema.

Surgiu no fim dos anos 60.

Hoje em dia, praticamente suplantou o paradigma


anterior, o paradigma estruturado...
3 3

Alan a!, um dos pais do paradigma da orientao a


objetos, formulou a c"amada analogia biol#gica.

$%omo seria um sistema de soft&are 'ue funcionasse


como um ser (i(o)
O paradigma da Orientao a Objetos
* *
Analogia +iol#gica

%ada $c,lula- interagiria com outras c,lulas atra(,s


do en(io de mensagens para reali.ar um objeti(o
comum.

Adicionalmente, cada c,lula se comportaria como


uma unidade aut/noma.
0 0

1e uma forma mais geral, a! pensou em como


construir um sistema de soft&are a partir de agentes
aut/nomos 'ue interagem entre si.

%om isso, ele estabeleceu os princ2pios da orientao


a objetos.
Analogia +iol#gica
6 6
Orientao a Objetos 3 4rinc2pios

5udo , um objeto.
Objeto 6 super (ari7(el8 arma.ena dados, mas se
pode fa.er re'uisi9es a esse objeto, pedindo 'ue ele
faa opera9es sobre si pr#prio.
:m teoria, 'ual'uer elemento conceitual do problema
pode ser representado como um objeto em um
programa ;:<.8 cac"orros, li(ros, s#cios,
empr,stimos, etc= .
> >

?m programa , uma coleo de objetos di.endo uns


aos outros o 'ue fa.er.

4ara fa.er uma re'uisio a um objeto (oc@ $manda
uma mensagem- para este objeto.
Aensagem 6 c"amada de um procedimento ou funo
pertencente a um objeto em particular.
Orientao a Objetos 3 4rinc2pios
B B

?m objeto pode ser composto por (7rios outros


objetos
?m no(o tipo de objeto pode ser criado a partir de
objetos e<istentes.
1essa forma, comple<idade pode ser adicionada a um
programa e escondida por tr7s da simplicidade de
uso dos objetos.
Orientao a Objetos 3 4rinc2pios
C C

5odo objeto tem um tipo.


Objeto 6 instDncia de uma classe, onde classe , um
sin/nimo de tipo.
A 'uesto mais importante relati(a a uma classe ,
$'ue mensagens eu posso en(iar para uma instDncia
dessa classe)-
Orientao a Objetos 3 4rinc2pios
E0 E0

5odos os objetos do mesmo tipo podem receber as


mesmas mensagens.
Orientao a Objetos 3 4rinc2pios

Fa figura abai<o, o objeto $%2rculo-


aceita 'ual'uer mensagem
endereada a uma $Gorma
Heom,trica-.
:ssa capacidade de $subtituio- de
um objeto por outro , um dos mais
poderosos conceitos em orientao a
objetos. ;Herana=
EE EE
Abstrao

Inclui os aspectos rele(antes de alguma


coisa, ignorando os menos importantes.
E2 E2
Objeto

1efinio8

?m conceito, com significado espec2fico em um


conte<to

4rop#sito8

Jepresentar uma entidade do mundo real

Objetos possuem8

Identidade

%aracter2sticas 'ue determinam seu estado

%omportamento espec2fico definido por um


conjunto de a9es
E3 E3
:<emplo
+eija3Glor
Identidade:: o beija-flor que vem ao meu jardim
Estado:
penas azuis
bico fino
vo rpido
Comportamento:
voar
piar
E* E*

4essoa
Identidade:: Mrio
Estado::
olhos pretos
nasceu em 16!"#!
pesa #!$%
mede 1&#!m
Comportamento::
andar
falar
comer
rir
:<emplo
E0 E0
5elefone
Identidade:: n'mero "(#6-!)*)
Estado::
azul
"+, -.z
tone
Comportamento::
tocar
discar
:<emplo
E6 E6
Jepresentao
Mrio
/stado
0caracter1sticas2
3omportamento
4dentidade
5ervi6os&
4nterface ou
protocolo
Objeto
E> E>

Implementao
!
Interface Kis2(el
!
4arte encapsulada ;escondida=
/stado do 7bjeto
0valor dos atributos2
4nterface da 3lasse
Objeto
EB EB
:ncapsulamento

A interface de um objeto , o 'ue ele con"ece e o 'ue


ele sabe fa.er, sem descre(er como o objeto con"ece
ou fa..

A interface de um objeto define os ser(ios 'ue ele


pode reali.ar ;mensagens 'ue ele recebe=.

?ma interface pode ter (7rias


formas de implementao.
EC EC
%lasse

$f7brica de objetos-.
20 20
%lasse
!
$G7brica de Objetos-.

Objetos8

!
So instDncias de alguma classe.
!
1e uma classe so id@nticos em sua interface e
implementao.
!
Diferem-se de outros por seu estado e sua
identidade.
2E 2E
8
Segundo a OAH8
%lasse L Fotao Hr7fica
22 22
Implementao em Ma(a
23 23
Implementao em Ma(a
2* 2*
%lasses

Classe
4nst9ncias
0objetos2
20 20
Implementao em Ma(a
26 26
Implementao em Ma(a
2> 2>
Atributos

1escre(em as caracter2sticas das instDncias de uma classe

Seus (alores definem o estado do objeto

O estado de um objeto pode mudar ao longo de sua e<ist@ncia

A identidade de um objeto, contudo, nunca muda


Funcionrio_Helena
:ome;.elena <eis
:asc;"*!11)6(
5alrio ; ,+!!!
4nformar5alrio
3alcular4dade
Funcionrio_Mrio
:ome;Mrio 5
:asc;16!"1)#!
5alrio ; =+!!!
4nformar5alrio
3alcular4dade
2B 2B
Ser(iosNOpera9es

Jepresentam o comportamento das instDncias de uma classe

%orrespondem Os a9es das instDncias de uma classe


Funcionrio_Helena
:ome;.elena <eis
:asc;"*!11)6(
5alrio ; ,+!!!
4nformar5alrio
3alcular4dade
Funcionrio_Mrio
:ome;Mrio 5
:asc;16!"1)#!
5alrio ; =+!!!
4nformar5alrio
3alcular4dade
4000
3000
Informar
Salrio?
2C 2C
Implementao em Ma(a
30 30
Ser(iosNA,todos

Alguns m,todos especiais8


!
%onstrutores L criam objetos de uma classe
!
1estrutores L destroem objetos de uma classe
3E 3E
4assos para a criao de um objeto

1eclarar uma refer@ncia para o objeto ;(ari7(el=


Funcionario funcionario;

%riar uma instDncia do objeto


funcionario = new Funcionario();
O sistema operacional aloca espao em memria para o novo
objeto e preenche os seus atributos com valores default !ero
para n"meros# null para refer$ncias# false para booleanos#
string va!ia para %trings.
32 32

Se "ou(er um m,todo construtor, este , in(ocado


O m&todo construtor & usado para alterar os valores default dos
atributos# possibilitando 'ue o objeto se torne dispon(vel para a
aplicao j) em um estado pr&-definido

Aodificao e<pl2cita do estado do objeto


funcionario.salario = 4000; //se atributo pblico
funcionario.gravaSalario(4000); // caso contrrio
* refer$ncia para o objeto pode ser usada para alterar o estado
dos atributos do objeto.
4assos para a criao de um objeto
33 33
Herana

1erivar caracter(sticas de gera+es precedentes.

,ermo & associado com uma das formas de


reutili!ao de soft-are.

*trav&s da herana# novas classes podem ser


derivadas das classes e.istentes.

* nova classe herda propriedades e m&todos da


classe base.

* nova classe tamb&m pode adicionar suas


prprias propriedades e m&todos.
3* 3*

4ara 'ue ser(e a "erana)


/onsidere a criao da /lasse0.
1ue m&todos esto dispon(veis para objetos da
/lasse02
Herana
30 30
%uponha 'ue a /lasse0 herda da /lasse*
1ue m&todos esto agora dispon(veis para objetos da
/lasse0 2
Herana
36 36

O objeto da classe0 tem agora dispon(veis os


m&todos da classe /lasse*# sem ter 'ue reescrev$-
los na /lasse0.

3m objeto da /lasse0 tamb&m & um objeto da classe


/lasse*.
Herana
3> 3>
Herana

4acilita a manuteno do cdigo5 Os m&todos no


so replicados. %e for necess)rio alterar o cdigo do
m&todo m67# basta alter)-lo na /lasse*.

* /lasse0 pode 8recusar8 parte da herana#


reimplementando os m&todos herdados#
sobrescrevendo-os.
3B 3B

O mtodo m3(), agora disponvel para objetos da
ClasseB, aquele implementado em ClasseB.
Herana
3C 3C

9)rias subclasses podem herdar da mesma


superclasse :erana %imples7.
Herana
*0 *0

:m Ma(a, no , permitido "erdar de mais de uma


classe :erana ;"ltipla7.
ERRADO!!!!
Herana
*E *E
Herana

* hierar'uia de herana pode ter v)rios n(veis

1ue m&todos esto agora dispon(veis para uma


inst<ncia de /lasse/2
*2 *2

Pode surgir a partir da refatorao de classes


e.istentes# de modo a eliminar a duplicao de
cdigo
Grande quantidade de atributos e mtodos dupliados...
Herana
*3 *3

=efatorao
5uperclasse
0caracter1sticas comuns2
5ubclasses
0caracter1sticas espec1ficas2
Herana
** **
%omposio

* classe cont&m refer$ncias para objetos de outras


classes5
!
>stas refer$ncias so tamb&m atributos da classe.

;aneira alternativa de estender a funcionalidade de


uma classe# agregando funcionalidades de outras
classes.

:erana . /omposio
? 3; . ,>; 3;
*0 *0

O mecanismo de herana nem sempre & apropriado

>stender funcionalidade atrav&s de herana pode no


ser 8natural85

!
3ma conta de investimento & uma conta banc)ria@
!
3ma conta de investimento no & uma Pessoa@
%omposio
*6 *6
8
Se um propriet7rio ti(er mais de um carro, a
informao ficar7 redundante.
%omposio
*> *>
8
?tili.ando uma cone<o de ocorr@ncia, o modelo
poderia ser mel"orado da seguinte forma8
%omposio
*B *B
4olimorfismo

8Programao Aen&rica8.

,rata objetos na mesma hierar'uia de classes como


se todos fossem objetos da superclasse.

,ornam o programa e.tens(vel5


!
4acilidade para adicionar novas classes.
*C *C
4olimorfismo

/onceito /have
Objetos das subclasses podem ser tratados como
objetos da superclasse
::Project2
A
m"#...$
m%#...$
+
m"#...$
m&#...$
! lasse B " #$! lasse A
#m objeto da lasse B
pode ser usado em qualquer
lugar onde um objeto da
lasse A esperado.
B A
00 00

,abelas 9irtuais
>+m"02 m"02
>+m102 m102
m?todo invocado opera6@o
3lasse >
::Project2
A
m"#...$
m%#...$
+
m"#...$
m&#...$
A+m=02 m=02
>+m"02 m"02
A+m102 m102
m?todo invocado opera6@o
3lasse A
4olimorfismo
0E 0E

/hamadas polimrficas permitem simplificar a lgica


condicional dos programas
%magine um sistema
onstrudo para
trabal&ar tanto em
'indo(s quanto em
)inu*
::Unit
MPindo&s
close#...$
maximi'e#...$
minimi'e#...$
mo(e#...$
open#...$
MQinu<
close#...$
maximi'e#...$
minimi'e#...$
mo(e#...$
open#...$
JWindows jWin;
JLinux jLin;
4olimorfismo
02 02
procedure TForm1.FormCreate(Sender: TObject;
be!in
i" SO#$Windows$ t%en
jWin :# JWindows.Create
e&se
jLin :# JLinux.Create;
end;
procedure TForm1.W'S(sCommand()ar 'essa!e: T'essa!e;
be!in
i" ('essa!e.w*aram # SC+',-,',./ t%en
i" SO#$Windows$ t%en
jWin.minimi0e
e&se
jLin.minimi0e
e&se i" ('essa!e.w*aram # SC+'12,',./ t%en
i" SO#$Windows$ t%en
jWin.maximi0e
e&se
jLin.maximi0e
e&se i" ('essa!e.w*aram # SC+CLOS/ t%en
Observe a quantidade
de l+gia
ondiional,
4olimorfismo
03 03

%oluo Polimrfica
::Unit
MPindo&s
close#...$
maximi'e#...$
minimi'e#...$
mo(e#...$
open#...$
Banela
close(...)
maximize(...)
minimize(...)
move(...)
open(...)
MQinu<
close#...$
maximi'e#...$
minimi'e#...$
mo(e#...$
open#...$
)ar
jan: Jane&a;
4olimorfismo
0* 0*
Observe a
aus$ncia de
lgica
condicional
procedure TForm1.FormCreate(Sender: TObject;
be!in
i" SO#$Windows$ t%en
jan :# JWindows.Create
e&se
jan :# JLinux.Create;
end;
procedure TForm1.W'S(sCommand()ar 'essa!e: T'essa!e;
be!in
i" ('essa!e.w*aram # SC+',-,',./ t%en
jan.minimi0e
e&se i" ('essa!e.w*aram # SC+'12,',./ t%en
jan.maximi0e
e&se i" ('essa!e.w*aram # SC+CLOS/ t%en
jan.c&ose
e&se i" ('essa!e.w*aram # SC+'O3/ t%en
jan.mo)e
e&se
in%erited;
end;
4olimorfismo
00 00

Observe ainda como seria f)cil acrescentar uma


janela ;O,C4 para o %un %olaris
::Unit
Banela
close(...)
maximize(...)
minimize(...)
move(...)
open(...)
MPindo&s
close#...$
maximi'e#...$
minimi'e#...$
mo(e#...$
open#...$
MQinu<
close#...$
maximi'e#...$
minimi'e#...$
mo(e#...$
open#...$
MSolaris
close#...$
maximi'e#...$
minimi'e#...$
mo(e#...$
open#...$
4olimorfismo
06 06
procedure TForm1.FormCreate(Sender: TObject;
be!in
i" SO#$Windows$ t%en
jan :# JWindows.Create
e&se i" SO # $Linux$ t%en
jan :# JLinux.Create
e&se
jan :# JSo&aris.Create;
end;
procedure TForm1.W'S(sCommand()ar 'essa!e:
T'essa!e;
be!in
i" ('essa!e.w*aram # SC+',-,',./ t%en
jan.minimi0e
e&se i" ('essa!e.w*aram # SC+'12,',./ t%en
jan.maximi0e
e&se i" ('essa!e.w*aram # SC+CLOS/ t%en
jan.c&ose
e&se i" ('essa!e.w*aram # SC+'O3/ t%en
jan.mo)e
e&se
in%erited;
end;
... e nada mudou
aqui,
!diionou-se mais
uma lin&a aqui...
4olimorfismo
0> 0>
0B 0B
Kiso Heral da ?AQ
0C 0C
1iagrama de %asos de ?so
)omportamento )omportamento
60 60
1iagrama de %lasses
Estrutura Estrutura
6E 6E
1iagrama de Se'R@ncia
)omportamento )omportamento
62 62
1iagrama de %olaborao
)omportamento )omportamento
63 63
1iagrama de :stados
Estrutura e )omportamento Estrutura e )omportamento
6* 6*
1iagrama de Ati(idades
)omportamento )omportamento
60 60
1iagrama de %omponentes
Estrutura Estrutura
66 66
1iagrama de Implantao
Estrutura Estrutura
6> 6>
1iagrama de A7'uina de :stado
6B 6B
8
1escre(e processo de neg#cio e flu<o de trabal"oS
8
Suportam comportamento paralo ;diferena para
flu<ograma=S
8
%emelhante Diagrama de >stadosD
1iagrama de Ati(idades
6C 6C
M o s t r a q u e m
f a z o q u
1iagrama de Ati(idades
>0 >0
8
*lue+ , www.bluej.org
8
-./ , www.uml.org
8
+ude , jude.c0ange1(ision.com
QinTs Uteis
>E >E
O 4ioneirismo do Infnet
O Infnet foi o pioneiro do ensino de Java no Rio de Janeiro,
ministrando curso desta tecnologia antes mesmo da Sun.
*B "
Ma(a Peb Applications
:nsinar 'uest9es a(anadas do desen(ol(imento de aplica9es Peb com a
linguagem de programao Ma(a e os frame&orTs mais usados no mercado.
I00*
*B "
Ma(a 4rogramming
:nsinar a programar em Ma(a para alunos 'ue j7 sabem programar em 'ual'uer outra
linguagem.
I002
*0 "
4rojeto de Sistemas e Orientao a Objetos com ?AQ
:nsinar conceitos de orientao a objetos e sua utili.ao no processo de
desen(ol(imento de soft&are usando ?AQ.
I000
Horas Fome do curso %#digo
Formao Desenvolvedor Java
>2 >2
A Gormao %ompleta do Infnet
32 "
Ma(a PorTs"op
%olocar em pr7tica o con"ecimento a(anado de desen(ol(imento
de aplica9es Ma(a.
I062
32 "
Ma(a Aobile
:nsinar programao Ma(a para dispositi(os m#(eis, como
celulares e "and "elds.
I060
2* "
Ma(a Securit!
:nsinar conceitos a(anados de segurana em Ma(a para sistemas
desTtop e M2::.
I00B
*B "
Ma(a :nterprise Applications
:nsinar conceitos a(anados de programao em Ma(a para
sistemas com alta demanda de acesso e segurana.
I006
*B "
Ma(a Peb Applications
:nsinar 'uest9es a(anadas do desen(ol(imento de aplica9es
Peb com a linguagem de programao Ma(a e os frame&orTs mais
usados no mercado.
I00*
*B "
Ma(a 4rogramming
:nsinar a programar em Ma(a para alunos 'ue j7 sabem programar
em 'ual'uer outra linguagem.
I002
*0 "
4rojeto de Sistemas e Orientao a Objetos com ?AQ
:nsinar conceitos de orientao a objetos e sua utili.ao no
processo de desen(ol(imento de soft&are usando ?AQ.
I000
Horas Fome do curso %#digo
Formao Desenvolvedor Java: Sistemas Distriu!dos
>3 >3
4erguntas
>* >*
O*23456O 7
>0 >0
www.infnet.edu.br
cursos8infnet.edu.br
%"%%199::
Esta palestra est dispon(el em;
"ttp8NN&&&.infnet.edu.brNHomeN:(entosN%iclode4alestraseAini%ursosN:(entosem5INtabidN20>N1efault.asp<
Ainistrada por
Andr, Qui. Aonteiro da %osta
E1mail;
andre.monteiro8prof.infnet.edu.br
%ontatos

Você também pode gostar