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

::I

UML-1550

:I

<i.
o
:I~>«
~
(J
:::>

:I~z
u.
~

=-~ o
o
c(
1 - Orientação a Objetos
>

~~a: Unidade de Aprendizado


o
õlj
:lg UI
a:
Õ
'"
~~
O
....

:I

:I

::I

:I


:I

:I

fi
I

!li

INSTITUTO INFNET -13


iJlWL - 5.5.:
I
I
~
~
o
'<l:
1 - Orientação a Objetos !

<l:
o

'.
:::>
Q
w
tuz
u,
~
a:
Você aprenderá:
o
e,
in
oQ • Modelagem de Sistemas
I
:;:a:
w
ffl • Orientação a Objetos I

a:
o
'<l:
lfl
tn
gw
a:
I

Õ
l/l
o
l/l
oQ !
~

li
14

:!

INSTITUTO INFNET - 14
UML-1550

.1,1;
z
~
~
5::l
-e
1.1 - Modelagem de Sistemas
:s , '"~~ Bloco de Construção do Aprendizado
o
«
'"
'o"
==­ >­
E
:z:
a:
'O"
~ '"O
Q
O


~


=­:íI
:51
:li


~

~
:11
INSTITUTO INFNET - 15
ai
\- i
V'
UI. _ - ::5õiI
I
I

i
~
~
o
.c(

~
o
::>
1.1 - Modelagem de Sistemas I
'.

o
w
tü • Desenvolvimento de Sistemas
I

zu,
:l:
IX:
oQ. • Papel da Modelagem I

CIl
oo
~
IX:
·w
ID
IX:
• O Que é um Modelo?
• Orientação a Objetos •

o
,c(
CIl

CIl

o
!:
w
IX:
15
CIl
o
CIl
o
o
I
~

I
16

I
I
I
I
I
I
I
,I

INSTITUTO INFNET - 16
:I
UML-1550

:2

oi
~.
C
I-
-'
o

o-
Desenvolvimento de Sistemas
«
o
::l

! C
W

W
Z
• Objetivos do Desenvolvimento de Software:
U.
zao - Produtos de Qualidade;
J o
e,
co
oc - Atender as necessidades do cliente;
-c
>
ao - Preços competitivos.
:i w
co
w
ao
o
-e
• Foco nos Clientes:
co

:I co
o

m
ao
- Centro da atenção no desenvolvimento;
i3
co
- Atender aos requisitos do usuário.

-
o
~ '"
o • Viabilidade do Projeto:
c
o

- Equilíbrio entre custos de desenvolvimento e


-
~ benefícios para o cliente.

•-
17

~ Uma empresa de software deve fornecer produtos de qualidade que sejam capazes de
I atender às necessidades dos usuários e praticar preços compatíveis com o produto que está

~~
sendo oferecido.
Os JJ:~S, ou ,Çlien.w..s., devem ser o centro das atenções durante a atividade de
desenvolvimento de sistemas. É necessário saber o que usuário deseja que seja cumprido e
codificado, atendendo aos seus requisitos.
I Ao mesmo tempo em que existe a preocupação com os requisitos dos usuários, deve

~
também haver preocupação com o tempo e recursos materiais (como em toda atividade

~
mercantil), tomando o desenvolvimento de sistemas previsível e viável.

~l

INSTITUTO INFNET - 17
\

'-=

oi
C

Papel da Modelagem

--J
o
-00:

00:
o
=>
c
w
tu • Existem dois tipo~ de m09el9s: ,I,' ( / ' ) fldií::' t;:'
z
u. _ Estrutural; {) ~ J2 C ,i~.,y1~-'~!'i./ 1,' 'l;~",
~
a::
oo. - Comportamental;
Ul
o
c
~
• Os modelos traduzem COMO as coisas serão
a::

Ul
w
construídas:

a::
o
'00:
- Relações entre as partes;

til

til

o
l::
- Funcionamento;

w
a:: - Disposição.

ti:
til
o
til
o • Os modelos traduzem o tamanho e a I
C
~ complexidade do sistema. I

e:

No processo de desenvolvimento de sistemas, são construídos modelos para documentar a


estrutura e o comportamento do sistema.
Como na atividade da construção civil, são necessárias "plantas" e "esquemas" que
traduzam como as coisas serão construídas, quais as relações entre as partes e o todo, como é o
funcionamento e quais as disposições. Não existe nenhuma planta que indique tudo o que deve
ser feito em uma construção. Existe a planta hidráulica, a elétrica, a planta baixa e até uma
maquete, mas o entendimento do empreendimento só é possível ao se analisar o todo.
Modelos são construídos para que se possa dominar a complexidade de um sistema, e
compreender melhor a sua estrutura e funcionamento. Os modelos permitem que se faça um
planejamento adequado de recursos e pessoas, uma vez que traduzem o tamanho e a
complexidade do sistema.

INSTITUTO INFNET -18 iiiiiii


-
::I
UML-1550

:I

:I
""-
::
~

<
o que é um Modelo?
S:;
c • Simplificação da realidade.
:I
'"
:Li
...
z
i!: • Modelos são esquemas gráficos que

::;
e
:: representam o sistema.
Q
;;:
>
z:: • Os modelos traduzem:
:I
u
'"
~
o
- ESTRUTURA:
-o:


::
• Organização de módulos;
...iJÕ
'" • Relacionamentos;

C
::
- CONIPORTAMENTO:

:­ o
::
oo
::: • Dinâmica;
• Inter-relacionamento;
:I
• Funcionalidade.
19

:I
"Um Modelo é uma Simplificação da Realidade"
:I
:I Os modelos são esquemas gráficos que representam algum aspecto do sistema, da mesma
forma que uma maquete em gesso ou madeira dá uma idéia da aparência de um prédio ou um
carro.
:I Os modelos traduzem duas características dos sistemas: a sua estrutura e o seu
comportamento.
:I Os modelos estruturais apresentam a organização do sistema, ou seja, que módulos estão
presentes, como estes são constituídos e como estão relacionados.
::I O comportamento do sistema é apresentado por modelos que descrevem a sua dinâmica,
inter-relacionamento e a sua funcionalidade.
:I
:J
=t
:9

INSTITUTO INFNET -19


;B

-----------
_ ---"'--- -------­ - - - - - - ------ -----
/
fi

U
UM L -1:55:

1
<i
c
!::i
O

Modelagem de Sistemas
o.
«

1
O
=>
C
UJ


z
u,

~(~iE~
~
ti:
1
,
O Analista de
O-
til Requisitos
O
C
«
>
ti:
UJ '-._-,'"
.fi] , ...-"./-FIoo....,Gorm

ti: Proposta

Técnica

O .-~~-----­ ----('~)
.« Cie'u "<,-c. R_Qorm
til
<>:
Documento
1
til
O de Visão
!::
UJ
ti:
Õ
til
O
til
O
c
1
12

L
)''''~''''O
ii~:::';'L_

f------+------!Ql=f...4~~~_,----++---'--+--~~-+---!--J<---------i------1
i
'-_ i~
20

I•
A figura acima mostra os.!!.ês principais envolvidos no processo de modelagem de sistemas:
an~ista de requisitos, @31~emas e ;rquitetll-de--sof~il~\ Eles geram e utilizam diversos I
docliiiie"ntos, modelos e diagramas q-iie'Servem de base para a construção do sistema.
O analista de requisitos comunica-se com os usuários para descobrir quais são os requisitos I
do sistema. Verifica se os requisitos estão completos e bem definidos e resolve os problemas desta
natureza. Documenta os requisitos para que sejam utilizados pelosoutros membros da equipe.
O analista de sistemas elabora, a partir dos requisitos funcionais, a solução do sistema,
I
desenvolvendo os diagramas necessários.
O arquiteto de software trata dos requisitos funcionais e não funcionais, identificando
questões de desempenho, persistência, segurança, confiabilidade, escalabilidade, entre outros.

INSTITUTO INFNET· 20

----_.---- =====-===:-- - ------------ - - - - - - - - -- - - - - ­


UML-1550
v
~
-
.;(
::;>
<
o que é um Modelo?
~
:ti:
:Li
z
• Construímos modelos para:
lo.
i!::
!E:'
- Visualizar o sistema como ele é ou como
~

i desejamos que ele seja;


;;:
:>
...
::
lO
- Dominar a complexidade e entender o sistema;
....
::

..g
.;( - Delimitar o escopo de um problema;
:11I :ti:
- Comunicação entre equipe;
~
s - Ajudar a planejar as soluções;
:li ~
- Guiar o desenvolvimento do sistema,
:11I


21

:li
"Modelos são construídos para que se possa entender e visualizar um sistema - para

=­ dominar a sua complexidade"

:11I Através dos modelos pode-se delimitar claramente o escopo de um problema e planejar a
solução. O modelo ajuda no entendimento do sistema. Para projetar é preciso conhecer muito
bem o que se pretende com o sistema.
:11I Os modelos servem também para a comunicação. A equipe de desenvolvimento irá se
comunicar através dos modelos.
:11I
:11I
:11I
:11
:li
~

=­ INSTITUTO INFNET - 21
U"'L-r~

<i.
Cl
!:i
o
'<t

<t
<.l
o que é um Modelo?
::l
o
w
...w
Z
• Tipos de modelos diferentes apresentast'-,

;!;
a: perspectivas diferentes da mesma situação;
oe,
(fJ
o
c
<t
• Modelos devem expressar de forma precisa
>
a:;
w
(fJ
w
a realidade;
a:;
o
'<t
(fJ
(fJ
• Nenhum modelo consegue mostrar todas as
o
!::
w
a:
características de um sistema.
15
(fJ
o
(fJ
o
Cl
g

22

Os modelos têm também algumas características que são bastante interessantes:


Cada modelo pode ser ajustado para representar conjuntos de detalhes diferentes a fim
de cumprir uma determinada perspectiva. Por exemplo, o modelo usado em urna reunião
com o usuário pode "esconder" alguns detalhes que não são relevantes para uma determinada
discussão. Os modelos podem expressar vários níveis de precisão, dependendo do objetivo a
ser utilizado.
Os modelos devem ser relacionados à realidade, buscando as mesmas abrangências e
limitações do que se deseja construir.
Nenhum modelo cobre todos os aspectos do sistema. Para que a notação seja simples
para o entendimento e ao mesmo tempo eficiente, cada modelo tem uma perspectiva de
visualização bem particular. Os modelos abrangem um determinado ângulo do sistema de
forma "quase independente". Essa característica permite que os modelos possam ser
estudados separadamente, mantendo o seu inter-relacionamento.

INSTITUTO INFNET • 22
','

:11
UML-1550

11
r \

,\ /\ 1\ 1 I,
~ '?r" r " I
-
:<
:::>
Modelagem Orientada a Objetos '.---'

11
Li:
...
• Tradicional:

-
z
.;!; - Foco do desenvolvimento nos processos;

:;
i:
!!! • Orientada a Objetos:
<
>
.....
li: - Foco do desenvolvimento nas entidades que participam
11
.ll.
li:
dos processos .
..
.';<
• Entidades do mundo real:

:11I
~
ii
- Pessoas - Funcionário, Vendedor, Aluno.

a
~

~
-
-
Lugares - Sala, Estoque, Estante, Prateleira.

Fatos - Matrícula, Pedido, Apólice de Seguro.

- Coisas - Livro, Caminhão, Computador.

11

23

11

,.
A visão tradicional de desenvolvimento de sistemas adota a abordagem por processos:
fluxos de trabalho são o elemento principal deste tipo de modelagem.
A modelagem orientada a objetos se preocupa com a interação das entidades do mundo
11
real, procura representá-lo como é percebido - pessoas, lugares, fatos e coisas existentes que se
comportam como objetos, possuindo características próprias de apresentação e funcionamento.
:li Entidades representáveis em um modelo orientado a objetos podem ser pessoas, lugares,
fatos ou coisas. Tudo o que for relevante para o sistema deve ser identificado e modelado.


11

11

li
li
11

11

INSTITUTO INFNET • 23

li
- - -...._...- - - - - - - - = : - - - - ­
UML -15õ.:

~
~
o


Modelagem Orientada a' Objetos

«
Q
:J
Q
w

W
Z
u.
:;;: Real
a:
o
a.
~
c
«
> .Carro
a: Casa

ffla:
o

Ul

g
w
a:
Õ
~
Ul
oQ
g

24

A figura acima mostra que podemos representar "abstrações" de elementos do mundo real
no ambiente orientado a objetos. Ou seja, são representadas apenas as partes relevantes para o
problema. Essas representações têm relacionamentos entre si, da mesma forma que no mundo
real. O modelo acima identifica apenas nomes e relacionamentos mas não se preocupa com
detalhes corno cor, tamanho, tipo.
O foco do estudo e levantamento não é mais o processo, corno por exemplo dirigir ou
morar. O cerne do estudo é na entidade que participa do processo, quais as informações
'c
relevantes do Motorista (nome, CPF), do Veículo (placa, cor, marca, ano) e quais as ações
(métodos) que serão executadas (dirigir, morar). -
E

INSTITUTO INFNET - 24

-'-,-"---"--"-- - - - - - , - - - _. - - - - - , - . --,--"- _. -­
,.,

::I
UML-1550

:I

<i
c
:I -
~

Modelagem Orientada a Objetos
-=:
g
:I i:
i::
z
• Benefícios Técnicos:

....
~
:z:: - Reusabilidade;

:I ce,
.­c
- Extensibilidade e manutenção;

c
-=:
>
:z::
:J l.:J

""
.LI
:E:
- Aumento da qualidade;

C
• Benefícios Econômicos:

::I ..
""
."

c
E
:m: - Apoio ao planejamento;

:5
.-
D
- Reaproveitamento de esforços.

:I '"
D
.:::l
2

:J
25
:I

:I
Os benefícios técnicos da modelagem orientada a objetos incluem:
Reusabilidade: A orientação a objetos permite a reutilização de código produzido através
=t de mecanismos como herança, polimorfismo, encapsulamento, modularização e coesão (esses
termos serão cobertos adiante).
Extensibilidade e Manutenção: As partes do sistema (classes) possuem tanto dados como
:I
funcionalidades. Em um projeto bem desenhado, se for necessário acrescentar novos recursos
ao sistema, basta introduzir as modificações necessárias em partes bem específicas.
:s
I
, Aumento da Qualidade: Sistemas de qualidade são os que foram desenvolvidos no' prazo e
no-orçamento 'previstos e que atendem às ecessidades do'usuários~A melhoria da qualidade é
(/

:s
PõssívefjJê"la m_pãfticipação do usuário na elaboração do ístema.
Além dos benefícios técnicos é possível compreender que existem benefícios econômicos,
principalmente pelo fato de conseguirmos planejar melhor o desenvolvimento e reaproveitar
:I
esforços.

:3

:t

==­
:I
INSTITUTO INFNET - 25
:!li
, I
J .-/i
UUL - ,.=5:

..."",""
-",

Mod~gem Orie~tadaa Objetos


<i
o
':i
o
'00:
c>
00:
U
::l
o
W

• James Rumbaugh
W
Z
LL
ao - Uma nova maneira de pensar os problemas, utilizando
lI:
oQ. modelos organizados a partir de conceitos do mundo
tn
oo real.
00:
>
lI:
W - O componente fundamental é o objeto, que combina
'l:!'" ...--~§trZ!:Jura__e.eompçrtamento em uma única entidade.
o
'00:
tn r-- . -.. /'" ',- ,." . . . _..--.. '. ._~c.--",,, ,.. ,-.wv...." , , - .. ,· _",_

'" , ·-arady Booch ,./ . _//~,


~
m
lI:
Õ
I - Leia a especificação do software que você quer criar.
'"o - Sublinhe o.s; verbos se quiser uma codificação
oo'"
o procedural ou os ~~se visar a um program:l:-)
\".

orientado a objetos. ~ ­

\I----',----"=--~-----~-~=_~-___,<:...=.~~'---__'T---~--+_J

"'~ /

v 26 __
',.__/-" '- /
/'-"', "

" .•_ j
/ . .......
/' ~
\\

,
\ J'''''~'~

.~

i
f 'o.

<:.
.""

'\

v• \
\/
A Orientação a Objet~\;Jé baseada rlJo mundo ~~al
Esta nova tecnologia tem foco nos objetos que fazem parte de um sistema, ou seja, o
levantamento é feito pelo mundo real dentro de um determinado escopo.

Substantivos
Os substantivos da especificação darão origem aos objetos, o alvo da Orientação a Objetos.

INSTITUTO INFNET - 26
:=li UML-1550

::I
~
1.2 - Orientação a Objetos

I
• Analogia com o Mundo Real
• Classe
fi
• Objeto
• Propriedade
• Método
• Herança
• Polimorfismo

29

FJI

;11

;11

:li

INSTITUTO INFNET - 29
•,"
UML -15õo8

<i

'..
.
Cl
õiii
~
o
.« Analogia com o Mundo Real
~
(J
:::>
Cl
W

W
Z
• o entendimento de orientação a objetos é ..

•­
lL
~
o:
o
fundamental para o desenvolvimento de
D..
Ul
o
Cl
software.
«
>
o:
w
·ffJ
• Para iniciar o estudo de 00 será usada uma
o:
o
,« analogia com o mundo real:
Ul
tn
g
W
o:
- Imagine que você recebeu como herança, um '.

15
Ul
o
grande terreno. c
Ul
o
•;;;
Cl
~
- Esse terreno é identificado por um número.

-
c:
•...

-'.

30

f
A orientação ao objeto visa representar o mundo real no computador. Essa representação é
dependente de conceitos que serão apresentados nessa seção. '.
Para facilitar o entendimento, vamos partir de uma situação que pode ocorrer com várias
pessoas:
"Imagine que você recebeu como herança, de um parente' distante, um grande terreno em
um condomínio fechado. Na frente do terreno passa uma rua e esse terreno é identificado por
um número. Existe alguma casa no terreno? Não, suponha que ele esteja vazio."
,i
·


i

i
·
I

INSTITUTO INFNET - 30
;11 UML-1550

:11 V
=-
~
-
.:;(
:.>
Analogia com o Mundo. Real
"'~"
:JI E
.ti.
Z
• Você contrata um arquiteto a fim de projetar
.I­
~
uma casa.
=- ~
'"
;;:
;;(
>
• O arquiteto faz várias perguntas sobre a

=-:11I casa, a sua forma, estilo e funcionalidade.


:E::
.ti.

'"
.ti.
:E::

~
,.'" • O arquiteto trabalha algum tempo no
c
i1
:E::
projeto da casa e entrega as plantas para que
s,.
,.c você possa construir.
:11 ;;:
5

31

:11I "Após se refazer da surpresa e depois de pensar bastante, você contrata um arquiteto a fim
de projetar uma bela casa, que ocupará o terreno que você ganhou."
"O arquiteto faz várias perguntas sobre como você deseja a casa, a sua forma, estilo e
:li funcionalidade.' ,
"O arquiteto trabalha algum tempo no projeto da casa. Findo esse tempo, ele entrega as
iI plantas da casa para que você possa construí-la. Existe alguma casa no terreno? Não, ele
continua vazio."
11
:11I
:li
11
li
11
11
INSTITUTO INFNET - 31
11
I

v
~
~
o

'-"
Analogia com o Mundo Real
«
g
ow

w
• Você contrata uma construtora para erguer a
Z
u,
~
a:: casa.
oD..

UI

a
«
• A construtora leva algum tempo e termina o
>
a::
w
UI
w
serviço.
a::
O
.<{
UI
UI
• Existe alguma casa no terreno? Sim, a casa
8
iii
l;!;
ocupa espaço no terreno.
a
UI
O
UI
O
a
8

f-------------------------­
32
1•

"Depois de consultar algumas empresas, você contrata uma construtora para erguer a sua
casa. A construtora leva algum tempo e termina o serviço. Existe alguma casa no terreno? Sim.
a casa ocupa espaço no terreno."
Essa estória é muito importante. Nela aparecem vários conceitos de orientação a objetos.
conforme veremos a seguir.

INSTITUTO INFNET• 32
:2
UML-1550

:2

oi

~
1:1
:i
O
c:e

Objeto e Memória
«
:.J
5
:3
;'"
z
• A memória é dividida em partes

~ referenciadas por endereços.

~ '"
~
'"
o
o
«
• Existem partes da memória que estão
>

:I
'"'"'"'"'" ocupadas e outras livres.
o

=­ • Dentro de um programa, podemos alocar


c:e
'"
s'"
ii espaço na memória e construir objetos.
'"
:;:
'"o • Esses objetos são acessados através de um
~ lO
o
:::l
s endereço de memória ou de uma referência

=­ ao endereço.


33

=­ Tudo que precisa ser processado no computador passa primeiro pela


memória.

=­ A memória do computador é como um loteamento, com endereços


preenchidos e "lotes" vazios, esperando para serem preenchidos.

=­:11I Todas as coisas que ocupam lugar na memória do computador são


referenciadas por endereços.
Objetos são conjuntos de bytes construídos dentro de um programa,
portanto ocupam lugar na memória.
Cada objeto existe em seu próprio espaço de memória e é referenciado
:li pelo seu endereço.

:11I

:11

:11

:ti


INSTITUTO INFNET - 33
UNL - ,15:54
:1

<i.
<1
~
o Classe I

'-.:
~
o
::>
<1
w
tu • Conceito de Classe: I

z
LL
:i!:
IX:
- As plantas da casa representam a classe.
oC.
CIl
o
- É a definição da forma e funcionalidade.
<1
-.:
:>
Ir
w
- A partir da classe se constrói um objeto na memória.
ffl
IX:
o • Responsabilidade da Classe:
'õli
CIl
o
!::
- É o que a classe "sabe" e o que ela "faz".
w
IX:
Õ
CIl
- O que ela "sabe" são as suas propriedades ou
o
(J)
o
atributos.
<1
~ - O que a classe "faz" são os seus métodos ou funções.
'I

34

o conceito de classe na história é muito claro. As plantas da casa, desenhadas pelo :z

arquiteto, representam a idéia de classe. É a partir das plantas que se constrói a casa. É a partir
da classe que se constrói um objeto na memória.
A classe é o gabarito, a definição da forma e da funcionalidade. A forma é representada
pelas propriedades e a funcionalidade pelos métodos.
Quando uma classe é modelada, existe a preocupação de documentar as suas
responsabilidades: o que a classe "sabe" (propriedades ou atributos) e o que a classe "faz"
(métodos ou funções).
As casas criadas têm propriedades parecidas (quantidade de cômodos, andares) mas cada
uma tem características próprias, o endereço, por exemplo será diferente para cada uma. A
fachada de uma é azul e outra colocou pastilhas verdes. As características em comum são da
estrutura, fazendo a analogia com sistemas, a classe forma objetos com a mesma estrutura, mas
cada objeto terá valores próprias para suas características.

INSTITUTO INFNET - 34
:!
UML-1550

:I

oi

:I
!:>
::;
o
«o- Exemplo: Alu110 _
«
o
::l

:I o
.!.J

!.J
• Vamos imaginar que em um sistema exista a
~
~
classe Aluno.
:- x
o
~

on'"
• O que o Aluno sabe?

- Seu nome,

=-:11
«
>
x
.!!JJ
- Seu endereço,

'"
:l!ú
X
o
« - Seu número de matrícula etc.

'"'"o
;­ • O que o Aluno faz?

W
li:
Õ - Se matricula em um Curso,

'"o
~ '"oo - Tranca a matricula,

o
I­ - Tem Avaliações etc.

~
35

~ No exemplo, o objeto da classe aluno deverá ter informações como seu nome, endereço e
número de matrícula.

=­ Este mesmo objeto poderá se relacionar com curso (utilizando o método matricular em
curso), trancar a matrícula, fazer provas e receber avaliações.

=­:11I
Essas definições das informações e ações são da classe e cada objeto terá valores próprios
para cada definição da classe.

--I) -.-.

:11

:11I

=­:ti

:ri
:jI.
INSTITUTO INFNET - 35
:11

IJII_- .SJ:
I
'i
<i.
c
~
o
.« Objeto li
~
(J
::::>
a
LLl

lii
z
• Um objeto pode ser alocado na memória a
u.
~ partir da definição de uma classe.
IX

c, i
00
O
c
«
• Um objeto não interfere em outro, cada um
>
IX
LLl
'00
LLl
tem seu próprio espaço.
IX
O

00
00
• Instância é sinônimo de objeto.
g
Õ
LLl
IX • Instanciar significa criar um objeto a partir
00
O
O
00 de uma classe. I
C
g

I
I 36
I
Uma casa criada a partir das plantas é um objeto, terá endereço, fachada e acabamentc I
próprios.
Quando um espaço na memória é alocado e o construtor de uma classe é usado, um objete
é criado. Se existirem dois ou mais objetos criados na memória, eles serão independentes. É
c
possível alterar as propriedades de um objeto sem interferir nas propriedades do outro.
É possível encontrar textos que utilizam o termo instância como sinônimo de objeto e o
verbo instanciar que significa criar um objeto a partir de uma classe.

INSTITUTO INFNET - 36
I

- - _ .. _--~----_ .. ­
::I UML-1550
1/

::I
<i
::I "

..J
o
-o: Representação Gráfica

~
o
:::>

:I a
""
~i- • Notação UML
'"
Z
"- Classe '\..
:!:

::I
';
'"
O
"­ ContaCorrente ...--- Nomeda Classe ~ con'tal: ccncacoc cence ....
'O" -enúmero "I...,,;n;eco
-titulaI:
">o::
~
-x c u Lar
í

<se Ide
+--AtribUtbs
-ee Lco +-­ Atributos

:2 -eenbe
-cs enhe
w
Ol -eeecec (l
w -seecec ()
o::
Q
+de.positeu: ()
-sccneut t ar se Idc n
...--- Serviços -sdepoe ãuac ()
+consul tarSaldo (l
+-- Serrviços
-o:

:r-
Ol
Ol
Q
....
~
OI:
a • Notação Alternativa:
'"
o
:I o'"
Q
a
....

:I
37
:J
:I Notação UML:
A figura da esquerda representa uma classe, enquanto a figura da direita mostra a
::a representação de um objeto. Note que o objeto traz o nome da classe ao qual ele pertence.
O nome do objeto, como visto no exemplo (contal : ContaCorrente), segue o padrão ­
NomedoObjeto:NomedaClasse, mas poderia aparecer sozinho NomedoObjeto ou apenas
::I :nomedaClasse - note os dois pontos antes do nome da classe.

::I Notação Alternativa:


Com esta representação visualizamos bem a proteção que os métodos fazem na classe, a
:J idéia é que as informações somente sejam acessadas (criados, excluídos, alterados) através dos
métodos da própria classe. Com isso temos dependência do código e sabemos que ao dar
:I manutenção em algum processo da classe cliente somente iremos alterar os métodos desta
classe, não precisaremos vasculhar o sistema em busca de alterações.

:I


=­:I

INSTITUTO INFNET • 37
::21

iJof_ ­ :551
i
-
I
<i
Cl
!:i
o
.« Propriedades
~
o
::>
Cl

...ww • As propriedades são os dados que guardam -


I
Z
LL
~
a:
oa.
rn
oCl
as características e o estado dos objetos
criados a partir da classe. --
'~

«>
a:
w
• É o que a classe "sabe".
·rn
w
a:
o

• Exemplos:
rn
rn
o
!=
w
- O relógio digital tem as propriedades "hora" e :1
a:
Õ
"minuto".
rn
o
rn
o - Uma agenda tem a propriedade "lista de
Cl
...
o contatos"

38

As propriedades ou atributos são os dados que guardam as características e o estado dos


objetos criados a partir da classe. É o que a classe "sabe".
A casa da estória, como qualquer outra casa, tem uma aparência externa. A casa pode estar
pintada de azul, amarelo, verde, etc. A classe pode ter uma propriedade que se refere a sua
aparência externa, já que cada objeto tem uma informação diferente.
Um outro exemplo é de um relógio digital. Os circuitos internos do relógio calculam o
tempo ciclicamente e o exibe em um mostrador.
Podemos dizer que o relógio tem as propriedades "hora" e "minuto" atualizadas
ciclicamente.

,
,.
Siii

INSTITUTO INFNET - 38
=­ L1ML - 1550 i­
:a

:=­ ~
-C
<::;> Métodos
Ê
::11 ii
i1 • o termo método representa as
...z
~
funcionalidades inerentes à classe.
:li ~
::
~
,
• E o que a classe "faz".
:<
>

:11
..

:li:
.u.
.u.
:li:
• Para alterar o mostrador do relógio digital
.. ~
não podemos simplesmente exibir um
=­:a
~
:u:
~
!5
~
número qualquer.
• Existe um "método" para fazer isso.
25

::11

39

::I

~ o termo método representa as funcionalidades inerentes à classe. Esse termo é usado


porque essas funcionalidades estão, na maioria das vezes, ligadas às propriedades da classe. É o

=­ que a classe "faz".


No exemplo do relógio, os números do mostrador têm uma lógica. Para alterar o mostrador
não podemos simplesmente exibir um número qualquer. Existe um "método" para fazer isso.
:I No caso da cor da casa também. Se nós desejamos representar uma alteração na cor da
casa, devemos utilizar um método que "pinte" a casa e altere a sua cor.
=ti
:3



=­::I

:I

INSTITUTO INFNET - 39
~

UML-I550

<i.
a
~
O
.« Construtor e Destrutor
:io
=>
a
w

W
Z
• A função do método construtor é inicializar
u,
;;;
a:
O
um objeto na memória.

rn
O
a
- Através dele é possível que o objeto na
~
a:
w
.rn
memória tenha valores iniciais.
w
a:
O
.« - Esse método é usado, por exemplo, para
rn
tn
O

construir a tela da aplicação e abrir a conexão
iii
a:
E com o banco de dados.
rn
O
tn
O
a • O método destrutor permite "fechar" o ciclo
f=?
de vida do objeto, dando condições de
finalização ao programador.
42

Nas linguagens orientadas a objeto é possível codificar métodos especiais chamados de


'método construtor" e "método destrutor".
A função do método construtor é inicializar um objeto na memória, colocando valores nas
propriedades do objeto. Através dele é possível que o objeto na memória tenha valores iniciais.
Além disso, o método construtor pode ser usado também para preparar uma aplicação para
iniciar. Esse método é usado, por exemplo, para construir a tela da aplicação e abrir a conexão
com o banco de dados.
O método construtor, criado pelo programador, é o que vai criar em memória novas
instâncias de uma classe. O método destrutor irá liberar o espaço alocado. Em algumas
linguagens o programador não precisa se preocupar em fazer o método destrutor, pois um
método especial "varre" a memória em busca de objetos não referenciados para destruí-los e
liberar a memória ocupada por eles.

INSTITUTO INFNET • 42

--
:a
UML-1550

:8

<i.

=­ ;:
--'
o
<o-
-c
Assinatura de Métodos

=-
OJ
5 /
.L.:!.

.u
Z
• E a chamada de um método. Identifica um

.;!;
método pelo nome, a quantidade e tipos dos
:3 ~
=
o
c
argumentos passados por parâmetros.

=-:11
c(

..
>
::
.LI
J..l
• Um método é reconhecido pelo seu nome e
%:
o
"">: seus parâmetros:
~
;:: alterarPagamento(codAssinante)
E
li!:
i3
alterarPagamento(codAssinante, novaDataPagamento)

=- ""
,o
."
::J
'"
O

~
43

:I

=­:li Nas linguagens tradicionais, anteriores à orientação à objetos, não era possível nomear dois
ou mais métodos com o mesmo nome.
Com a orientação à objetos isto é possível pois a assinatura do método é utilizada pra a sua
identificação.

=­ A assinatura é composta pelo nome do método e pelos seus parâmetros, portanto podemos
ter dois métodos com o mesmo nome e a mesma quantidade de argumentos na mesma classe
desde que seus tipos sejam de tipos diferentes.

=­ /
:li I~:~ C
:J
:íI
:li
:11
:w
INSTITUTO INFNET • 43
;!I
J
Ut.l.L-~
'I

I
.;,
o
~
o
'<C
Sobrecarga de Métodos
~
o
=>
o
W
ti; • Métodos Sobrecarregados- são os métodos
I
Z
!L­
i!:
a: homônimos dentro de uma mesma classe.

oa.
Ul
I
oo ~~----------
F1Dlcionario
<C Retangulo

>
a:
'W
Ul
W
u:
+desenhar(largura, altura)

+desenhar(xi, yi, x2, y2)


-matr icula

-nome
-car:-go
I
o -dataAdroissao
'<c
Ul

Ul

o
to
W
a:
-dataDemissao
-salaria 'I
Õ Métodos na mesma classe com +demitir ()
+demitir (data)
Ul
o assinatura diferente- Sobrecarga +calcular5alario()
Ul
oo
o

I
44

1
Métodos Sobrecarregados (overload) - são os métodos homônimos dentro de uma mesma I
classe. A distinção é feita em função dos parâmetros que são passados para o método. Podemos
entender como sendo várias versões do mesmo método. Métodos na mesma classe com
assinaturas diferentes.

INSTITUTO INFNET • 44
---
::I
UML-1550

::!

<C
c
::! f­
...J
o


Herança
<C
u
:::>

~
c
w
f-
w
Z
• Relacionamento de generalização e
u,
~
o: especialização entre classes.
:I o11.
rtl
o
C
<C
• Permite ao programador criar uma nova
>

:I
o:
W
rtl
W
classe "estendendo" uma classe anterior.
o:
o

UI • A herança define uma hierarquia onde o
::I
rtl
O
!:::
w
o: conceito mais genérico fica sobre o conceito
Õ
rtl
O mais específico.
:I rtl
O
C
O

:I

45

:I

:I
A herança constitui o mecanismo pelo qual se pode compartilhar automaticamente métodos
e dados entre classes diferentes, que tenham um relacionamento de generalização e
especialização.
:3
A herança permite ao programador criar uma nova classe "estendendo" uma classe anterior
e implementando as propriedades e métodos específicas.
:!
Em um banco, por exemplo, podemos ter Conta Especial como uma especialização de
Conta-Corrente. A Conta Especial tem o atributo "limite" que estende o conceito de uma conta
:! comum.
Um outro exemplo é o Vendedor que estende o conceito de Funcionário. Sabemos que todo
Vendedor é um Funcionário, mas nem todo Funcionário é Vendedor.
:f
A herança define uma hierarquia onde o conceito mais genérico fica sobre o conceito mais

:r
específico e o item mais específica "aproveita" as definições do item mais genérico.

-----
5"

:J

='
INSTITUTO INFNET - 45
!2

UML-I55Q

~
~
o
'<l;

Exemplo de Herança
<l;
(J
::l Atributosc
C
w
- cor

z
u,
~
a:
o
o.
[ Mobília
I
I "peso
- pernas
" localização
CIl
o
c
;;
a:
[ Mesa] [ Cadeira]
w
CIl
w.
a: Atributos: Atributos:

o
.<l; - dimensão do tampo " tipo do assento

CIl
CIl
o
t:
w
a:
Exemplo de Objeto Mesa Cadeira
Õ Instância das classes com Marrom Preta
CIl
o cada atributo inicíalizado 17kg 5kg
CIl
o correspondendo ao seu 4 4
c
o estado Sala Copa

1 x 1,5 m Ondulado

46

Note no exemplo que as definições de mobília foram feitas uma única vez e "aproveitadas" I:
nas subclasses.
A leitura deste desenho é feita desta forma: a mesa é uma mobília. I:
Todos os atributos e métodos definidos para a superclasse mobília poderão ser utilizados
pelas subclasses. Então a mesa terá 5 atributos, como no exemplo: a mesa tem cor marrom,
peso=17kg, pemas=4, localizada na sala e a dimensão do tampo de I x 1,5m.
z:

INSTITUTO INFNET - 46
:3
UML-1550

:I

..:::l
~ -'
o Exemplo de Herança.

""«o­
o
::l

:li ::l
1.l

'""­Z
~

:I '"o
:.
,''o"
FwuJionario

-matricula
'"
« -nome

:J ..
:>
'"cu -cargo Vendedor
~
-dataAdmissao
~I---------i-comissao
E
O
-dataDemissao
""rr -salario -totalVendas
:J O
li
:l!: +demitir ()
.,O
ã -t-dem t í.r (data)
í

.,
:I O
.o
O
+calcularSalario()

....

:i
47

:I
A figura mostra uma herança em um sistema de folha de pagamento. Funcionários comuns
:3
tem determinados dados como matrícula, nome, salário base, etc. Possui também métodos para
demissão e cálculo do salário.
::I
Para acrescentar outro tipo de funcionário à empresa basta criar uma subclasse, ou seja fazer
uma classe que herde as características da classe Funcionário e adicione as suas próprias. No caso,
a classe Vendedor foi incluída no diagrama herdando as características de Funcionário e
::J
acrescentando suas próprias: comissão de venda e total de vendas realizadas no mês.

:I
:I
::I
:!
~

::i

~
~

-
~
INSTITUTO INFNET - 47
J

oi
o
~
o
'<l
Encapsulamento
~
o
::l
o
W • A Classe é um "pacote", contendo dados (propriedades) e
li:;
Z
u, operações (métodos);
~
a:
oa. • O objeto é referenciado como um módulo único.
'"oo
~
a:
w
ffia:
o
'<l
'"'"o
15a:
õ
o'"
'"oo
~

48

o Encapsulamento é um dos recursos mais importantes da Orientação a Objetos. Através


desse conceito concebemos uma Classe como um "pacote" contendo dados e operações em um
único módulo. Sempre que precisamos lidar com um objeto, o referenciamos como um módulo
único.
O Encapsulamento é um conceito que significa "proteger" dados internos da classe,
tomando-os disponíveis apenas através de métodos.
Esse recurso é importante se desejarmos garantir que os dados internos da classe só serão
alterados sob determinadas condições. Uma Conta-Corrente, por exemplo, só deve alterar o seu
saldo dentro de limites pré-estabelecidos pelo banco.
O Ocultamento de dados é implementado através da "Visibilidade" mais restrita ­
"protegida" ou "privada".

INSTITUTO INFNET - 48
:11
UML -1550

~
:%

=- 5o
00:

«
;::

Ocultamento
É a proteção dos dados internos da classe;
:I :E
J:,;!

'z"
u,
• Os dados só podem ser acessados sob determinadas condições.
~
• É implementado através da "Visibilidade" mais restrita.
~ ~ • Um sistema não deve depender da implementação interna e
5
.::l
«
>
sim da interface com o mundo exterior.
:::
::I cu
..."":::
o
• A interface de uma classe é a forma pela qual ela será acionada
e se relacionará com as outras partes do sistema.
""'" Cliente
:2 '"
E
:L
'"
:E
."
o
:2 '"
oc
c

::J
49
:I.

:I A idéia por trás do Ocultamento é a que a utilização de um sistema não deve depender da
sua implementação interna e sim de sua interface com o mundo exterior. Uma classe vai
funcionar como uma caixa preta, somente conheceremos os métodos, mas seus atributos são
:I mantidos sem contato de métodos de outras classes.
A interface de uma classe é a forma pela qual ela será acionada e se relacionará com as
::I outras partes do sistema.
Imagine que um telefone é composto por diversos circuitos, molas e mecanismos internos.
:J A sua interface é composta pelas teclas numéricas e pelo fone. É através das teclas que
podemos acionar os mecanismos internos do telefone.

:J Um bom modelo deve ter uma boa interface, pois essa é a parte do sistema que deve se
manter mais estável.
Pense bastante antes de criar a interface de uma classe.
:J
:J
::I
:73
='
-
::~
INSTITUTO INFNET • 49
~
!::i
o
'et
!;f
Polimorfismo
o
::>
Cl
w
li; • Vários comportamentos que uma mesma
~
~
o:
operação pode assumir.
o
e,
lJl
o
Cl • Polimorfismo (muitas formas) é a
~
o:
w
lJl
w
capacidade de um programa orientado a
o:
o
'et
lJl
objetos distinguir, dentre métodos
lJl
o
liio: homônimos, qual deverá ser executado.
Õ
lJl
o
lJl
o
Cl
~

50

Polimorfismo é a capacidade de um programa orientado a objetos de distinguir, dentre


métodos homônimos, qual deverá ser executado. Isso só é conseguido através da instância .~
qual tentamos executar o método.
Existem dois tipos de métodos polimórficos: sobrecarregados e sobrescritos.

INSTITUTO INFNET - 50
::iI UML-1550


::li
oi
o

..J
o Polimorfismo


-c
o
:>

:JI o
lU

ur
Z
• Métodos Sobrescritos- são métodos

~
o:: homônimos em uma relação de herança.
~ O
a,
:D
O
O
Funcionario
-c
> -matricula

~ '"
...'"
:D
Il:
-nome

-cargo,
Vendedor
O
-c -dataAdroissao
f - - - - - - - - J -comi8sao
'" -dataDemissao
:li '"
O
....
a -salaria
-totalVendas

+calcularSalario()
'"
õ +dernitir ()

'"
o +dernitir (data)

::11I '"
o
!:J
,O
+calcularSalario()

Métodos com a mesma assinatura


~ em uma herança - Sobrescrita
51

:JI
:li Métodos Sobrescritos (override) - são métodos homônimos em uma relação de herança. A
super-classe tem um método que é herdado pela sub-classe. Na sub-classe existe um método
homônimo com a mesma chamada do outro. Não podemos modificar a assinatura do método,
:JI tendo que manter a quantidade e os tipos dos parâmetros como também o tipo de retomo do
método. Métodos com a mesma assinatura em uma herança - Sobrescrita
:li
:3
:iI
:iI


~

::íI

::íI

=­ INSTITUTO INFNET - 51
:I
UML-1550

:I

~
:s ­
< o-
Modularidade
Ê
:- :5
.c
:üi
z
....
• E"' a separação dos serviços em um conjunto
~
de módulos que guardam independência de
:I r..
:I:

c
.::::l
compilação e execução.
<

:I .
>
>:
.c'
.w
• A modularidade leva a uma separação entre
:I:

< a interface do sistema e o código que vai


:I
..'"
o
executar os serviços.
ir
3..
o • Otimiza o processo de manutenção de
:I '"
'o
Q
o código.
:I
53

:I
:I É a separação dos serviços em um conjunto de módulos que guardam independência de
compilação e execução.
A modularidade leva também a uma separação entre a interface do sistema e o código que
:I vai executar os serviços.
O benefício de modularizar corretamente um sistema é obtido pela otimização do processo
:I de manutenção de código.
Propriedade de um sistema que foi decomposto em um conjunto de partes coesas e
:I fracamente acopladas.
Um módulo coeso executa uma única tarefa bem definida. Um módulo fracamente
:I
acoplado garante a independência do módulo.

:I



:I


INSTITUTO INFNET - 53
:I
UML-'i,õQ:

<i
o
':J
o
--o:

Persistência
-o:
o
~
o
w
tu
z
• É o tempo total que um objeto permanece
LL
~
a:
oa,
na memória (auxiliar ou principal).
Ul
o
o
-c
• Os objetos de negócio devem ser

>
a:
.W
Ul
w
persistentes.

a:

• E" comum a utilização de bancos de dados


o
--o:
Ul

Ul

o
liig; para tomar os objetos persistentes.
o
Ul
o
Ul
o
• Existem frameworks específicos para o
o
o

tratamento de persistência.

54

É o tempo total que um objeto permanece na memória (auxiliar ou principal).


Os objetos de negócio, por exemplo, devem ser persistentes. Para isso, o sistema pode
utilizar algum mecanismo que "guarda" os objetos em disco.
É comum a utilização de bancos de dados para tornar os objetos persistentes.

Curiosidade: Um objeto não persistente também é chamado de transiente.

INSTITUTO INFNET • 54

UML-1550

li
<
o
....
..J
o Abstração
""oo­
<C

:. :::>

w
o
w
....
Z
u,
• Abstrair significa separar de uma entidade
~
complexa, apenas os elementos relevantes
:- a:
oa,
'"oo • O objetivo é diminuir a complexidade,
«
>
a:
~. w focando um problema por vez.
'"
w
a:
o
""o'" • Classe Abstrata:
~ '"
....
ii1
a: - E uma classe que define o comportamento e
Õ

'"o atributos para subclasses.

:I '"
o
o
o - Não é instanciada diretamente.

....

~
55


~
Abstração
É o princípio de ignorar os aspectos de um assunto não relevante para o propósito em
questão, tornando possível uma concentração maior nos assuntos principais [Cood, 1991].
~ Consiste na seleção que o analista faz de alguns aspectos, ignorando outros, com o objetivo
de diminuir a complexidade.
~
I
Classe Abstrata
~
\
A classe abstrata serve apenas para definir a estrutura e comportamentos que serão
I
utilizados pelas subclasses em um relacionamento de herança (veremos mais na frente).
~

~
,
"

~
~.

- ~r

; INSTITUTO INFNET - 55
-
~
UML-1550

~
<.
~
:::l

-'
o
<:
Conclusão da DA 1

<O:
~
ãz.;;;
:=J
'"
Z
.L
~

::J ~ • A Orientação a Objetos é uma TECNOLOGIA


'"
o
~
>
que envolve desde a concepção do sistema e
::
~ da sua modelagem até a implementação
.L;;.
::
"
:::
<:
'" utilizando linguagens orientadas a objetos.
~ 2
i:j

s""
'"o
::I '"gc

::J
157

::i
=:I Os conceitos que Coad, Yourdon, Pressman, Rumbaugh, Booch e tantos outros abordaram,
discutiram e definiram em suas publicações foram que:
A orientação a objetos é uma tecnologia para a produção de modelos que especifiquem o
::i domínio do problema de um sistema.
Quando construídos corretamente, sistemas orientados a objetos são flexíveis a mudanças,
::I possuem estruturas bem conhecidas e provêm a oportunidade de criar e implementar
componentes totalmente reutilizáveis.
:I Modelos orientado a objetos são implementados convenientemente utilizando uma
linguagem de programação orientada a objetos. A engenharia de software orientada a objetos é
:I muito mais que utilizar mecanismos de sua linguagem de programação, é saber utilizar da
melhor forma possível todas as técnicas da modelagem orientada a objetos.
A orientação a objetos não é só teoria, mas uma tecnologia de eficiência e qualidade
:I comprovadas usada em inúmeros projetos e para construção de diferentes tipo de sistemas.

:3.
~

~
INSTITUTO INFNET - 57
21