RR COM
OBIRNTAC#O A URJETQSAdriana
Lima
de Queir6s Mwttoso
TESE SUBMETIDA AO CORPO DOCENTE DA CQORDENACBO DOS PBOGRAMAS DE PdS-GBADUACAO
EM
ENGENHARIA DA UNIVERSIDADE FEDERAL DO R I O DE JANEIRO COMO PARTE DOS REQUISITOS NECESSAHIOÇ PARA A OHIENTACAO DO GRAU DE MESTRE EM CIBNCIAS EM ENCENHABIADE
SISTEMAS E COMPUTACAO.Aprovada por: J na Regina C. da Rocha, D.
Sc.
.( P r e s i d e n t e ) Profa. Çon'ia S. S e t t e , D. 1n.q. h - - - Souza,PhD.
MATTOSO, ADBIANA L I M A DE QUEIB6S
TABA-QBJ:
U m Ambiente de Desenvolvimento d eSaf
twaro com O r i e n t a c 3 o a Objetos [Rio d e J a n e i r o 1 1 9 9 0X I , 1 4 8 a. 29,7cm ( COPPE/UFRJ,
M. Sc.
, Engenharia d e S i s t e m a s e Comnutac%o, 1990)Tese
-
U n i v e r s i d a d e F e d e r a l doRio d e
J a n e i r o , COPPE 1. Ambientes de Desenvolvimento de S o f t w a r eAo L u i z C a r l o s p e l a s u a d e d i c a d o s a p o i o c o n s t a n t e s . A L u c i a p e l o seu c a r i n h o .
A o s meus p a i s pela motivac3o e a p o i o .
A rninha i r m â Marta p e l a s u a a j u d a sempre que n e c e s s k i a . A minha i r m â L e c Z l i a p e l o seu a p o i o .
A P r o f e s s o r a Ana Regina C a v a L c a n t i da Rocha ela o p o r t u n i d a d e d e s t a tema de tese e p a l a d e d i c a c 2 0 e o r i e n t a c 3 o d e s t e t r a b a l h o .
Aos p r o f e s s o r e s S o n i a Schechtman S e t t e e J a n o M u r e i r a d e S f x z a p o r darem a honra da p a r t i c i p a r e m da minha banca de
t e s e .
Ao Guilherme H o r t a Travasses pelo a p o i o sempre que n e c e s s á r i o .
Ao coleqa G e r a l d o Xexso n o r m e a j u d a r a a v a l i a r o m6todo. A c o l e ~ a Maria C r i s t i n a P a s s o s .
Aos p r o f e s s o r e s e f u n c i o n a r i o s d a COPPE/Çistemas. B CAPEG p e l o a p o i o f i n a n c e i r o .
Resumo da Tese a p r e s e n t a d a à COPPE/UFRJ como
arte
dos r e a u i s i t o s n e c e s s á r i o s s a r a o b t e n c a u do wrau d e Mestre e m L i 5 n c i a s (M.
§c. ).
TABA-OBJ: IJm Ambiente d e Desenvolvimento d e So£tware com O r i e n t a c 3 0 a Q b J e t o s
A d r i a n a Lima da Q u e i r i s M a t t o ~ o
O r i e n t a d o r : Ana Regina C a v a l c a n t i da Rocha,
I?.
Se. Programa: E n g e n h a r i a d e S i ç t e m a ç e Comsutac3oE s t e t r a b a l h o a n r e s e n t a o TABA-OBJ, um a m b i e n t e da d e s e n v o l v i m e n t o d e s o £ t w a r e com o r i e n t a c h o a o b j e t o s , n a r a a E s t a d o TABA. Este a m b i e n t e visa a p o i a r o p r o c e s s o de d e s e n v a l v i m s n t o d e sof tware baseado no paradi,qma d e obAatos, o f e r e c e n d o u m rngtodo, um modelo d e c i c l n d e v i d a e i n s t r u m e n t o s a u e a u x i l i a m d u r a n t e as etapas do d e s e n v o l - vimento. F i n a l m e n t e 6 a p r e s e n t a d o o E d i t o r d e Diagrama d e C l a s s e s , uma f e r r a m e n t a . q r á f i c a d e m a i o & f a s e d e A n 6 l i s e do rn6todo ~ r o p o s t o no
TABA-OBJ.
A b s t r a c t of T h e s i s m e s e n t e d t o
CÕPPE/UFKJ
as p a r t i a 1 f u l f i l l m e n t of t h e r e q u i r e m e n t s f o r t h e d e q r e e o£ M a s t e r of S c i e n c e (M.
Sc. 1 .TABA-QBJ:
An Q b j e c t - O r i e n t e d S o f t w a r e Devdonment Environment d d r i a n a Lima d e Q u e i r e s MattusoThesic; G u ~ e r v i s s r : Ana Regina C a v a l c a n t i da Rocha,
D.
Sc. Dspartrnent: C o m ~ u t e r S ~ s t e m ~ EnclineerincyThis
work p r e s e n t s TABA-QBJ, a n O b j s c t - O r i e n t e d Sof t- ware Devslopment Environment, f o r t h e TABA Work Ç t a t i o n . T h i ç environrnent supnorts t h e develooment R r o c e s s b a s s d nn t h e ubject p a r a d i ~ m , providin.q a method, a l i f e - c y c l e m o d d and i n s t r u r n e n t s t h a t a i d s t h e d e v s l o a m e n t s h a s e s . F i n a l l y , t h e L f a s s Diagram E d i t o r i s n r e s e n t e d , a s u p n o r t i n . q . q r a p h i c t o 0 1 f o r t h e a n a l y s i s ahase o f t h e TABA-UBJ methad.HHHHHHHHHHHH
HHHHH
HHHHHHHHHHHH
WHHHH "CSYC"
n
cD. w if O
a
O iJl ri- Iiia
UJO
i+ m 3 d m Y 9Y
I-I O d I-"m
3 ri- m*
13 rr O YHHHH 'ri-
.
P
b.3 M X 6 m Y P- EJ m 3 d- o U! Y (D m I-' P- N Pi IL O U! 3 a, Y m r=- C m I-' t-L
7
O 6 O 10 d- Pi P.r
r- o I-'- m C-' a O rt Oa
o P. m U1 O t-h2-
Pi Y m n O 3 O N P* Li,%
Pi €2 w 0 Pi O r?' LI- m Ir o Ln 'd Y O a O 10 d- Pia
m2
3 01 d- o fL Otl?
a
8 111 ni 3 4 O I-' C r- H H H W r P On
r- n I-' O P &i C P-a
Pi 0. O ;b 3z
m 3 d- m c3*
td*
I O td+
m Ca H H H?"
E"L O =r Oa
[D r Orn
a
(Dn
r- O C-' Oa
m G r- p. ma
Pi Y a, 3 Y r- (D 3 rf a, 0 w O H H H F' 03F
iB m P C o I-' d r-Q
5
o Hrn
Y m 3 ai P d- 01 I-' m a H H H H H H W W iri iPY
O
O IL d- n: 0 t-' d- O r- d d lu i2 10 0 iD 3 a,a
YO mt d (D r- Ja
P, C ni !L Y [D 10 rn 02 n (D m 10 Y rt 022'
$
0m
C-' 10.
IB ' r* ' C ' lu 10.
..
m (Ti W G.9 4 r-'.t
tc L+ oa
[o m O li-a ri-;
Y ai fi O 3 O Y r. (D 3 d- a, Ç) PK O Pi Orr
ct- ID d- o !J' a c0. . .
111
.
5 . 1 . 1 DefiniçAo do Sistema 8 1 111.
5 . 1 . 1 . 1 R o t e i r o s ~ r o ~ o ç t o s na l i t e r a t u r a. . .
H 1 I11.
5 . 1 . 1 . 2 R o t e i r o s para a Fase d e D e f i n i ç b o doAmbiente
TABA-OBJ
. . .
89 111.
5 . 1 . 2 E s n e c i f i c a c 3 o de H e a u i s i t o s de S o f t w a r a. . .
92 I11.
5 . 1 .S
.
I R o t e i r o s ~ r o ~ s s t o s na l i t e r a t u r a. . .
9 2 I11.
5 . 1 . 2.
2 R o t e i r o oara a E s ~ e c i f i c a c h o d eHe-
a u i s i t o s d e S o f t w a r e d o Ambiente TABA-OBJ
. . . .
96 111.
5.1. 3 E s p s c i f i c a c B o d e P r o j e t o. . .
98I V
. I. O ~ r o t c i t i - o o do E d i t o r d e Dlaclrarna d a C l a s s e s( E D C )
. . .
1 Q S. . .
I V
.
1.1 D e f i n i c â o do Sistema 1 0 3I V
.
1.
2 ESpecificaç3.o de R e u u i s i t o s. . .
1 0 6S V
.
1.
3 E s ~ e c i £ i c a ç C . o de P r o j e t o. . .
1 1 9 I Y . 2 P r o u o s t a s d e ferramentas para o TABA-OBJ. . .
140
f
flDf
CE
DE
FIGURAR
U m a
r e ~ r e s e n t a c 8 o
~ r ã f i c z w
dosI:~.ieto
ianela.
. . . .
6Classe
J a r r e l a
. . .
7...
Envio
demensanetis e n t r e
o h i e t ù s . 8. . . .
H i e r a r a u i a d e Generali~acBo/Es3~!e1:iali~zc;Wc~.
10. . .
Heratic
: ;k H r i i l t i r ~ ~ l a10
. . .
J a n e l a s S o b r e r ~ ù s t w s .
l i
Lista
de Janelas
. . .
i 1 r). . .
D i a m a m a de
Booch
t9. . .
Carmda de Assunto
35
. . .
Camada de üb3eto 3 6. . .
Carnadâ de E s t r u t u r a .
38. . .
Cor1exrZ;es
d eIrist&r~cs;ias.
3 9Camada
daA t r i b u t o s
. . .
4 0. . .
Camada de S e r v i c o s
42
. . .
8modelo
d eÃ~rusamenLos
5 8ÍNDZCE
DE
TABELAS
1. Quadro Cornwarativo d e Lincfuaclens d e Pro.qra-
C A P I T U L O I
-
I N T R O D U G Ã OE s t e c a p i t u l o d e s c r e v e o s f a t c r s s que mntivaram o d e s e n v o l v i m e n t o d e s t a t e s e ( s e ç % o
I
1 , d e f i n e s e u s o b j e t i v o ç ( s e ç % o I . 2) e a p r e s e n t a s u a or.qanizaç3.0 ( sec2ioDurant.e o s a n o s 8 0 , o paradi'qma d e o b S e t o s ocupou posiciio d e d e s t a u u e e m d i v e r s a s á r e a s d e p e s a u i s a d a i n f o r m á t i c a . Tendo s u a origem n a s 1in.quagens d e i7ro.qramaçiio como SIMULA e S m a l l t a l k C I I , a o r i e n t a c 3 . o a o b j e t o s provocou i n t e r e s s e em p e s a u i s a d o r e s d e á r e a s como Banco d e Dados, I n t e r f a c e com o U s u á r i o , I n t e l i g ê n c i a A r t i f i c i a l e E n g e n h a r i a de S o f t w a r e . Segundo MONTE C2
I ,
a p o ~ u l a r i c a ç 8 o do termo o r i e n t a c 3 0 a o b j e t o s se deve a o s u c e s s o d e a l g u n s s i s t e m a s uue humanizaram o uso e a programac3o de comrtutadores. E s s e s s i s t e m a s , crue f o r a m a u t o d e f i n i d o s como " o r i e n t a d o s a o b j e t o s ",
s % o b a s e a d o s e m n o ç 8 e s , c o n s i d e r a d a s i n t u i t i v a s a o ser humano, t a i s como o b j e t o s , c l a s s e s , e s t a d o , a s 3 0 e r e a c a o .A p a r t i r do S m a l l t a l k , uue f o i a p r i m e i r a l i n q u a g e m de programaç30 a t r a b a l h a r com e s s a s n o c 6 e s , sur.qiram i n ú m e r a s 1in.qua.qens e e x t e n s õ e s d e 1ingua.qens d e wro.qramac30 t r a d i - c i o n a i s Rara s u p o r t a r o s e l e m e n t o s da o r i e n t a c 3 . 0 a o b j e t o s .
Com a d i f u s a o d a programac%o o r i e n t a d a a o b j e t o s , s e n t i u - s e a n e c e s s i d a d e de s e u t i l i z a r a f i l o s o f i a d a o r i e n t a ç â o a o b j e t o s e m t o d o o p r o c e s s o d e d e s e n v o l v i m e n t o , d e s d e a e s ~ e c i f i c a ç - 3 0 a t é a imwlementaç3.o e n%o somente na
fase d e imrtlementac-30. 0 s métodos d e d e s e n v o l v i m e n t o d e s o f t w a r e t r a d i c i o n a i s , e n t r e t a n t o , organizam o p r o j e t o e m t o r n o d e s u a s f u n c 8 e s ou em t o r n o de s e u s d a d o s , d i f e r e n t e m e n t e d a arogramac-30 o r i e n t a d a a o b j e t o s o n d s os
dados e t o d a s as operações que manipulam e s s e s d a d o s , e s t % o agrupados
e m
uma 6 n i c a e s t r u t u r a que s â o o s o b j e t o s .Caso desde o i n í c i o do desenvolvimento se u t i l i z a s s e a o r i e n t a ç 8 0 a o b j e t o s , o desenvolvimento d e s o f t w a r e s e r i a mais f á c i l , p o i s se t r a b a l h a r i a sempre com o mesmo elemento d e a b s t r a ç d o , o s obdetos. Apesar de e x i s t i r e m d i v e r s a s p r o p o s t a s p a r a desenvolvimento d e s o f t w a r e com o r f e n t a ç i i o a o b 3 e t o s C3 1 ,
C4
1, C51,
C63
e C7 1, nãohd
a i n d a um método já sedimentado que cubra t o d o o p r o c e s s o d e desenvolvimento.Houve, e n t a o , uma grande motivaçlio d e se e s t u d a r o paradigrna da o r i e n t a ç s o a o b j e t o s e
sua
a p l i c a ç 3 o na Engenharia d e Software. Todavia, como n%o encontrou-se nenhum e s t u d o propondoum
ambiente d e desenvolvimento de s o f t w a r e , com um método, um modelo d e c i c l o de v i d a e i n s - trumentos e f e r r a m e n t a s que dessem s u p o r t e a o desenvol- vimento d e s o f tware com o r i e n t a ç â o a o b j e t o s , s e n t i u - s e mstivac$Xo p a r a r e a l i z a r e s t u d o s d e maneiraa
proporum
ambiente da desenvolvimento d e s o f t w a r e o r i e n t a d o a o b jekos.Por o u t r o l a d o , e s t á e m andamento na
COPPE/UFRJ o
P r o j e t oTABA
C83, quev i s a
a
c o n s t r u ç 3 0 d e uma e s t a ç ã od e
t r a b a l h o , c o n f i g u r á v e l p a r a desenvolvimento de s o f t w a r e que s u p o r t a desde a criaç%o d e ambientes de desenvolvimento de s o f t w a r e que consideram a s c a r a c t e r í s t i c a s dossistemas
a serem d e s e n v o l v i d o s até a p r ó p r i a execuçâo d e s t e s s i s t e m a s .Deste modo, s e n t i u - s e a motivaçQo d e propor um ambiente d e desenvolvimenta d e s o f t w a r e o r i e n t a d o
a
o b j e t o s q u e possa f a z e r p a r t e da Estaç%oTABA,
o ambienteTABA-OBJ.
I.
2
-
Objetivos
da tese
O o b j e t i v o p r i n c i p a l d e s t a
tese
é a d e f i n i ç g o d e um ambiente d e desenvolvimenta de s o f t w a r e o r i e n t a d o a o b 3 a t o s p a r aa
e s t a ç a oTABA.
o ambienteTABA-OBJ.
Para a t i n g i r e s s e o b j e t i v o , f o i f e i t a i n i c i a l m e n t e , uma r e v i s â o b i b l i o g r á f i c a , d e f i n i n d o o s c o n c e i t o s b á s i c o s da o r i e n t a ç & o a o b S e t o s , descrevendo algumas l i n g u a g e n s d e programaçtío o r i e n t a d a s
a
o b j e t o s e a p r e s e n t a n d o o s métodos de desenvolvimento d e s o f t w a r e com o r i e n t a ç a o a o b 3 e t o s e x i s t e n t e s naL i
t e r a t u r a . P o s t e r i o r m e n t e , f o i p r o p o s t oum
método d e desenvol- vimento d e s o f t w a r e , c o b r i n d o t o d o o p r o c e s s o de desenvol- vimento.A
e l a b o r ç h o d e s t e método f o i f e i t ae m
três
e t a p a s .1
n i c i a l m e n t e , f o i p r o p o s t o um métodoC9
I
que t e v e como o b S e t i v oser
mais a b r a n g e n t e , a o c o n t r á r i a dos m6todos e n c o n t r a d o s na l i t e r a t u r a que cobriam somente a f a s e d e p r o j e t o ou d e a n á l i s e .Após
t e r - s e u t i l i z a d oo
métodoe m
d o i s p r o S e t o s , a p r o p o s t a f o i a v a l i a d ae
s o f r e u algumas modificaç4es.A
p a r t i r d e s t a e x p e r i ê n c i a , o método f o i r e f e i t oe
a p r e s e n t a d o e mCIO].
P a r a a e l a b o r a ç % o f i n a l do m6tod0, f o i f e i t o um e s t u d o c r í t i c o dos modelos d e c i c l o d e v i d a e r o t e i r o s d e documentaç%o pesquisados. Finalmente, f o i implementada uma d a s f e r r a m e n t a s p r o p o s t a s p a r a oTABA-OBJ,
u t i l i z a n d o - s e o ambiente d e programaç&o ActorC 1
11.
I.
3-
Qrganiaaçlío
da
tese
Esta
t e s e e s t á o r g a n i z a d a em c i n c o capitu1"as. O c a p í t u l oI
contém a introduç2io e a p r e s e n t ao s
f a t o r e sque
motivaram
s u a
e l a b o r a & í o , d e f i n ea s
o b j e t i v o s d a t e s e e s u a organizaçgo.O
c a p i t u l oI1
faz
uma
r e v i s a 0 b i b l i o g r á f i c a d a o r i e n t a ç ã o a o b j e t o s , d e f i n i n d o s e u s c o n c e i t o s b á s i c o s , apresen%andõ l i n g u a g e n s d e programaç&o e m6todoa p a r a o desenvolvimento de s o f t w a r e com o r i e n t a ç h o a obSetos.O c a p í t u l o
I11
t r a t a d e ambientes d e desenvolvimento de s o f t w a r a o r i e n t a d o a o b j e t o s . J u s t i f i c a - s e a d e f i n i c h o do ambienteTABA-OBJ
e a p r e s e n t a - s e a d e f i n i c a o d e termosde ambientes d e desenvolvimento d e s o f t w a r e u t i l i z a d a n e s t a t e s e . Ainda
neste
capítulo,
sâofeitos
estudos s o b r e modelos d e c i c l o de v i d a e ro-beiros d e documentaçbo. Finalmente é a p r e s e n t a d o o mGtodo p r o p o s t o , as c r í t i c a s f e i t a s a p a r t i r des u a
u t i l i z a ç % o e a nova v e r s a o do mhtodo.No c a p í t u l o
I V
a p r e s e n t a - s e a e s p e c i £ i e a ç & o e p r o j e t o da f e r r a m e n t a , bem comouma
d e s c x i ç % o de s u a implementaçâo.No c a p í t u l o V s&o e x p o s t a s as c o n c l u s ã e s da tese e o c a p í t u l o
V I
contémas
r e f e r 8 n c i . a ~ b i b l i o g r á f i c a s .E s t e c a p í t u l o a a r e s e n t a uma v i s 2 0 g e r a l d a f i l o s o f i a e d o s c o n c e i t o s bAsicos d a orientaç3.0 a o b j e t o s e d e s c r e v e m6todos de d e s e n v o l v i m e n t o de s o f t w a r e e l i n g u a g e n s d e srogramaç3.o a u e usam o paradi.qma de o b j e t o s .
Na s e ç h 11.1 s e r 3 0 a p r e s e n t a d o s o s c o n c e i t o s b & s i c o s e c a r a c t e r i s t i c a s da o r i e n t a c 3 . o a o b j e t o s , na s e d o 11. 2 r e r h o m o s t r a d a s al.qumas 1in.qua.qenç d e pro.qramac20 com a r i e n t a c h o a o b j e t o s . F i n a l m e n t e , a s e c 2 0 1 1 . 5 a p r e s e n t a r á a l g u n s m6todos d e d e s e n v o l v i m e n t o de s o f t w a r e o r i e n t a d o a o b j e t o s .
A £ i l o s o £ i a d a o r i e n t a d o a o b j e t o s se b a s e i a na noc%o i n t u i t i v a s u e a5 p e s s o a s tt3ri-1 d e
obdeto.
i. e.
.
uue
srnuncia
B povoado p o ro b i e t o s
uue interanen~ ent,re
si.
A
i d g i a , p o r t a n t o , é p e n s a r e m d e s e n v o l v i m e n t o d e s o f t w a r e compasto Doro b j e t o s
en&o
~tl)r d c f d ~ s . P P - o c e d f a e n t c t s e ccrniirole C C ~ T ~ e l e m e n t o s i s o l a d a m e n t e .Nos m6todos d e d n r e n v o l v i m e n t o da sctftware t r a d i c i o n a i s
h2
uma d i s t S n c i a muito g r a n d e e n t r a o p r ~ b l e m a no mundo r e a l E] 4~1a a b s t r a ç 8 o no p r o d u t o f i n a l ( " . q a p s e m â n t i c o " ) . A i d é i a d a o r i e n t a c 8 0 a o b 3 e t o s é d e se t r a b a l h a r com noçcies i n t u i t i v a s ( o b j e t o s e a c b e s i d u r a n t e t o d o o c i c l o de d e s e n v o l v i m e n t o , a t r a s a n d o - s e a o m5ximo a i n t r o d u ç 5 0 de c o n c e i t o s d e p r o c e s s a m e n t o d e d a d o s , diminuindo p o r t a n t o e s s a d i s t â n c i a . O paradiqma de o r i e n t a ç ã o a ~ b j e t o s t e v e origem n a s l i n g u a g e n s d e p r o g r a m a ~ & o como SIMULA ( 1 9 0 7 ),
LISP a Ç m a l l t a l k ( 19681 . Porem, S m a l l t a l k £ o i a p r i m e i r a linguagemsue t r a n s f o r m o u s paradi.qma de o b j e t u s num modelo c o n c r e t a .
AaOs
i n h m e r a s ~ e s a u i s a s no l a b o r a t h r i oPAHC
d a Xerox, prosse.quindo o ~ r o j e t o d e Alan Kay, GOLDBERG C1 1 consecruiu,com a c o n s t r u ç & o do S m a l l t a l k , d e f i n i r c l a r a m e n t e o s c o n c e i t o s b á s i c o s
da
o r i e n t a ç â o a obJetos. AprssenBarernos, a s e g u i r , a s d e f i n i ç B e s d e s s e s c o n c e i t o s . J a n e l a t iI
I
-
I
I
AbxeJanela
tI
I
-
I
I C r i a J a n e l a lI
v
I
I 1I
.
I
1
IMoveJanela
I
I
I
F i g u r a1
-
Uma
r e p r e s e n t a ç â o g r á f i c a do ob3eto J a n e l a E n t i d a d e que c o n s i s t e d e dados e t o d a s a s o p e r a ç h s que podem manipular e s s e s dados. O único a c e s s o a o s dados d e s s e o b j e t o é a t r a v é s d e s u a s operaçoes. Cada o b j e t oreside
na sua p r á p r i a máquina a b s t r a t a e o b j e t o s se comunicam e n t r e s i a t r a v é s de mensagensC121.
Por exemplo,num
s i s t e m a c u j a i n t e r f a c e s e j a baseada em j a n e l a s e c a r d á p i o s , um o b j e t o t í p i c o s e r i a o o b j e t oJanela.
Este
obdeto a g r u p a r i a t o d a s a s c a r a c t e r í s t i c a s comuns As j a n e l a s do s i s t e m a e também s u a s o p e r a ç b e s , que poderiamser:
AbreJanela, C r i a J a n e l a , F e c h a J a n e l a , MoveJanela ( F i g u r ai).
Deste modo, t o d a s a s informaçoes p e r t i n e n t e sa um
o b j e t o(
seus
a t r i b u t o s e o p e r a ç b s ) e s t a r i a m c o n c e n t r a d a sCf
asseConjunto d e o b j e t o s com c a r a c t e r l s t i c a s semelhantes e que respondem às mensagens da mesma maneira.
Um
o b j e t od
d i t o ser uma i n s l â n c i a d e c l a s s e . No c a ç o do exemplo a n t e r i o r , poderíamos p e n s a r que o s i s t e m a p o d e r i a implementar v á r i a s S a n e l a s , t o d a s possuindo um c o n j u n t o d e c a r a c t e r í s t i c a s e operaqbes
e m
comum ( F i g u r a2).
Poderíamos p e n s a r e m r e u n i r t o d a s e s s a s c a r a c t e r í s t i c a s em comume m
uma Única c l a s s eJanela.
w
que
t o d a sa s
i a n e l a s
pertenceriam. C l a s s e J a n e l a
I
J a n e l a 1-
I
IconS. de I I J a n e l a 2I
o p e r a c õ e sI
I
le a t r i b u t o sl
I
-
I
JanelaYI
I
JanelaX II
F i g u r a2
-
C l a s s e J a n e l aMensagem
S a l i c i t a ç i í o d e um o b j e t o p a r a que o u t r o ob3eto e f e t u e uma d e s u a s operaç6es.O
o b j e t o r e c e p t o r pode e n v i a r uma mensagem d e v o l t a com o v a l o r deseJado e também pode e n v i a r mensagens p a r a o u t r o s o b j e t o s e assim por d i a n t e L131.Qualquer objeto do
sistema
que q u i s e s s e c r i a ruma
j a n e l a , por exemplo, e n v i a r i a uma mensagem de C r i a J a n e l a p a r a o o b j e t o J a n e l a . E s t e o b j e t o v e r i f i c a r i a se e l e s a b e t r a t a r essa mensagem.i.e., se e l e p o s s u i a o p e r a ç h s o l i c i t a d a e , c a s o p o s i t i v o , e l e e f e t u a r i a e s t a operaçao. A operaçgo d e C r i a J a n e l a , p o d e r i a n e c e s s i t a r d e umafunç8o
do t i p o DesenhaCardápio, provocando o e n v i o d e uma o u t r amensagem a o o b j e t o Cardápio e a s s i m por d i a n t e , como na F i g u r a 3. J a n e l a
-
-
Cardápio1
I
CP ia- ,-II
Desenha-
pL--?I
I
I
>
[Cria
II
>.IDesenhaI I
I
I
JanelaI C a r d B ~ i o
I
.I
I
II
I
i
I
- -
I
1
I
I
-
I
F i g u r a 3-
Envio d e mensagens e n t r e o b j e t o sEncapsulamento de Dados
T6cnica d e esconder a e s t r u t u r ade
um o b j e t oa t r a s
d e um c o n j u n t o de tsperaçoes s o b r e e l e , sendo a c e s s í v e l somente a t r a v é s d e s t a s operaçbes.Seguindo o exemplo a n t e r i o r , a Gnica maneira d e se comunicar com
o
obdeto J a n e l a 6 enviando-lhe uma mensagem. Caso se q u e i r a c r i a r uma j a n e l a , n%o set e m
a c e s s o a o código i n t e r n o da ogeraç%oCriaJanela, isto
é , só se comunica com um o b j e t a a t r a v e s d e s u a i n t e r f a c e , sendo s u a p a r t e i n t e r n a i n a c e s s í v e l .Abstraçk
de Dados
U t i l i z a ç B o dos dados
s e m
se
preocupar coma
s u a e s t r u t u r a ç S o i n t e r n a .12 o nome dado As operaçbes de um o b j e t o . Ao e n v i a r
uma
mensagem p a r a um o b j e t o , o o u t r oobjeto
( e m i s s o r d a mensagem), e s t á s o l i c i t a n d o que o o b j e t o r e c e p t o rexecute
o r e s p e c t i v o método. Outros o b j e t o snClo
t ê m a c e s s o a o código i n t e r n odos
mittodos de um o b j e t o . Diversos o b j e t o s podem t e r métodos d i f e r e n t e s , porém com o mesmo nome.Usando O exemplo a n t e r i o r , C r i a J a n e l a e
Desenhacardápio
seriam
métodos de J a n e l ae
Cardápio respectivamente.Criaçtio d e s u b c l a s s e s , a p a r t i r d e uma c l a s s e
m a i s
g e n g r i c a ( s u p e r c l a s s e ),
herdando t o d a s a s c a r a c t e r í s t i c a sd e s s a c l a s s e .
No c a s o d o exemplo a n t e r i o r , poderíamos pensar que a c l a s s e J a n e l a é uma e s g e c i a l i z a ç % a d e uma c l a s s e mais g e n b r i c a , como
a
c l a s s e Retângulo, que c r i a , desenha e move r e t â n g u l o s na t e l a . Comoa s
j a n e l a s e m g e r a l s â o r e t a n g u l o s e a s s u a s operações b á s i c a s silo as mesmas, poderíamos c r i a r a c l a s s e J a n e l a a p a r t i r da c l a s s e Retângulo.Com
o
mecanismo d e h e r a n ç a , a o sec r i a r
uma c l a s s e a p a r t i r d e o u t r a c l a s s e , a nova c l a s s e ( s u b c l a s s e da classe o r i g i n a l ) h e r d a t o d a s a s s u a s c a r a c t e r í s t i c a s . I s t o s i g n i f i c a que ao s e d e f i n i r uma s u b c l a s s e , esta automaticamente ganha ( herda) t o d o s o s a t r i b u t o s e operações da(s)
c l a s s e (s)
mâe(s)
( s u p e r c l a s s e s ).
Neste
c a s o , J a n e l a é s u b c l a s s e d e Retângula.
Do
mesmo modo HeLângulo é s u p e r c l a s s e d e J a n e l a .Esse mecanismo d e herança é conhecido como
generalizaç%io/ee;pecializa~8o.
I s t o é, a p a r t i r de umaclasse
mais g e n é r i c a ( g e n e r a l i z a ç â o ) como a c l a s s e Retângulo, que p o s s u i c a r a c t e r í s t i c a s e o p e r a ç 6 e s comuns a o desenho e movimentaçao de r e t s n g u l o s na t e l a , pode-se c r i a r a s u b c l a s s e J a n e l a . E s t a s u b c l a s s e ,a l B m
d e h e r d a ras
c a r a c t e r í s t i c a s g e n é r i c a s de Retângulo p o d e r i ater
o u t r a s c a r a c t e r í s t i c a s mais e s p e c i f i c a s { e s p e c i a l i z a ç S o )ds
j a n e l a s ( F i g u r a4).
s u p e r c l a s s e : c l a s s e : Retângulo
i
1 I J a n e l a I II
s u b c l a s s e : JanelaDeTexto JanelaDeGr&fico F i g u r a 4-
H i e r a r q u i a d eg e n e r a l i z a ~ % o / e s g e c i a l i z a ç t i o
Herança
Mtiltipla
C r i a ç h d e uma s u b c l a s s e , a p a r t i r de mais d e uma classe d i f e r e n t e herdando a s c a r a c t e r í s t i c a s d e t o d a s elas.
Quando uma c l a s s e
t e m
mais d e uma s u p e r c l a s s e ,6
d i t o haver herança m ú l t i p l a . Seguindo o mesmo exemplo, p o d e r i a s e c r i a ruma
classe
JanelaBeTexto que p o d e r i aser
s u b c l a s s e d e J a n e l ae,
a o mesmo tempo, por manipular c a d e i a s d e t e x t o , tambémser
s u b c l a s s e da classe CadeiaDeTexto ( F i g u r a5).
J a n e l a CadeiaDeTextoI
I I 1 81
JanelaDeTexto F i g u r a5
-
Herança M ú l t i p l aAcoplamento
Dinâmico
Acoplamento dinâmico s i g n i f i c a que o acoplamento d e uma mensagem com s e u método c o r r e s p o n d e n t e
B
f e i t oe m
tempo d e execuçtio. Com i s s o , uma mesma mensagem podeser
t r a t a d a d i f e r e n t e m e n t e d e acordocom
o o b j e t o que f o r r e c e b ê - l a , Um ob,jeto pode e n v i a r mensagens p a r a o b j e t o s aserem
c r i a d o s posteriormente, Por exemplo, no c a s o d e gerenciamento d e j a n e l a s s o b r e p o s t a s ( F i g u r a 6 ) .F i g u r a 6
-
J a n e l a s S o b r e p o s t a sEm
sistemas cu3a i n t e r f a c e é baseadae m
j a n e l a s , o u s u á r i o poda a b r i r d i v e r s a s i a n e l a s a o mesmo tempo e move-l a s
na t e l a , i n c l u s i v e sobrepondo-as. Nesses s i s t e m a s é n e c e s s á r i o que h a j a um mecanismo p a r a g e r e n c i a r e s s a s j a n e l a s .U m a maneira
4
de se e n c a d e a r a s j a n e l a s que forem sendo a b e r t a s na t e l a , e m uma l i s t a encabeçada p e l a j a n e l a da f r e n t e . Frequentemente, porém, a s j a n e l a s a b e r t a s possuem informaçbes d i s t i n t a s , ou s e j a , cada j a n e l a pode ser d e uma c l a s s e d i f e r e n t e : contendo apenas t e x t o , contendo o b j e t o s g r & f i c o s , e t c .A s
Janelas
abertas
v&o
sendo
o r g a n i z a d a se m
uma
l i s t a .
como na f i g u r a 7. J a n e l aDaFrente i I J a n e l a 1 J a n e l a 2 J a n e l a 3 J a n e l a 4
-
7 I , i-
I I r $ ! I r 3 1I
rl.1 1 I l l l 1 1 1 1 1 1 I I 1 1 1 1 i 1 l l l I I I I I 1 1 1 1 1 1I
II-'
1
-
-
I-'I
-
IAt
I 7
I& F i g u r a 7-
Lista
d e J a n e l a sCaso
a
j a n e l a da f r e n t e seja f e c h a d a , a s demais s e r â o r e d e s c o b e r t a s e p r e c i s a r % oser
redesenhadas. Comoa s
S a n e l a s s a o d e t i p o s d i f e r e n t e s , cada uma tem um modo d e se r e d e s e n h a r ( t e x t o . g r á f i c o , etc.1.
Em
uma linguagem . t r a d i c i o n a l , em que o s t i p o s d e t o d a s as v a r i A v e i s ssod e f i n i d o s em tempo d e compilaç%o, t e r i a m o s que d e f i n i r uma v a r i á v e l p a r a cada t i p o d e j a n e l a ( JanelaDeTexto
,
JanelaDeGráfico, e t c . ) .
Na
o r i e n t a g g o a o b j e t o s nao há o c o n c e i t o d e t i p o s , i. e.,
uma mesma variavel, pode c o n t e r um i n t e i r o . uma c a d e i a de t e x t o ( s t r i n g ) , uma J a n e l a , etc. ., d u r a n t e a e x e c u ç b de um programa. Deste modo, u t i l i z a n d o - se uma LPOO, pode-se t e r am e s m a
v a r i á v e l apontando p a r a t o d o s o s t i p o s d e j a n e l a .A
s e g u i r , apresentaremos d o i s a l g o r i t m o s p a r a r e s o l v e r esse problema. O p r i m e i r o , no c a s o d e s e u s a r uma linguagem1
t r a d i c i o n a l e o segundo usando-se 'uma LPOO. No p r i m e i r o c a s o , uma d a s maneiras mais o t i m i z a d a s s e i a um Único procedimento p a r a r e d e s e n h a r J a n e l a que, d e acordo com o s e u t i p o , e x e c u t a r i a o t r e c h o correspondente.
Redesenha:
Case
J a n e l a , tipofaz
t e x t o :---
g r á f i c o s :---
d e f a u l t :
---
Fim-case
No segundo c a s o , p o d e r i a - s e u t i l i z a r uma ú n i c a v a r i á v e l
e
em
tempo de execuç%o a mesma mensagem d e Redesenhar,i r i a
p a r a o o b j e t o que a ' v a r i á v e l e s t i v e s s eJ:
=
J a n e l a D a P r e n t e ienauants
J 4 2 n u l ofaz
Hedesenha ( J) iJ :
=
P r o x ( J) if
im-enauanto
3G ~ m o n8.o h á c o n c e i t o de t i a o s , uma bica v a r i á v e l t o
p o n t e i r o
J)
pode a p o n t a r D a r a ti1305 d i £ e r e n t e s comoJ a n e l a D e T e x t o , J a n e l a D e G r 5 f i c 0 , etc.
i)
No c a s o d e l i n g u a g e n s t r a d i c i o n a i s , t o d o s o s g r o c e d i m e n t o s d e t o d a s as j a n e l a s ( c o n t i d o s no''case" f i c a m na memúria. Nas L P Q O s , só o método
( p r o c e d i m e n t o ) do o b j e t o r e q u i s i t a d o será c a r r e g a d o .
ii)
Caso se d e s e j e c r i a r u m novo tipo d e - j a n e l a , usandoC
a s 1in.quagens t r a d i c i o n a i s , d e v e - s e c r i a r m a i s uma opcbo d e n t r o do " c a s e " , para t r a t a r e s t e novo t i a o d e S a n e l a , além d e t e r a u e s e d e f i n i r m a i s um t i p o d e v a r i & v e l para a nova j a n e l a e c o m p i l a r t u d o d e novo.
J&
e m umaLPOO.
cria-se uma nova classe d e j a n e l a , com seu método e s p e c í f i c o D a r a r e d e s e n h a r , sem a l t e r a rnenhuma
o u t r a
artee
t.udo c ~ n t ~ i n u na
f u n c i o n a r , n o i s a m e s m a v a r i g v e l ~ o d e r á a ~ o n t a r R a r aa nova j a n e l a e a mesma mensagem ser5 e n v i a d a para e s t a j a n e l a também, aue e x e c u t a r á o s e u método c o r r e s p o n d e n t e .
Permite que a e s t r u t u r a i n t e r n a ( e s t r u t u r a d e dados, a l g o r i t m o s ,
etc.
d e um ob.jeto s e d a i n a c e s s í v e l ( o c u l t a d a )s 6 sendo a l c a n ç a d a a t r a v é s d e s u a s operações,
11.2.
Prógramaçêlo
Orientada
a Ob3stos
6
Em
1982,
RENTSCW
C151
fez
uma p r e v i s h o d e que a. Programac$ío O r i e n t a d a a Objetos (POO) s e r i anos
anos80
o
que a programaçho e s t r u t u r a d a f o i nos anos 70. Realmente, d e l á p a r a cá, d e acordo comSTEPIK &
BOBROW
C161, o número de p e s q u i s a s e l i n g u a g e n s que s u r g i r a m i n t r o d u z i n d o e s s a s c o n c e i t o s f o i muito g r a n d e , comprovando o s u c e s s o d e s s a t é c n i c a .Ainda h o j e , há uma grande polêmica s o b r e q u a i s o s c o n c e i t o s fundamentais p a r a o e s t i l o d e POO. Uma linguagem que s u p o r t a o r i e n t a ç % o a o b j e t o s , d e acordo com PASCOE
C17
3 .
tem
quet e r
q u a t r o elementos: o c u l t a ç à o d e informaçtio, a b s t r a ç 8 o d e dados, acoplamento dinâmico e herança.J B
HALBERT
&O'BRIEN
C183 ,
a c r e d i t a m que e s s e n c i a i s s3.o o s c o n c e i t o s d e herança e t i p o s h i e r á r q u i c o s . Apesar d a s d i v e r g h c i a s , observambs quea
linguagemSMALLTALK
é c o n s i d e r a d a uma d a s mais i m p o r t a n t e s e que melhor t e m a t e n d i d o a e s s a e s t i l o de p r ~ g r a m a ç t t oC19
3.
Porém, independentemente d o s c o n c e i t o s
a
serem
s e g u i d o s , o o b j e t i v o maior é ' o b t e r as v a n t a g e n s da Programaçao O r i e n t a d a a Objetost a i s
como:-
manutenibilidade
->
uma
vez
que
h&
um
baixo a c o ~ l a m e n t o e n t r e o s o b 3 e t o s .a s
a l t e r a ç õ e s s % o £ e i t a s e m um único l u g a r . Deste modo, f i c a maisfgcil
a manutenç%o d e um s i s t e m a ;-
reusabilidade
- 5 com ú e n c a ~ e u l a m ~ n t o , dadose
t o d a sa s
o p e r a ç b e s a s s o c i a d a s a e s t e s dados,ficam
e m um Único ob3eto. Sendo a s s i m , é mais f á c i l ser e a p r o v e i k a r s o f t w a r e , p o i s no c a s o de se c r i a r um s i s t e m a baseado em j a n e l a s , conforme o s exemplos a n t e r i o r e s , pode-se r e u s a r
a
classe j a n e l a .Nesta
c l a s s e 36e s t a r h
t o d a sas
operaçoes b á s i c a s p a r ase
manipular uma j a n e l a i-
axtensibilidade
-
devido
Bscaracteristicas
citadas
nos d o i s i t e n s a n t e r i o r e s , f a c i l m e n t e pode-se e s t e n d e r o s i s t e m a , c r i a n d o novasclasses
sem
que se t e n h a quealterar
a s
o u t r a s p a r t e s dosistema que
já e s t â o funcionando.Atualmente e x i s t e m inUmerãs l i n g u a g e n s e ambientes d e programaç%o que suportam, ou kentarn s u p o r t a r , o s c o n c e i t o s d a o r i e n t a ç h o
a
o b j e t o s . Algumas d e s s a s l i n g u a g e n s e ambientess%o:
S m a l l t a l k , A c t o r , E i f f e l , Objective-C,++,
ADA,
F l a v o r s , Loaps, Obdect-Pascal, Neon, Modula-2, Mesa, Cedar, TRELLIS/OWL, ABCL, e t c .A
s e g u i r , descrevemos brevemente algumas d e s s a s l i n g u a g e n s e ambientes de programaçho, dando uma P n f a s e maior ao ambiente d e programaç&o S m a l l t a l k , porser
o p i o n e i r o , e a o ambiente Actor, onde s e r á implementado o ambienteTABA-OBJ.
11.2.1
-
Algumas
Linguagens Orientadas
aObjetos
ADA
E
uma d a s l i n g u a g e n s mais poli3micas da o r i e n t a & o a o b j e t o s , d e acordo comTOUATI
C201.F o i
baseada n e l aque
uma d a s p r o p o s t a s p a r a mdtodos d e desenvolvimento d e s o f t w a r e o r i e n t a d o a o b j e t o s
mais
c i t a d o s ,a
p r o p o s t a d e BOOCH C3I ,
f o i f e i t a .P a r a TAKAHASHI
C14
1, "Ada t e m duas c o n s t r u ç b e spackage e t a s k ,
que
garantem
ó encapsulawento dadados
e que poderiam r e p r e s e n t a r c l a s s e s . Todavia, o mecanismo d epackages
embora
p e r m i t aw
irnplementa&o d e
um
t i p o a b s t r a t o
d e d a d o s , n%o c a r a c t e r i z a um t i p o por s i , enquanto o i d e a l s e r i a que houvesse uma i d e n t i f i c a ç 3 0 p l e n a e n t r e o c o n c e i t o s i n t á t i c o de
mdduh
e
o c o n c e i t o
ssmbnixLccs
d eclasse,
Par
o u t r o l a d o , o mecanismo d e
t a s k
reune
d i v e r s a s p r o p r i e d a d e s i d e a i s d e obdetos:t a s k s
podam
ser c r i a d a s
dinamicamente, p a s s a d a s como p a r â m e t r o s ,
e
f a z e r p a r t e de e s t r u t u r a s mais complexas envolvendo m a t r i z e s ( " a r r a u s " )e
p o n t e i r o s ( " p o i n t e r s ".
H á
r e s t r i ç b e s s e r i a s : nâo s e pode f a z e r a t r i b u i ç t i o d etasks,
nemL e s t e s
essenciais
a
o b j e k o s
t a i s como comparaç$o, e n t r e v a r i á v e i s do t i p o
task,
I$WohB
s u p o r t e a herança em Ada. Finalmente, nho há acoplamento dinâmico ".
Desenvolvido por COX, C21 I , C221,
C231,
E241 eC25
1 , Objective-C éum
precompilador d e C que provê f a c i l i d a d e s da o r i e n t a ç t i o a o b j e t o s . Possui acoplamento dinâmico e h e r a n ç a , sendo p o s s í v e l implementar herança m ú l t i p l a e " g a r b a g e c o l l e c t i o n " .Em
Objective-C a s mensagens s % o e s c r i t a s d e n t r o d e um programa comum emC , ,
só que e n v o l v i d a s por c o l c h e t e s .J u n t o com O b j e ~ t i v e - C . vem uma b i b l i o t e c a d e c l a s s e s r e u s á v e i s
,
a " Sof tware-ICs" ( C i r c u i t o s I n t e g r a d o s d eS o f t w a r e ) , que p e r m i t e a aproveitamento d e grande p a r t e do código dos programas a serem gerados. P a r a COX C241,
assim
como o s chiPs d e s i l i c a n eajudam o s e n g e n h e i r o s
deharwar'e
a r e u s a r o t r a b a l h o d o s p r o j e t i s t a s d e c h i p s ,
a
programaç2io
o r i e n t a d a
a
o b 3 e t o s deve a j u d a r o s programadoresa
r e u s a r o código já e x i s t e n t e .Desenvolvida nos L a b o r a t ó r i o s B e l l s (
AT&T)
por STROUSTRUFC26
I
e C27 1, c o n s i s t e d e um p r e p r o c e s s a d o r da linguagem C que p e r m i t e a c r i a ç a o d e c l a s s e s a t r a v h s d eum
t i p o novoclass
C28
3.A t r a v é s do t i p o
class,
sgod e f i n i d a s
suas
operações.f
p e r m i t i d o f a z e r sobreposiç2io d e o p e r a d o r e s ,I.
e. , r e d e f i n i rum
operador já e x i s t e n t e d e n t r o d e uma c l a s s e que f u n c i o n e d e maneira d i f e r e n t e ( e x . na c l a s s ematriz,
d e f i n i r um operador"+"
que f a ç a soma d e m a t r i z e s ) .O compilador d e C++ Sá f o i .desenvolvido por d i v e r s o s f a b r i c a n t e s . A v e r s h o 2 . 0 da
AT&Y
s u p o r t a herança mtiltpla e acoplamento dinâmico, porém todo o gerenciamento d e memória e " g a r b a g e c o l l e c t i o n " tem queser
f e i t o p e l o programador C29 1. Outro f a b r i c a n t e ( Zortech Inc. ) o f e r e c e além do compiladorC++,
uma
b i b l i o t e c a d e c l a s s e s que efetuam d i v e r s a s t a r e £ a s ( e d i ç l o de t e x t o s , gerenciamento d e j a n e l a s ,busca
b i n á r i a , e t c . ) .A linguagem E i f f e l f a z p a r t e d e um ambiente desenvolvido por
MEYER
C301, C31I ,
C321
e C331 no I n t e r a c t i v e Sof tware E n g i n e e r i n g , que p o s s u i tamb6m um metodo p a r a p r o j e t o , uma b i b l i o t e c ae
um c o n j u n t o d e f e r r a m e n t a s . A b i b l i o t e c aEiffel
p o s s u i um c o n j u n t o d eclasses
que implementamas
e s t r u t u r a s d e dados mais i m p o r t a n t e s com s u a s r e s p e c t i v a s o p e r a ç & e s , p e r m i t i n d o r e u s a b i l i d a d e e e x t e n s i b i l i d a d e .E i f f e l p o s s u i herança m ú l t i p l a
e
generalizaçClo. 1'5 uma linguagem t i p a d ae m
que t o d a a checagem de tipos pode ser f e i t a e s t a t i c a m e n t e . Dentrea s
f e r r a m e n t a s do ambiente E i f f e l , háum
g e r e n c i a d o r de memória a u t o m á t i c o , depurador s i m b ó l i c o , " t r a c i n g " de axecuç%o,etc.
Trellis
O Ambiente d e Programaçâo T r e l l i s 134
1,
f o i d e s e n v o l v i d o p e l a D i g i t a l Equipment Corporation. T r e l l i s s u p o r t a a programaçClo e m T r e l l i s / O w l ,urna
l i s u a s m Baseada e m o b j e t o s , que p e r m i t e herança m ú l t i p l a e v e r i f i c a ç S o de t i p o s e m tempo de compilaçSo ( acoplamento e s t á t i c o ) .O
ambienta é composto d e uma s é r i e de f e r r a m e n t a s i n t e g r a d a s que permitem e d i t a r , c o n s u l t a r , f a z e r compilaç6es i n c r e m e n t a i s e d e p u r a r código. A s f e r r a m e n t a s possuem uma i n t e r £ a c e c o n s i s t e n t e e compartilham uma base d e dados comum a o ambiente.A
base d e dados do T r e l l i s armaeenainformac8as
sobre
o e s t a d o de comgilaç%o d o s programas, t a i s como c ó d i g o s f o n t e
e
ob,jeto, r e f e r ê n c i a s c r u z a d a s , e t c .O
compilador i n c r e m e n t a l a t u a l i z a a base d e dadose
com i s s o ,Trellis
pode o f e r e c e r f e r r a m e n t a s que armazenam e informam t o d o s o s e r r o s e i n c o n s i s t ê n c i a s dos programas. Porém,a t é
o mómento nâoh&
a i n d a uma b i b l i o t e c a d e c l a s s e s p r o n t a p a r a s e r r e u t i l i z a d a .11.2.2
-
Alinguagem
SMALLTALK-80
t l
I
e,C19
I
A programaç80e m
SMALLTALK-80
c o n s i s t ee m
se
i d e n t i f i c a r ú b J e t o s , c l a s s i f i c á - 1 0 s de acordo com semelhançase
d i f e r e n ç a se
p r o j e t a r a linguagem d e i n t e r â ç b e n t r eo s
o b j e t o s . A s e g u i r abordamos ragidamente a l g u n s d e s e u s c o n c e i t o s básicos.Os
p r i n c i p a i s elementos da linguagem &o: o b j e t o , c l a s s e , i n s t a n c i a , mensagem e metodo. Seus c o n c e i t o s s & o o s mesmos d a s d e f i n i ç 8 e s da s e ç ã o11.1.1.
Uhobjeto
4 d i t oser
umainstancia
deuma
classe e
um
m6todù
d e s c r e v ecomo
úobjeto
devaresponder
&men3agem.
U m a c l a s s e é composta de: nome, s u p e r c l a s s e , nomes d e v a r i a v e i s d e i n s t â n c i a e m&todo.
O
SMALLTALK-80
irnplementa o c o n c e i t o d e h e r a n ç a , i s t o é, pode-se c r i a r uma s u b c l a s s e a p a r t i r d e uma c l a s s e , herdando a s informações c o n t i d a s na c l a s s e , podendo-se i n c l u i r novos métodos ou m o d i f i c a r métodos 3á e x i s t e n t e s .Ao r e c e b e r uma mensagem, o ob3eto v e r i f i c a se p o s s u i o método ( a funçBo) s o l i c i t a d o p e l a mensagem ( d e a c o r d o com s e u padrBo) e , c a s o p o s i t i v o , executa-a.
11.
2 . 2 . 1-
OAmbiente SMALLTALK-80
O s i s t e m a
SMALLTALK-80
c o n s i s t e de uma linguagem d e Programaç80 O r i e n t a d a a O b j e t o s e d e um c o n j u n t o d e f e r r a m e n t a s i n t e g r a d a s p a r a i n t e r a g f r com o s componentes da linguagemL35
3
eC361.
Todas
as
informações dosistema
s % o r e p r e s e n t a d a s por o b j e t o s .A
i n t e r f a c e d e s s esistema
é b a s t a n t e amigávele
t o d a baseada e m j a n e l a s e c a r d á p i o s , t e n d o o "mouse" g r a n d e u t i l i z a ç & o .Ferramentas
O Sistema SMALLTALK-80 p o s s u i um c o n j u n t o de f e r r a m e n t a s que f a c i l i t a m
a
t a r e f a d e programaçtio. Algumas d e l a s stio:P e r m i t e que se g e r e n c i e v á r i a s t a r e f a s d e p r o g r a m a ç h (em v á r i o s g r o 3 e t o s ) a o mesmo tempo, manipulando um
Projeto
d e cada vez. Ao se mudar de umPro3eto
para
o u t r a . as
informações aparecem como tinham s i d o d e i x a d a s na ú l t i m a vez e m que esse p r o j e t o f o i acessado.
Qualquer c l a s s e c r i a d a num
P r ó h t o
éimediatamente
d i s p o n i v e l p a r a 'codos o s p r o j e t o sdo
sistema. Dentro d e umProJeto
pode-se
abrir
i a n e l a s ccmAreas
de
Trabalho,
m r a
a u x i l i a r na manipulaçlo dos dados, a v a l i a ~ a o d e e x p r e s s õ e s , e t c . AArea
de
Trabalho
prúv&
v h r i a s rn8scaras para
f a c i l i t a r a d e c l a r a ç % o d a s e x p r e s s õ e s c r i a d a s p e l o u s u á r i o , além d e máscaras p a r a v a r i á v e i s g l o b a i s .
.
Browser
Ferramenta poderosa que p e r m i t e t e r informaçbes s o b r e a i n t e r f a c e d e um o b j e t o . D á a c e s s o a t o d a s
as
d e s c r i ç õ e s d e c l a s s e s d i s p o n í v e i s nosistema,
i n c l u i n d o c o m e n t á r i o s s o b r e c l a s s e s a métodos, além d e exemplos d e como u s a r v k i a s c l a s s e s .B d i v i d i d o
e m
c a t e g o r i a s que organizama s
c l a s s e s d e n t r o do s i s t e m a e n a s que organizam mensagens d e cada c l a s s e . Com oB m w s e r
pode-se
o b t e r informasõea corrio:-
comentário s o b r e o papel d e cada c l a s s e .-
deçcriç2io da p a r t e da h i e r a r q u i a d e c l a s s e s do s i s t e m a e m que a c l a s s ese
e n c o n t r a *-
d e s c r i ç g o d a s v a r i á v e i s d a classei-
d e s c r i ç % o d a s mensagense
métodos da c l a s s e ( i n c l u i n d o comentários) i-
c l a s s i f i c a ç â o d a c l a s s e , e m relaçiio a o u t r a s c l a s s e s r-
c l a s s i £ i c a ç % o d a s mensagens d aclassel
-
a c e s s o a t o d o s o s metodos que enviaram uma mensagem;-
a c e s s o a t o d a sas
mensagens.enviadas por um método. A l é m d i s s o , oB r o w s s r
tambem f o r n e c e uma mhscarapara
a u x i l i a r a d e f i n i ç g o d e novas c l a s s e se
mensagens.Existem v á r i o s
B r o w s e r s
d e c l a s s e s de acorda como
subconjunto de c l a s s e s a c e s s í v e i s . O comandoSpawn
~ e r m i t k
que se c r i e um
B r o w s e r
em
que
somentea s
inforrnacões da s u b p a r t e do s i s t e m a s e l e c i o n a d a é a c e s s a d a ( e x . Browser de C a t e g o r i a s d e Classes. do S i s t e m a . Browser d e C l a s s e s ,B r o w s e r d e C a t e g o r i a s d e Mensagens, Browser d e Mensagens, Browser d e H i e r a r q u i a d e Classes).
.
E d i t o r
de
Iformas/Bits
Provê s u p o r t e p a r a c r i a ç s o d e imagens g r á f i c a s t a n t o por desenho
a
m8o l i v r e , com u s o do " mouse" (Editor
deBorrnas)
.
comoatravés
de
rn9todos
em
queo b j e t o s
gr89icús
recebem mensagens p a r a c o n s t r u i r uma imagem. Imagens s i m p l e s podemser
r e p r e s e n t a d a s como i n s t â n c i a s d e Forma, quetem
a l t u r ae
l a r g u r a e um b i t map i n d i c a n d o as regit5es p r e t a s e b r a n c a s (Editor da b i t s )
,Imagens complexas podem ser r e p r e s e n t a d a s d e d o i s modos: p o r uma forma muito g r a n d e ou p o r uma e s t r u t u r a que i n c l u a v á r i a s f o r m a s e r e g r a s p a r a combinar e r e p e t i - l a s d e modo
a
p r o d u z i ra
imagem d e s e j a d a .O e d i t o r d e
B i t s
e n f o c a a c r i a ç % a / a l t e r a ç % o d e f o r m a s a t r a v & s d e se e s p e c i f i c a r cada p o n t o ( b i t ) como b r a n c o ou p r e t o ..
Depurador
Pode a p r e s e n t a r algumas ou t o d a s
as
s e q u ê n c i a s d a s mensagens e n v i a d a s a n t e s da i n t e r r u p ç 8 0 , conforme o s e l e c i o n a d o . P e r m i t e s e l e c i o n a r c a d a uma p a r a v e r o método e em que ponto do método o c o r r e u a i n t e r r u p ç l l o . Pode-se e s c o l h e r q u a l q u e r mensagem na p i l h a e c o n t i n u a r a execuç20 a p a r t i r d e s s e ponto ou p u l a r algumas mensagens, c h e c a ra
v a l o rdas
v a r i á v e i s p a r a t e n t a r d e t e c t a r o e r r o .Pode-se
também a l t e r a ro
v a l o r d a s v a r i á v e i se
p r o s s e g u i re
a i n d a e d i t a r e r e c o m p i l a r um método d e n t r o doDepurador.
.
Inspetor
P e r m i t e o b t e r - s e i n f o r m a ç b e s s o b r e o e s t a d o i n t e r n o d e um o b j e t o . Em uma j a n e l a mostra a l i s t a d a s v a r i á v e i s d a i n s t â n c i a a ser " i n s p e c i o n a d a " e n a o u t r a e x i b e o v a l o r d a v a r i d v e l s e l e c i o n a d a . O u t r a u t i l i d a d e d e s s a f e r r a m e n t a 6 a d e testar o e n v i o da uma mensagem p a r a o o b j e t oi n s p e c i o n a d o ou p a r a t e s t a r a mensagem que a v a l i a expressões.
A l e m
d e s s a s f e r r a m e n t a s , o Ambiente SMALLTALK-80 provê f a c i l i d a d e s como um e d i t o r d e t e x t o poderoso e com i n t e r f a c e amigável, comandos deComntBrios
( d e s c r e v e oo b j e t i v o da c l a s s e ou do m6todo) e
Exvlicações
idescriçWo
sumária do papel de q u a l q u e r t o k e n que t e n h a s i d o s e l e c i o n a d o ) .P o s s u i a i n d a um mecanismo p a r a c o r r e ç a o o r t o g r á f i c a e
um
dicioni5ri.o compartilhado ( " p o o l e d d i c t i o n a r y " ) p a r aas
classes, contendo as v a r i á v e i s que s â o a c e s s í v e i s p e l o s m6todos da c l a s s e e por s u a s s u b c l a s s e s .A s mensagens, além d e serem e n v i a d a s p a r a o s o ~ S ~ ~ O S , podem, também,
ser
e n v i a d a s p a r a c l a s s e s .Nesse
c a s o &omensagens p a r a c r i a ç ã o d e i n s t â n c i a s , comentários s o b r e documentaç30, mensagens p a r a c r i a r v a r i á v e i s de
classe,
c r i a r c o n s t a n t e s e mensagens para c o n s u l t a s .Actor
6uma
linguagem d e prúgramaçWo n r i e n % a d aa
o b j e t o s , cu3a f i l o s o f i a é b a s t a n t e semelhante a oSmalltalk.
A
programaç8o é t o d a f e i t ae m
termosde
o b 3 e t o se
d a s mensagens que e s t e s o b j e t o s enviam e recebem.Tudo
e m
Actor 8um
O b 3 3 t a[li
I.
Nfirneros, c a P a c t a r e s ,v e t a r e s
( a r r a u s ) ,
c a d e i a s d e c a r a c t e r e s , a p l i c a ç õ e s , j a n e l a s , métodos, etc.,
s b o t o d o s o b j e t o s .Toda
aç&o que o c o r r e e m Actor(com
exceçeiúdas
chamadas ao MS-Windows ou MS-DOS) é o r e s u l t a d o do e n v i o de uma mensagem aum
o b j e t o , que responde executando o método s o l i c i t a d o .Por s e g u i r e s s a s r e g r a s d e modo r í g i d o ,
Actor
6
d i % ó s e r uma linguagem puramenteorientada a
~ b i e t o s ,
d i f e r i n d odas
l i n g u a g e n s h í b r i d a s que nao seguem e s s a r e g r a .Em
Actor.
o acoplamento B d i n & ~ i i c o .o
mecaniemo d e herança B d e herança s i m p l e s ehá
um esquema p a r a " g a r b a g e c o l l e c t i o n ".
11.
2 . 3 . 1 O
Ambiente Actor
Actor,
além
d e
uma linguagem d e programacWo o r i e n t a d a a o b j e t o s , p o s s u i algumas f e r r a m e n t a s , c o n s t i t u i n d o , a s s i m , um ambiente d e programaçtio. O Ambiente Actarr i m
toda
a
e s t r u t u r a do produto Microsoft Windows ( MS-Windows)
.
Inspetor
O
Imspetor
permiteque
um o b j e t os e j a
examinadoem
d e t a l h e s,
podendo-se i n c l u s i v e e n v i a r mensagens p a r a o o b j e t o inspecionado.A
j a n e l a doInspetor
p o s s u itr3s
j a n e l a s menores. A p r i m e i r a j a n e l a contem o s nomes d a s v a r i á v e i s d e i n s t â n c i a do o b j e t o inspecionado. A segunda contAm i n d i c e sou
c h a v e s , no c a s o da c l a s s e i n s p e c i o n a d aser
uma coleçao.Ao
s e l e c i o n a r - s e q u a l q u e r d e s s e s i t q n s ,a
t e r c e i r a j a n e l a e x i b e o s e u v a l o r correspondente.E s t a
ú l t i m a J a n e l a é a j a n e l a d e ediçtio doInspetor.
Com o
Inspetor
pode-se c o n s u l t a ro s
v a l o r e s de q u a i s q u e r v a r i á v e i s ou elementosda
um o b j e t o , a s s i m como i d e n t i f i c a r s u a c l a s s e . Pode-se i n s p e c i o n a r q u a l q u e r t i p o d e o b j e t o , i n c l u s i v e c l a s s e s .O
Browser
4uma
ferramerita muito Qtil. Come l a
~ o d e - s e v e r o código f o n t e dos metodos quejá
vem com o s i s t e m a , pode-se s a b e r inúmeras informaçõessobre
q u a l q u e rclasse
do s i s t e m a . t a i s como q u a i s v a r i á v e i s de i n s t â n c i a o s o b j e t o s d e uma determinada classe t e r % o .A t r a v é s do