Sei sulla pagina 1di 6

Prefcio

Qbrigado por ler este livro! Esta uma introduo prtica anlise e ao projeto
orientados a objetos (A/POO ou OOA/D, em ingls) e aos aspectos relacionados
do desenvolvimento iterativo. Fiquei muito satisfeito com o fato de
a primeira edio ter sido recebida como uma boa introduo A/POO,
merecendo
tradues em muitas lnguas. Portanto, esta segunda edio fundamenta e
aprimora
- em vez de substituir - o contedo da primeira. Quero sinceramente agradecer a
todos os leitores da primeira edio.
Veja como o livro beneficiar voc.
Primeiro, o uso da tecnologia de objeto proliferou no desenvolvimento de
software, e
o domnio da A/POO crucial para criar um sistema baseado em objetos robusto
e
sustentvel.
/ Projeto robusto e sustentvel de sistemas baseados em objetos.
Segundo, se voc novato em A/POO, ser desafiado a compreender este
complexo assunto; este livro apresenta um mapa bem definido - o Processo
Unificado - de modo que voc pode avanar em um processo passo a passo,
dos requisitos at a codificao.
/ Siga um roteiro que passe pelos requisitos, anlise, projeto e codificao.
Terceiro, a Linguagem de Modelagem Unificada (UML) emergiu como a notao
padro para modelar; desse modo, til conhec-la. Este livro ensina as
habilidades de A/POO usando a notao UML.
v Use a UML para ilustrar os modelos de anlise e de projeto.

X PREFCIO
Quarto, os padres de projeto informam as melhores prticas em idiomas e
solu- Pblico l es orientadas a objetos, aplicados por especialistas em projetos
na criao de sistemas.
Neste livro, voc aprender a aplicar padres de projeto, incluindo os populares
padres do grupo-dos-quatro (gang-of-four) e os padres GRASP, que
comunicam
princpios fundamentais de atribuio de responsabilidade em projeto orientado
a objetos. Aprender e aplicar padres ir acelerar seu domnio sobre anlise e
projeto.
1 Aperfeioe projetos aplicando os padres de projetos GRASP e do grupo-dos-
quatro.
Quinto, a estrutura e a nfase neste livro esto baseados em anos de
experincia em
treinar e instruir milhares de pessoas na arte da A/POO. O livro reflete essa
experincia
ao fornecer uma aprimorada, comprovada e eficiente abordagem e, dessa
forma,
o seu investimento em ler e aprender otimizado.
/ Aprenda de modo eficiente seguindo uma apresentao primorosa. Pr-
Requisit
Sexto, examina exaustivamente um nico estudo de caso - para, de modo
realista, Algun
ilustrar o processo A/POO inteiro, medida que vai se aprofundando em
detalhes
espinhosos do problema; um exerccio realista. 1 CO
3et(
/ Aprenda com um exerccio realista. Cc
Stimo, mostra como mapear artefatos de projeto orientado a objetos para
cdigo em da
Java. Osco
/ Traduza para codificar.
Oitavo, explica como projetar uma arquitetura baseada em camadas e relaciona
a ca- Exemplos e
mada de interface grfica do usurio s camadas de domnio e de servios
tcnicos. Em g
/ Projete uma arquitetura em camadas. ava
veis
Finalmente, mostra como projetar umframework orientado a objetos e aplica isso

criao de umframework para a armazenagem persistente em uma base de


dados. Organiza
/ Projete umframezvork. Os tc
proj
cep
Objetivos:
1. c:
O objetivo abrangente : 2 J
a
Ajudar os estudantes e desenvolvedores a criar projetos orientados a objetos 3.
por meio da aplicao de um conjunto de princpios e heursticas explicveis. (
4..
Estudando e aplicando a informao e as tcnicas apresentadas aqui, voc se
tornar 1
mais apto a compreender um problema em termos de seus processos e
conceitos e a
projetar uma soluo slida usando objetos.

PREFCIO Xl
Pblico Pretendido:
Este livro uma introduo A/POO, anlise de requisitos relacionados e ao
desenvolvimento iterativo, com o Processo Unificado como um processo de
exemplo; no se prope a ser um texto avanado. Destina-se ao seguinte
pblico:
Desenvolvedores e estudantes com experincia em uma linguagem de
programao orientada a objetos, mas queles que so - ou pouco mais que
iniciantes - em
anlise e projeto orientados a objeto.
Estudantes de cursos de Cincias de Computao ou Engenharia de Software
estudando tecnologia de objetos.
queles com alguma familiaridade em A/POO que queiram aprender a notao
UML, aplicar padres ou aprimorar suas habilidades de anlise e projeto.
Pr-Requisitos:
Algum conhecimento prvio presumido - e necessrio - para beneficiar-se
deste livro:
Conhecimento e experincia em uma linguagem de programao orientada a
objetos, tais como Java, C#, C++ ou Smalltalk.
Conhecimento de conceitos fundamentais de tecnologia de objetos, tais como
classe, instncia, polimorfismo, encapsulamento, interfaces e herana.
Os conceitos fundamentais da tecnologia de objeto no so aqui definidos.
Exemplos em Java:
Em geral, o livro apresenta exemplos de cdigo em Java ou discute
implementaes Java devido sua ampla familiaridade. Entretanto, as idias
apresentadas so aplicveis maioria - se no a todas - das linguagens de
programao orientadas a objetos.
Organizao do Livro:
Os tpicos de anlise e projeto so apresentados em uma ordem similar quela
de um projeto de desenvolvimento de software, funcionando ao longo de uma
fase de concepo (um termo do Processo Unificado) seguida por trs
iteraes (veja Figura P.1).
1. Os captulos da fase de concepo apresentam o bsico da anlise de
requisitos.
2. A iterao 1 apresenta a A/POO fundamental e como atribuir
responsabilidades a objetos.
3. A iterao 2 focaliza o projeto de objetos, especialmente ao apresentar alguns
padres de projetOs muito usados.
4. A iterao 3 apresenta uma variedade de assuntos, tais como anlise da
arquitetura e o projeto deframeworks.

Recursos Disponveis na Web

Por favor, veja www.craiglarman.com para artigos relacionados tecnologia de


objetos, padres e processos de desenvolvimento.
Alguns recursos para o instrutor podem ser encontrados em
www.phptr.com/larman.

Melhorias em Relao Primeira Edio

Embora conserve o cerne da primeira edio, a segunda foi aprimorada de


muitos modos, incluindo:
Casos de uso esto atualizados para seguir o tratamento (muito popular) de
[Cockburn0l].
O bem conhecido Processo Unificado (PU) usado como o processo iterativo
do exemplo dentro do qual se introduz a A/POO. Portanto, todos os artefatos so
nomeados de acordo com termos do PU, tal como Modelo de Domnio.
Novos requisitos no estudo de caso, conduzindo a uma terceira iterao.
Tratamento atualizado de padres de projetos.
Introduo anlise arquitetural.
Introduo de Variaes Protegidas como um padro GRASP.
Um equilbrio de 50/50 entre diagramas de seqncia e de colaborao.
As ltimas atualizaes da notao UML.
Discusso de alguns aspectos prticos para desenhar usando quadros brancos
ou ferramentas CASE UML.

Agradecli

Pri ser tiv


Tai Lo Fr2
Pai Pai

Xii PREFCIO

O Livro

Viso Gera)

o3 Tpicos j
iai

lo Orientado Traduo do Projetos


Objetos igo

Figura P.1 A organizao do livro segue a de um projeto de desenvolvimento.

me

Pai

Pai

seu

Par

Mu Ba ber

Ob

um

Fin
Sobre o A

Cr sul da
Vi!]

api za

AF
l9
int
gu
co
sol

qui

ser

1REFACIO Xlii
Agradecimentos
Primeiro, um agradecimento muito especial a meus amigos e colegas em
Valtech, desenvolvedores de objeto de classe mundial e especialistas de
desenvolvimento iterativo, os quais, de algum modo, contriburam ou revisaram
o livro, incluindo Chris Tarr, Michel Ezran, Tim Snyder, Curtis Hite, Celso
Gonzalez, Pascal Roques, Ken DeLong, Brett Schuchert, Ashley Johnson, Chris
Jones, Thomas Liou, Darryl Gebert, Frank Rodorigo, Jean-Yves Hardy e muitos
mais do que eu possa nomear.
Para Philippe Kruchten, por escrever o prefcio, revisar e ajudar de tantos
modos.
Para Martin Fowler e Alistair Cockburn, por muitas discusses cheias de
discernimento no processo e no projeto, citaes e revises.
Para John Vlissides e Cris Kobryn, pelas gentis citaes.
Para Chelsea Systems e John Gray, por ajudar com alguns requisitos inspirados
por
seu sistema PDV ChelseaStore que usa tecnologia Java.
Para Pete Coad e Dave Asteis da TogetherSoft, por seu apoio.
Muito obrigado aos outros revisores, incluindo Steve Adolph, Bruce Anderson,
Len Bass, Gary K. Evans, Ai Goerner, Luke Hohmann, Eric Lefebvre, David
Nunn e Robert J. White.
Obrigado a Paul Becker, da Prentice-Hail, por acreditar que a primeira edio
seria
um projeto vlido, e a Paul Petralia e Patti Guerrieri, por orientarem a segunda.
Finalmente, um obrigado especial a Graham Glass, por abrir uma porta.
Sobre o Autor
Craig Larman exerce o cargo de diretor de Processo na Valtech, uma empresa
de consultoria internacional com divises na Europa, sia e Amrica do Norte,
especializada em desenvolvimento de sistemas de e-comrcio, tecnologia de
objetos e desenvolvimento iterativo com o Processo Unificado.
Desde meados dos anos 1980, Craig j ajudou milhares de desenvolvedores a
aplicar programao orientada a objetos, anlise, projetos e tambm orientou
organizaes a adotarem as prticas de desenvolvimento iterativo.
Aps uma carreira sem sucesso como msico de rua, ele construiu sistemas em
APL, PL/I e CICS nos anos 70. Depois de enfrentar uma doena no incio dos
anos 1980 - da qual seguiu-se uma completa recuperao -, ele passou a se
interessar por inteligncia artificial (tendo ele mesmo muito pouca natural),
processamento de linguagem natural e representao do conhecimento, e
construiu sistemas baseados em conhecimento com mquinas Lisp, Lisp, Prolog
e Smalltalk. Ele toca mal a guitarra solo em sua banda amadora, os Requisitos
Mutantes (costumava ser chamada de Requisitos, mas alguns membros da
banda mudaram).
Ele bacharel em Cincia e mestre em Cincia da Computao pela Simon
Fraser University em Vancouver, Canad.

Xiv PREFCIO
Contato
Craig pode ser encontrado em clarman@ieee.org e www.craiglarman.com. Ele
recebe com prazer perguntas de leitores e educadores e convites para palestras
e consultorias.
Convenes Tipogrficas
Este um novo termo em uma sentena. Este um nome de Classe ou de
mtodo em uma sentena. Esta uma referncia de autor [Bob67]. Um operador
de resoluo de escopo independente de linguagem -- usado para indicar
uma classe e seu mtodo associado como segue: NomeDaClasse-
NomeDoMtodo.