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

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...

O paradigma da Orientao a Objetos

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)

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.

Analogia +iol#gica

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.

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= .

Orientao a Objetos 3 4rinc2pios

?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

?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

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

5odos os objetos do mesmo tipo podem receber as mesmas mensagens. Fa figura abai<o, o objeto $%2rculoaceita '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=

E0

Abstrao

Inclui os aspectos rele(antes de alguma coisa, ignorando os menos importantes.

EE

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
E2

:<emplo
+eija3Glor Identidade:: o beija-flor que vem ao meu jardim Estado:
penas azuis bico fino vo rpido

Comportamento:
voar piar

E3

:<emplo

4essoa Identidade:: Mrio Estado::


olhos pretos nasceu em 16 !" #! pesa #!$% mede 1&#!m

Comportamento::
andar falar comer rir
E*

:<emplo
5elefone Identidade:: n'mero "(#6-!)*) Estado::
azul "+, -.z tone

Comportamento::
tocar discar

E0

Objeto
Jepresentao

/stado 0caracter1sticas2

4dentidade

3omportamento

5ervi6os& 4nterface ou protocolo Mrio

E6

Objeto

Implementao ! Interface Kis2(el ! 4arte encapsulada ;escondida=

/stado do 7bjeto 0valor dos atributos2

4nterface da 3lasse

E>

: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.

EB

%lasse

$f7brica de objetos-.

EC

%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.

20

%lasse L Fotao Hr7fica


8 Segundo a OAH8

2E

Implementao em Ma(a

22

Implementao em Ma(a

23

%lasses

Classe

4nst9ncias 0objetos2

2*

Implementao em Ma(a

20

Implementao em Ma(a

26

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;"* !1 1)6( 5alrio ; ,+!!! 4nformar5alrio 3alcular4dade Funcionrio_Mrio :ome;Mrio 5 :asc;16 !" 1)#! 5alrio ; =+!!! 4nformar5alrio 3alcular4dade

2>

Ser(iosNOpera9es

Jepresentam o comportamento das instDncias de uma classe %orrespondem Os a9es das instDncias de uma classe

4000

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

3000 Informar Salrio?

2B

Implementao em Ma(a

2C

Ser(iosNA,todos

Alguns m,todos especiais8 ! %onstrutores L criam objetos de uma classe ! 1estrutores L destroem objetos de uma classe

30

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.

3E

4assos para a criao de um objeto


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.

32

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.
33

Herana

4ara 'ue ser(e a "erana) /onsidere a criao da /lasse0.

1ue m&todos esto dispon(veis para objetos da /lasse02

3*

Herana
%uponha 'ue a /lasse0 herda da /lasse*

1ue m&todos esto agora dispon(veis para objetos da /lasse0 2

30

Herana

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*.

36

Herana

4acilita a manuteno do cdigo5 Os m&todos no so replicados. %e for necess)rio alterar o cdigo do m&todo m6 7# basta alter)-lo na /lasse*. * /lasse0 pode 8recusar8 parte da herana# reimplementando os m&todos herdados# sobrescrevendo-os.

3>

Herana

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

3B

Herana

9)rias subclasses podem herdar da mesma superclasse :erana %imples7.

3C

Herana

:m Ma(a, no , permitido "erdar de mais de uma classe :erana ;"ltipla7.

ERRADO!!!!
*0

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


*E

Herana

Pode surgir a partir da refatorao de classes e.istentes# de modo a eliminar a duplicao de cdigo

Grande quantidade de atributos e mtodos dupli ados...


*2

Herana

=efatorao

5uperclasse 0caracter1sticas comuns2

5ubclasses 0caracter1sticas espec1ficas2

*3

%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 ? 3; . /omposio . ,>; 3;

**

%omposio

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@

*0

%omposio

8 Se um propriet7rio ti(er mais de um carro, a informao ficar7 redundante.

*6

%omposio
8 ?tili.ando uma cone<o de ocorr@ncia, o modelo poderia ser mel"orado da seguinte forma8

*>

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.

*B

4olimorfismo

/onceito /have Objetos das subclasses podem ser tratados como objetos da superclasse
::Project2
A m"#...$ m%#...$

! lasse B " #$! lasse A #m objeto da lasse B pode ser usado em qualquer lugar onde um objeto da lasse A esperado.

+ m"#...$ m&#...$

*C

4olimorfismo

,abelas 9irtuais
3lasse >
::Project2
A m"#...$ m%#...$

opera6@o m102 m"02

m?todo invocado >+m102 >+m"02

3lasse A opera6@o m102 m"02 m=02 m?todo invocado A+m102 >+m"02 A+m=02
m"#...$ m&#...$

00

4olimorfismo

/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

MQinu< close#...$ maximi'e#...$ minimi'e#...$ mo(e#...$ open#...$

close#...$ maximi'e#...$ minimi'e#...$ mo(e#...$ open#...$

JWindows jWin; JLinux jLin;

0E

4olimorfismo
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+gi a ondi ional,

02

4olimorfismo

%oluo Polimrfica
::Unit
Banela close(...) maximize(...) minimize(...) move(...) open(...)

)ar jan: Jane&a;

MQinu< close#...$ maximi'e#...$ minimi'e#...$ mo(e#...$ open#...$

MPindo&s close#...$ maximi'e#...$ minimi'e#...$ mo(e#...$ open#...$

03

4olimorfismo
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;

Observe a aus$ncia de lgica condicional

0*

4olimorfismo

Observe ainda como seria f)cil acrescentar uma janela ;O,C4 para o %un %olaris
Banela close(...) maximize(...) minimize(...) move(...) open(...)

::Unit

MQinu< close#...$ maximi'e#...$ minimi'e#...$ mo(e#...$ open#...$

MSolaris close#...$ maximi'e#...$ minimi'e#...$ mo(e#...$ open#...$

MPindo&s close#...$ maximi'e#...$ minimi'e#...$ mo(e#...$ open#...$

00

4olimorfismo
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;

!di ionou-se mais uma lin&a aqui...

... e nada mudou aqui,

06

0>

Kiso Heral da ?AQ

0B

1iagrama de %asos de ?so

)omportamento
0C

1iagrama de %lasses

Estrutura
60

1iagrama de Se'R@ncia

)omportamento
6E

1iagrama de %olaborao

)omportamento
62

1iagrama de :stados

Estrutura e )omportamento
63

1iagrama de Ati(idades

)omportamento
6*

1iagrama de %omponentes

Estrutura
60

1iagrama de Implantao

Estrutura
66

1iagrama de A7'uina de :stado

6>

1iagrama de Ati(idades
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

6B

1iagrama de Ati(idades

M o s t r a q u e m f a z o q u

6C

QinTs Uteis 8 *lue+ , www.bluej.org 8 -./ , www.uml.org 8 +ude , jude.c0ange1(ision.com

>0

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. Formao Desenvolvedor Java
%#digo Fome do curso 4rojeto de Sistemas e Orientao a Objetos com ?AQ I000 :nsinar conceitos de orientao a objetos e sua utili.ao no processo de desen(ol(imento de soft&are usando ?AQ. *0 " Horas

Ma(a 4rogramming I002 :nsinar a programar em Ma(a para alunos 'ue j7 sabem programar em 'ual'uer outra linguagem. *B "

Ma(a Peb Applications I00* :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. *B "

>E

A Gormao %ompleta do Infnet


Formao Desenvolvedor Java: Sistemas Distri u!dos
%#digo I000 Fome do curso 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. Ma(a 4rogramming :nsinar a programar em Ma(a para alunos 'ue j7 sabem programar em 'ual'uer outra linguagem. 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. Ma(a :nterprise Applications :nsinar conceitos a(anados de programao em Ma(a para sistemas com alta demanda de acesso e segurana. Ma(a Securit! :nsinar conceitos a(anados de segurana em Ma(a para sistemas desTtop e M2::. Ma(a Aobile :nsinar programao Ma(a para dispositi(os m#(eis, como celulares e "and "elds. Ma(a PorTs"op %olocar em pr7tica o con"ecimento a(anado de desen(ol(imento de aplica9es Ma(a. Horas *0 "

I002

*B "

I00*

*B "

I006

*B "

I00B

2* "

I060

32 "

I062

32 "

>2

4erguntas

>3

O*23456O 7

>*

%ontatos
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

>0

Você também pode gostar