Introducaéo
Modelagem e projeto orientados a objetos é um modo de pensar respeito dos problemas
aplicando-se modelos organizados em torno de conceitos do mundo real. A construcdo
fundamental ¢ 0 objeto, que combina estrutura de dados e comportamento. Os modelos
orientados a objetos sao titeis para entender problemas, comunicar-se com especialistas
de aplicacao, modelar empresas, preparar documentacdo e projetar programas e bancos
de dados. Este livro apresenta uma notaco e um processo orientados a objetos que se es-
tendem desde a analise até o projeto e sua implementacdo. A mesma notacao se aplica a
todos os estagios do processo, enquanto o desenvolvimento prossegue
EE] 0 Que E Orientagao a Objetos?
Superficialmente, 0 termo orientado a objetos (OO) significa que organizamos 0 software
‘como uma cole¢ao de objetos distintos, que incorporam estrutura de dados e comporta-
mento. Isso € diferente das técnicas de programacdo anteriores, nas quais a estrutura de
dados e 0 comportamento estio pouco conectados. Existe uma disputa sobre as caracte-
risticas exatas exigidas por um enfoque OO, mas elas geralmente incluem quatro aspec-
tos: identidade, classificagéo, heranga e polimorfismo.
Identidade significa que os dados sAo quantizados em entidades distintas e distingui-
veis, chamadas objetos. O primeiro pardgrafo deste capitulo, minha estacao de trabalho ea
rainha branca em um jogo de xadrez sio exemplos de objetos. A Figura 1.1 mostra alguns
objetos adicionais. Os objetos podem ser concretos, como um arquivo em um sistema de
arquivos, ou conceituais, como uma politica de escalonamento em um sistema operacional
com multiprocessamento. Cada objeto tem sua propria identidade inerente, Em outras
palavras, dois objetos sao distintos mesmo que todos os seus valores de atributos (como
nome e tamanho) sejam idénticos.
No mundo real, um objeto simplesmente existe, mas, em uma linguagem de progra-
macio, cada objeto possui uma referéncia tinica pela qual ele pode ser acessado. As lin-
guagens implementam a referéncia de varias maneiras, como endereco, indice de vetor
ou um ntimero artificial. Essas referencias dos objetos sao uniformes e independentes do
contetido dos objetos, permitindo a criagdo de colecdes mistas de objetos, tal como um
diretério do sistema de arquivos, que contém tanto arquivos como subdiretorios.
Classificacdo significa que os objetos com a mesma estrutura de dados (atributos)
comportamento (operacées) séo agrupados em uma classe. Pardgrafo, Monitor e PecaDe-2 — Modelagem e Projetos Baseados em Objetos com UML ELSEVIER
nome da variével
umCrédito
enderego
419090007
13537168 =
Cor 56826358
tmaPoupanca | 45208128 \
umDébito.
umaConta
uma tabela de simbolos uma drvore bindria um monitor
bicicleta de Marcos
Objetos. Os objetos estéo no centro da tecnologia orientada a objetos.
Xadrez sao exemplos de classes, Uma classe € uma abstracdo que descreve propriedades
importantes para uma aplicacao ¢ ignora as demais. Qualquer escolha de classes € arbitra-
ria e depende da aplicacao.
Cada classe descreve um conjunto possivelmente infinito de objetos individuais.
Cada objeto € considerado uma instancia de sua classe. Um objeto tem seu proprio va-
lor para cada atributo, mas compartilha os nomes de atributo e as operacoes com outras
instancias da classe. A Figura 1.2 mostra duas classes e algumas de suas respectivas ins-
tancias. Um objeto contém uma referéncia implicita a sua propria classe; ele “sabe que
tipo de coisa ele é”
Heranga é 0 compartilhamento de atributos e operacdes (recursos) entre classes com
base em um relacionamento hierarquico. Uma superclasse possui informacoes gerais que
as subclasses refinam e claboram. Cada subclasse incorpora ou herda todos os recursos de
sua superclasse e acrescenta seus proprios recursos exclusivos. As subclasses nao precisam
repetir os recursos da superclasse. Por exemplo, JanelaRolante e JanelaFixa sto subclasses
de Janela. As duas subclasses herdam os recursos de Janela, como uma regido vistvel na tela.
JanelaRolante acrescenta uma barra de rolagem e um deslocamento. A capacidade de apro-
veitar recursos comuns de varias classes em uma superclasse pode reduzir bastante a repe-
tigdo dentro de projetos e programas, e é uma das principais vantagens da tecnologia OO.
Polimorfismo significa que a mesma operacao pode se comportar de forma diferente
para diferentes classes. A operacéo mover, por exemplo, se comporta de formas diferentes
para um pedo e para a rainha em um jogo de xadrez. Uma operacao é um procedimento
ou transformacao que um objeto realiza ou a que esta sujeito. AlinharDireita, exibir e mo-
ver sio exemplos de operacdes. Uma implementacao de uma operacao por uma classe es-
pecifica é chamada de método. Como uma operacao OO € polimérfica, ela pode ter mais
de um método que a implementa, um para cada classe de objeto diferente.
No mundo real, uma operacdo € simplesmente uma abstracao de um comportamento
semelhante para diferentes tipos de objetos. Cada objeto “sabe como” realizar suas pré-
prias operacdes. Contudo, em uma linguagem de programacao OO, a linguagem selecio-FLSEVIER Intodugao = 3
Objetos bicicleta
Classe bicicleta
rx
tos
tamanho do quadro
tamanho da roda
ES
abstrair ntimero de marchas
Operagdes
reparar
Objetos poligono Classe poligono
Atributos
vertices
cor da borda
abstrair cor interna
para Operagées
desenhar
apagar
mover
Objetos e classes. Cada classe descreve um conjunto possivelmente infinito
de objetos individuais.
na automaticamente o método correto para implementar uma operagdo, com base no
nome da operacao e na classe do objeto que esta sendo operado. O usuario de uma opera-
do nao precisa estar ciente de quantos métodos existem para implementar determinada
operacao polimsrfica, Os desenvolvedores podem acrescentar novas classes sem alterar 0
cédigo existente, desde que oferecam métodos para cada operagao aplicavel.
FA. 0 Que E Desenvolvimento 00?
Este livro trata do desenvolvimento OO como um meio de pensar a respeito do software
com base em abstragdes que existem no mundo real, ¢ também no programa. Nesse con-
texto, desenvolvimento refere-se ao ciclo de vida do software: anélise, projeto e im-
plementacao. A esséncia do desenvolvimento OO € a identificacdo e a organizacao de con-
ceitos da aplicacao, em vez de sua representacio final em uma linguagem de programa-
cao. Brooks observa que a parte dificil do desenvolvimento de software € a manipulagao
de sua essencia, devido a complexidade inerente do problema, em vez das especificidades
de seu mapeamento para uma linguagem em particular [Brooks-95]
Embora este livro nao enfoque explicitamente a integracdo, a manutengao e a melho-
ria de um software, um projeto limpo em uma notacao precisa facilita todo o seu ciclo de
vida. Os conceitos e a notacao OO usados para expressar um projeto também oferecem
uma documentagio titil.