Você está na página 1de 4

Anlise e Desenho Orientados por Objetos (1/4)

Page 1 of 4

Anlise e Desenho Orientados por Objetos (1/4)


By: Adail Retamal Abstract: Parte 1 de 4. Princpios, conceitos e tcnicas para tirar o mximo de benefcio da tecnologia de objetos. Introduo orientao por objetos.

In This Article
Antes da Anlise OO Um pouco de histria Afinal, o que Anlise OO? Conceitos Fundamentais Mos obra? Lio de Casa Em outros artigos mostrei como o paradigma de programao orientada por objetos (OOP ObjectOriented Programming) pode significar melhor organizao, planejamento, desenvolvimento e manuteno de uma aplicao. Porm, programar OO sem um desenho (design) OO pode ser uma tarefa difcil, levando a uma implementao deficiente, sem os benefcios de mdio e longo prazo esperados da OOP. E para obter um bom desenho OO (OOD - Object-Oriented Design) precisamos de um mtodo de anlise OO (OOA - Object-Oriented Analysis). Sem uma viso de mundo OO, derivar um projeto OO para uma boa implementao OO torna-se um enorme desafio, seno intil. Assim, nas prximas edies, mostrarei os princpios fundamentais da OOA e OOD (ou OOAD Object-Oriented Analysis and Design), que naturalmente levam a uma boa OOP. O material apresentado ser uma sntese de diversas metodologias, mas h muito tempo tenho usado preferencialmente a abordagem sugerida pelo Dr. Peter Coad, a quem tenho muito que agradecer, tanto pela OOAD quanto pela metodologia gil conhecida como FDD (Feature-Driven Development).

Antes da Anlise OO
A viso de mundo orientada por objetos oferece um excelente paradigma para o entendimento de um determinado contexto ou situao, denominado domnio do problema. Anteriormente, dois outros enfoques eram muito comuns: o enfoque funcional e o enfoque de dados. No enfoque funcional decompe-se o domnio do problema de acordo com suas funes, algoritmos e procedimentos. Os dados recebem um tratamento secundrio, s vezes em forma de repositrios (arquivos), outras vezes simplesmente figurando entre as operaes. Dois diagramas so comumente usados para modelagem: DHF (Diagrama Hierrquico de Funes): mostra como os mdulos esto organizados e conectados, seguindo uma hierarquia arquitetural e funcional; Fluxograma: demonstra de forma grfica o fluxo de operaes de um determinado algoritmo. No enfoque de dados h uma enorme preocupao em mostrar o que acontece com os dados na medida em que estes transitam entre as diversas bolhas de processamento. As funes, quando necessrio, so explicitadas separadamente. Os dois diagramas mais usados so: DFD (Diagrama de Fluxo de Dados): mostra as bolhas de processamento, os dutos de dados e os repositrios, normalmente seguindo um esquema de refinamento, onde as

http://edn.embarcadero.com/print/33728

17/06/2011

Anlise e Desenho Orientados por Objetos (1/4)

Page 2 of 4

bolhas principais so detalhadas (explodidas) em outros diagramas, formando uma hierarquia de diagramas; DER (Diagrama de Entidade-Relacionamento): demonstra a estrutura das entidades presentes no domnio do problema e os relacionamentos existentes entre elas. Geralmente usado para derivar o script para um banco de dados relacional.

Um pouco de histria
interessante notar que, historicamente, dados e funes sempre foram considerados separadamente, desde a arquitetura do hardware at muitas linguagens de programao noOO. No hardware, foi o hngaro Johann Louis von Neumann, por volta de 1945, quem sugeriu que tanto os dados quanto os programas fossem armazenados na mesma memria. Os computadores que usamos hoje ainda usam muito da arquitetura von Neumann (pronuncia-se algo como fon niman). No mundo do software, os conceitos OO j comearam a aparecer por volta de 1959. Alguns anos depois, a linguagem Simula-67 apareceu justamente para facilitar simulaes, oferecendo vrias caractersticas de orientao por objetos. Smalltalk foi desenvolvida nas dcadas de 1970 e 1980 e considerada uma das mais puras e completas linguagens OO. C++ apareceu na dcada de 1980, e Eiffel, por volta de 1985. Java s apareceu em 1995 e C#, em 2000. E o que tudo isso tem a ver com voc? Bom, talvez seja surpresa para muitos, mas em 1989 a Borland lanou o Turbo Pascal 5.5 com ObjectPascal, com extenses para OOP! Um novo tipo de dados chamado object permitia a definio de um registro que possua, alm de variveis, declaraes de funes e procedimentos. E diferentemente de um record, um object podia herdar de um outro object! O mundo OO estava aberto para os pascaleiros! Cinco anos, e vrias melhorias, depois, a Borland fez um grande favor ao mundo e lanou o Delphi 1.0, onde o object virou class (para desfazer um dilema filosfico)! Agora vivemos a experincia .Net e, como de costume, a Borland salva o dia e lana o Delphi for .Net! A experincia OO ser elevada a um nvel ainda maior, suportada por um ambiente de execuo totalmente OO, a CLR (Common Language Runtime), que a mquina virtual do .Net. Nesses 15 anos, aprendemos a programar OO, criar componentes, construir hierarquias e organizar melhor as aplicaes. Mas creio que ainda no temos aplicado a OO onde ela pode ajudar mais (e para a qual foi originalmente concebida): entender e simular o mundo ao nosso redor!

Afinal, o que Anlise OO?


um mtodo de anlise que examina os requisitos a partir da perspectiva das classes e objetos encontrados no vocabulrio do domnio do problema, enfatizando a construo de modelos do mundo real usando uma viso de mundo orientada por objetos. Construir uma VCL realmente engenhoso e eu sou muito grato por isso! Mas e quanto aplicao, ao domnio do problema? Continuamos a programar nas decomposies funcionais e/ou orientadas pelos dados... E como mudar? Como comear de novo? Felizmente no to difcil quanto se imagina. s prestarmos ateno a como as crianas aprendem... A Teoria da Classificao diz que na compreenso do mundo real costumamos empregar trs mtodos: Diferenciao, baseada na experincia de cada um (as pessoas e os outros objetos); Distino entre o todo e suas partes (a pessoa e seus rgos e tecidos) Formao de, e distino entre, as diferentes classes de objetos (classes de pessoas, classes de veculos, etc.) Assim, muito do que sabemos hoje seguiu essa metodologia. Primeiro vemos um monte de objetos passando nossa frente. Da conseguimos distinguir determinados grupos, atravs de suas similaridades e diferenas. Um pouco adiante comeamos a perceber que certas coisas possuem outras coisas dentro delas (quem nunca desmontou ou quebrou um brinquedo ou um rdio?). Depois comeamos a dar nome aos grupos que montamos, classificando-os. Ado provavelmente seguiu esse processo em seu primeiro emprego (leia em Gnesis 2:19-20)!

http://edn.embarcadero.com/print/33728

17/06/2011

Anlise e Desenho Orientados por Objetos (1/4)

Page 3 of 4

Robert Kiyosaki, autor de Pai Rico, Pai Pobre, sugere que inteligncia a capacidade de fazer distines mais refinadas. Assim, podemos dizer que uma anlise melhor que outra pela forma com que fazem as distines. Um analista mais inteligente que outro por causa de sua capacidade de observao e distino, que leva a uma melhor especificao. Boas notcias, certo? Se j fazemos isso instintivamente, ser apenas uma questo de praticar de forma metdica e habitual, e teremos dado um passo significativo para adotar a OOA em nossos projetos!

Conceitos Fundamentais
A orientao por objetos est baseada em conceitos essenciais, que a distingue de outros paradigmas. E eles no so restritos programao, mas estendem-se anlise e ao projeto. Entre outros, os principais so: Abstrao: Princpio de ignorar os aspectos de um assunto no relevantes para o propsito em questo, tornando possvel uma concentrao maior nos assuntos principais. Pense no objeto pessoa. Se voc estiver criando um sistema para um hospital, provavelmente ir considerar aspectos tais como peso, altura e tipo sangneo. Mas eles seriam necessrios numa vdeo-locadora? Encapsulamento: Princpio de que cada componente do programa deve conter uma nica deciso de projeto, isto , um agrupamento de aspectos relacionados a uma idia ou entidade. Alm disso, a interface para cada mdulo definida de forma a revelar o menos possvel sobre seu funcionamento interno, implementando o ocultamento de informao. Assim, se for necessrio alterar alguma coisa dentro da cpsula, o mundo exterior no precisa (ou pelo menos no deveria precisar) ser alterado por causa disso. Nosso objeto pessoa, por exemplo, agrupa as informaes e comportamentos de um ser humano, enquanto esconde como isso feito. Identidade: Um objeto distingue-se de outro pelo simples fato de existir. Sua identidade independe dos valores de seus atributos. Podemos ter dois objetos idnticos (dois gmeos, por exemplo), mas ainda sim sabemos que so dois objetos independentes. Ao alocarmos dois objetos na memria do computador, embora possam ter todos os atributos iguais, seus endereos de memria so diferentes. Dois registros idnticos em uma tabela diferenciam-se pela sua chave primria nica. Herana: Mecanismo para expressar a similaridade entre classes, simplificando a definio de classes iguais a outras que j foram definidas (reutilizao de cdigo). Representa generalizao e especializao, tornando explcitos os atributos e servios comuns em uma hierarquia de classes. Um empregado uma pessoa. Portanto, se definimos uma classe com os atributos e servios tpicos de uma pessoa, podemos aproveitar tudo isso para especificar um empregado, concentrando-nos agora apenas no que ele tem de diferente (normalmente a mais). Polimorfismo: Capacidade de uma mesma mensagem ser entendida e executada de forma diferente por objetos distintos. Pea a uma pessoa para cantar. Cada tipo de pessoa ir responder ao pedido de forma diferente (algumas melhores que outras :). Polimorfismo tambm a possibilidade de manipular objetos mais especializados como se fossem objetos mais genricos. Se voc pedir a um empregado, um gerente ou um cantor, para cantar, voc no precisa saber a priori que tipo de pessoa ele , pois cantar est definido na classe Pessoa, e mesmo se os indivduos pertencerem a classes mais especializadas, por herana eles continuam sendo da classe Pessoa e, portanto, conseguem responder ao pedido para cantar. Os programas de calouros na TV atestam isso de forma irrefutvel! Associao: Unio ou conexo de idias. Agrupar certas coisas que acontecem em algum ponto no tempo ou sob circunstncias similares. Pessoas associam-se para os mais diversos fins: sociedade comercial, esportes, relacionamentos, projetos. A definio do tipo de associao busca espelhar o que acontece na vida real. Pessoas tambm esto associadas a coisas (carros, livros, ...), lugares (imveis, aeroportos, ...), servios (emprstimos, exames, ...), etc. Alm das associaes simples, tambm podemos ter composies (carro=motor+rodas+...) e agregaes (um curso um agregado de disciplinas).

http://edn.embarcadero.com/print/33728

17/06/2011

Anlise e Desenho Orientados por Objetos (1/4)

Page 4 of 4

Mos obra?
Ento, vamos comear a to aguardada anlise OO! Mas antes temos que arranjar um problema, um contexto, um domnio de negcios. Que tal a vdeo-locadora citada acima? No, isso est muito manjado... Controle acadmico? Boa tentativa... Um hospitalzinho? Outra hora... Enquanto no decido, saiba que no importa qual o domnio do problema, fatalmente encontraremos quatro tipos bsicos de objetos em todos eles: Pessoas, lugares ou coisas: esses so os objetos mais fceis de observar, pois so fsicos. Mesmo se forem entidades abstratas, pelo prprio estudo do processo de negcio so rapidamente detectados. Momentos ou intervalos: so eventos que ocorrem no processo real e que precisam ser registrados. O evento pode ser instantneo (uma venda, um depsito) ou ocorrer durante um intervalo de tempo (uma locao, uma viagem). Papis: geralmente as pessoas, lugares ou coisas participam dos eventos desempenhando algum tipo de papel especfico. Por exemplo, uma pessoa participa de uma venda como cliente ou vendedor. Um aeroporto pode desempenhar o papel de destino, origem ou escala de um vo. Descries (tipo catlogo): quando uma coisa ou lugar possui uma descrio razoavelmente constante, essa descrio pode ficar separada do objeto real e ser reutilizada por outros objetos. Um carro tem sua placa, cor e nmero de chassi, mas sua descrio geral (nmero de portas, potncia, etc.) pode ficar em um catlogo reutilizvel por diversos carros do mesmo modelo. S quatro? Claro, possvel que voc encontre um ou outro desvio dessa classificao geral, mas tenha isso como base e v se acostumando com a idia. Isso pode lhe economizar muito tempo na hora de analisar e projetar! Esses quatro tipos bsicos so chamados de arqutipos. Ah, sim! Nosso domnio de negcio... Bom, nos prximos artigos desenvolveremos uma anlise, projeto e programao de uma aplicao que nos possibilite controlar a nossa rede de estacionamentos de veculos, a OOPark. Ela dona dos melhores pontos da cidade e oferece alguns servios adicionais para os clientes, mas precisa de uma boa aplicao que lhe ajude a melhorar tanto o atendimento aos fregueses quanto a gesto do negcio.

Lio de Casa
Pense e pesquise sobre o assunto. Faa visitas a alguns estacionamentos e pergunte como funcionam. A tentao grande, mas tente no criar tabelas ou formulrios, mesmo que mentalmente. Apenas aprenda sobre o processo de negcio. Afinal, estamos na fase de anlise, ok? Sua tarefa aqui identificar os objetos participantes do sistema real, suas caractersticas, comportamentos e relacionamentos principais. No tente detalhar muito agora. Faremos isso quando estivermos projetando. Com a lista de objetos em mos, tente classific-los com relao aos quatro arqutipos apresentados. Vocs tm trinta dias para terminar. Quem no fizer a lio de casa ficar de castigo, pois no aprender na prtica! Um grande abrao e at a prxima aula! Ops, artigo...
Published on: 1/23/2007 2:34:10 PM
Server Response from: ETNASC02

Copyright 1994 - 2010 Embarcadero Technologies, Inc. All rights reserved.

http://edn.embarcadero.com/print/33728

17/06/2011