Você está na página 1de 6

Conceitos de orientação a objetos e UML

Entendendo o paradigma atual de desenvolvimento de sistemas

De que se trata o artigo:


Este artigo aborda a evolução do de-
senvolvimento de sistemas chegando
aos dias de hoje com o paradigma da
orientação a objetos. Em seguida são

E
ste artigo inicia mostrando como
evoluímos até o paradigma atual apresentados os conceitos da orientação
da orientação a objetos. Em segui- a objetos, sua aplicabilidade em diversas
da, conceituaremos a base da orientação a fases do desenvolvimento de sistemas,
objetos, com sua demonstração por meio e conclui com a apresentação da UML
de exemplos. Será apresentada uma visão como modelo utilizado para desenvol-
vimento de sistemas OO.
geral da aplicabilidade em diversas fases
do desenvolvimento de sistemas: levanta- Para que serve:
mento, análise, projeto de banco de dados Fornecer aos desenvolvedores ou
e implementação. E por fim, evidenciare- estudantes da área de sistemas a base
mos a proposta da UML como linguagem necessária ao contexto de desenvolvi-
de modelagem, com a apresentação dos mento atual – o paradigma de orientação
diagramas da versão atual. a objetos.
Em que situação o tema é útil:
O começo de tudo Atualmente há uma disseminação
A história da computação teve início de sistemas desenvolvidos sob o pa-
na necessidade do homem em conseguir radigma orientado a objetos, sem que
Ana Cristina Melo realizar cálculos. O caminho foi longo, alguns desenvolvedores tenham uma
informatica@anacristinamelo.com.br iniciado com o ábaco, muitos anos antes da completa visão da importância de toda
É especialista em Análise de Sistemas e professora a base de conceitos OO e da modelagem
era cristã. A primeira máquina de calcular
de graduação e pós-graduação da Universidade
que apenas somava e subtraía vem surgir em UML.
Estácio de Sá. Atua em análise e programação há
21 anos. Autora do livro ”Desenvolvendo aplica- apenas em 1642, desenvolvida por Blaise
ções com UML – do conceitual à implementação”, Pascal. Em 1694, Gottfried Von Leibniz 1822, o matemático inglês Charles Babbage
na segunda edição, e “Exercitando modelagem em
constrói a primeira calculadora que podia estabelecia os princípios do funcionamento
UML”. Palestrante em alguns eventos, entre eles,
Congresso Fenasoft, OD e Sepai. executar as quatro operações básicas, e em dos computadores eletrônicos no projeto

20 Engenharia de Software Magazine – Conceitos de orientação a objetos e UML


P R O J E TO

de sua máquina diferencial, capaz de rea- que esse paradigma ainda não era a solução diga OO. Sendo assim, se um desses
lizar os cálculos necessários para elaborar para a velha crise de software. conceitos não for atendido, não podemos
uma tabela de logaritmos. A partir daí, Naturalmente, logo se pensa que a afirmar que determinada tecnologia
outras invenções abriram caminhos para o orientação a objetos surgiu após a análise possa ser nomeada como orientada a
que temos hoje. O marco inicial se dá com o estruturada, como uma evolução dessa objetos. Isso aconteceu com a linguagem
primeiro computador eletrônico, o ENIAC metodologia, buscando-se as soluções Visual Basic, que antes da sua versão .net
(Eletrical Numerical Integrator and Calcula- necessárias para um projeto confiável e de não implementava todos os conceitos de
tor), surgido em 1945, e pesando cerca de manutenção fácil. É correto imaginar que o orientação a objetos.
30 toneladas. Até hoje os computadores paradigma da orientação a objetos tornou- Vejamos então esses conceitos:
ainda utilizam a arquitetura proposta por se a solução para acompanhar a demanda Objeto: um objeto é qualquer coisa
Von Neumann. Em 1951, surgia o primeiro cada vez maior e freqüente do mercado, existente no mundo real, em formato
computador fabricado comercialmente: o mas o erro está no posicionamento histó- concreto ou abstrato, ou seja, que exista
UNIVAC I, usado no censo americano por rico do conceito de orientação a objetos, fisicamente ou apenas conceitualmente,
12 anos seguidos. pois este surgiu muito antes do conceito e o qual se pode caracterizar e identificar
A partir da década de 40, descobre-se a da programação estruturada. comportamentos.
importância da computação, e essa passa Em 1962, Ole-Johan Dahl e Kristen Ny- Podemos afirmar que um objeto é uma
a fazer parte da nossa história. Contudo, gaard criaram uma linguagem chamada caixa-preta que recebe e envia mensagens,
numa primeira fase ninguém pensava em Simula, baseada na linguagem Algol 60. ou seja, num sistema orientado a objetos,
software. Os esforços estavam voltados à O diferencial residia em seu objetivo: os objetos trocam informações por meio
evolução do hardware, buscando-se redu- permitir o projeto de simulações. Surgia de mensagens.
zir os problemas das primeiras máquinas. a primeira linguagem orientada a objetos, Num sistema orientado a objetos não
Assim, da primeira geração de computa- apresentando os conceitos de classe e modelamos apenas objetos de negócio.
dores à válvula, passamos para a segunda herança. Essa foi a semente que inspirou Muitas vezes, de acordo com a arquitetura
geração, utilizando transistores. o desenvolvimento de uma nova lingua- utilizada, modelamos objetos computacio-
A primeira linguagem de programação gem, a primeira totalmente orientada a nais, visuais ou não.
surgida foi a linguagem de máquina, na objetos —o SmallTalk. Nela, não existem Exemplo: ao levantarmos os requisitos
década de 50 — o Assembly. Nesse mo- tipos primitivos, tudo é representado para informatizar uma concessionária,
mento, a preocupação era restrita aos co- em forma de objeto: números, caracteres encontraremos o objeto automovel (físico),
mandos, nem se pensava em análise, mui- etc. Disponibilizada ao público no início da mesma forma que podemos modelar o
to menos em modelagem de requisitos. A dos anos 80, SmallTalk solidificou para a objeto venda (conceitual).
partir de então, surgem as linguagens de comunidade os conceitos de classe, ob- Atributo: as características associadas aos
alto nível, como Fortran, Algol e Cobol. jeto, atributo, método, encapsulamento, objetos são chamadas de atributos. Para os
Um rápido aumento na complexidade herança e mensagem. A partir daí, novas objetos de negócio, é comum usarmos o
das demandas por software e a falta de linguagens surgiram, como o C++ (versão conceito de atributo. Para os objetos visuais,
técnicas para definição de novos sistemas OO da linguagem C), Object Pascal (ver- utilizamos o conceito de propriedade.
culminaram em diversos problemas, são OO do Pascal), Eiffel e Java (criado a Exemplo: atributos da classe Cargo:
entre eles: estouro de orçamento e prazo, partir do C++). descricao e salario. Atributos da classe
softwares de baixa qualidade, requisitos Automovel: modelo, cor, numeroPortas, ano,
não atendidos e código de manutenção Conceitos fundamentais de placa etc.
difícil. Estava definida a crise de software. orientação a objetos Operação x Método: o comportamento
A solução para contornar a crise veio com Os conceitos da orientação a objetos dos objetos é representado pelas opera-
o conceito da Engenharia de Software, em surgiram da necessidade em se enfatizar ções. Contudo, a operação para um objeto
1968. Objetivava-se trazer os princípios da unidades discretas, e obter a reutilização representa apenas a definição do serviço
Engenharia, com todo o seu planejamento de código, mantendo-se a qualidade do que ele oferece a outras estruturas. Quan-
e modelagem, para se resolver os proble- software. O núcleo do pensamento OO do tratamos da implementação dessa
mas da área ainda imatura. No mesmo ano predomina num foco sobre os dados, em operação, ou seja, da sua representação
de 68, Dijkstra escreve sobre a programa- vez dos processos, compondo módulos em código, estamos nos referindo ao seu
ção estruturada; tinha início o marco do auto-suficientes — os objetos —, encerran- método. Os métodos de uma classe ma-
primeiro paradigma de desenvolvimento do em sua estrutura todo o conhecimento nipulam somente as estruturas de dados
de sistemas. dos dados e dos processos para manipu- daquela classe, ou seja, para se ter acesso
Mas enquanto novas linguagens surgiam lação desses dados. aos dados de outra classe, isso deve ser
—Pascal, C —, ainda não se tinha a defini- O que se obtém de principal na modela- feito por meio de mensagens.
ção de uma metodologia de desenvolvi- gem orientada a objetos é a possibilidade Exemplo: operações da classe Cargo: cadas-
mento de sistemas, até 1978, quando Tom de se abstrair diretamente os conceitos trar() e reajustarSalario(percentual: float).
DeMarco escreve seu livro sobre análise do mundo real, sem subterfúgios para se Ao modelarmos uma classe precisamos
estruturada. Contudo, a dificuldade de chegar à solução computacional. sempre considerar o contexto. Se não fosse
manutenção dos diversos modelos gerados Os conceitos fundamentais de orientação isso, bastaria um famoso metodologista
na fase de análise e projeto, fez com que se a objetos são o contrato que estabelece publicar as soluções para todas as classes
percebesse, nas duas décadas seguintes, toda e qualquer implementação que se de negócio.

Edição 08 – Engenharia de Software Magazine 21


Desta forma, não teremos necessaria- precoVenda = precoCusto * (1 + lucro/100) A herança não precisa se limitar aos
mente os mesmos atributos e operações Esse cálculo está na implementação de objetos de negócio. Pelo contrário, um
para a classe aluno, modelada num sis- uma operação, ou seja, é o seu método, e dos maiores ganhos que nós temos com a
tema acadêmico de uma escola de nível fica encapsulado (escondido). orientação a objetos é a possibilidade de
médio, e a mesma classe aluno, modelada Suponha agora que hoje foi colocada se estender todo esse conceito de utiliza-
num sistema acadêmico de uma Univer- ção para todos os componentes do nosso
uma nova versão da classe Produto, na qual
sidade. Não é garantia termos os mesmos sistema.
esse cálculo passa a ser:
atributos e operações nem se considerar- Exemplo: podemos criar uma classe para
precoVenda = precoCusto * (1 + lucro/100)
mos dois sistemas acadêmicos modelados precoVenda = precoVenda * (1 - um relatório, com o logotipo da empresa,
descontoMes/100)
para distintas Universidades. dados de identificação do cabeçalho e do
Exemplo: Vamos tomar por base a classe As rotinas A, B, C e D receberão uma rodapé, e a partir dessa classe, herdar
Automovel. Se estivermos no contexto de exceção em virtude da regra de cálculo ter todos os outros relatórios do sistema,
uma concessionária, teremos operações sido alterada? Não, eu respondo. É trans- particularizando em cada um, as carac-
como: cadastrar, alterarProprietario etc. Em parente para essas rotinas (e precisa ser terísticas específicas. Imagine o esforço
contrapartida, se estivermos no contexto assim) que houve alteração na forma de necessário para se trocar o logo e incluir
de um simulador para auto-escola, seu cálculo do preço de venda. Se estivermos o nome do usuário logado em todos os
comportamento deve reproduzir o objeto diante de um componente (por exemplo, 1000 relatórios de um sistema: calculo uns
real, com operações como: ligar, aumentar uma dll), absolutamente nada será preciso dois minutos.
marcha, reduzir marcha, acelerar etc. fazer com essas rotinas. Se estivermos com Polimorfismo: uma operação pode ter
Estado: são os valores assumidos pelos as rotinas dentro do mesmo pacote que a implementações diferentes em diversos
atributos de um objeto. pontos da hierarquia de classes. Isso
classe, basta recompilar tudo.
Exemplo: em um determinado objeto significa que ela terá a mesma assinatura
Herança: ao refinarmos a modelagem de
cargo, o estado do seu atributo salario é o (mesmo nome, lista de argumentos e re-
um sistema é comum encontrarmos carac-
valor R$ 5000,00. torno), porém implementações diferentes
terísticas redundantes entre objetos. Essa
Mensagem: é a solicitação que um objeto (métodos). Isso é o polimorfismo (poli =
redundância pode ser evitada pela separa-
faz a outro, invocando a execução de um muitas; morphos = forma).
ção dos atributos e operações numa classe
determinado serviço. Por exemplo, para Exemplo: Há uma operação calcularSa-
comum, identificada como superclasse.
que um objeto possa calcular a folha de pa- lario() que pertence à classe Funcionario.
Essa classe comum (superclasse) passa
gamento, ele precisa saber o salário de cada Herdamos de Funcionario a classe Professor,
a ser a generalização de outras classes
funcionário. Assim, ele passa uma mensa- o que resulta automaticamente na herança
que encerram em si apenas os atributos e
gem ao objeto cargo, solicitando a execução de calcularSalario(). Contudo o cálculo do
operações específicos a cada uma.
do serviço obterSalario, que nada mais é do salário de um professor não é o mesmo
Exemplo: Suponha que temos duas clas-
que uma operação do objeto cargo.
ses: Cliente e Funcionario. São atributos
Encapsulamento: o conceito de encapsu-
dessas classes: Cliente (cpf, nome, dataNas- Classes Atributos
lamento nos remete ao fato de que a utili-
cimento, endereco, dataPrimeiraCompra) e Antes da herança
zação de um sistema orientado a objetos
Funcionario (cpf, nome, dataNascimento,
não deve depender de sua implementação Cliente cpf
endereco, dataAdmissao, funcao). Imagine
interna, e sim de sua interface. Isso garan- nome
que existem operações que validam o CPF,
te que os atributos e os métodos estarão dataNascimento
retornam a idade de um cliente ou fun-
protegidos, só podendo ser acessados pela endereco
cionário, ou formatam o endereço. E que
interface disponibilizada pelo objeto, ou dataPrimeiraCompra
seja, sua lista de serviços. Essa proteção todas essas funções apareçam em dupli-
cidade nas classes Cliente e Funcionário. Funcionario cpf
garante que os usuários de uma classe
Numa situação dessas, o que se espera na nome
não sejam influenciados por quaisquer
orientação a objetos é que essa redundân- dataNascimento
alterações feitas em seu conteúdo.
cia seja eliminada com a herança. Assim, endereco
Na prática, imagine uma classe Produto
que possua a operação obterPrecoVenda: cria-se uma superclasse Pessoa, e a ela são dataAdmissao
float. Essa operação é pública, tornando- atribuídos todos os atributos e operações função
se um serviço disponibilizado a outras comuns à Cliente e Funcionario. Sobram nas Após a herança
classes. Em qualquer rotina que se queira subclasses (Cliente e Funcionario) somente
Pessoa cpf
mostrar o preço de venda de um produto, os atributos e operações específicos a cada
nome
basta instanciar um objeto Produto, e passar um. Na prática, ao se usar uma subclasse,
dataNascimento
uma mensagem para executar o serviço, tem-se acesso a todos os elementos das
endereco
ou seja, chamar a execução da operação classes ascendentes, como se tivessem
sido criadas na própria classe filha. Veja na Cliente dataPrimeiraCompra
obterPrecoVenda.
Suponha que as rotinas A, B, C e D usem Tabela 1 o resultado desse processo. Funcionário dataAdmissao
esse serviço e que até ontem esse valor de Quando uma subclasse possui mais do funcao
venda fosse obtido apenas com um cálculo que uma superclasse é dito que temos uma
Tabela 1. Estrutura de classes antes e após remodelar
simples: herança múltipla. com herança.

22 Engenharia de Software Magazine – Conceitos de orientação a objetos e UML


P R O J E TO

que o cálculo do salário de um funcioná- Camada Responsabilidade


rio, o que nos leva a ter a mesma operação,
porém com métodos diferentes. Apresentação (interface) Apresentação dos dados e interfaceamento entre o usuário e o sistema
Negócio (domínio) Lógica do sistema, implementação das regras de negócio
Camadas lógicas x camadas físicas Persistência Acesso ao banco de dados
Há uma certa confusão quando se fala
Tabela 2. Responsabilidades das camadas lógicas de um sistema orientado a objetos
em camadas. A garantia de encapsulamen-
to e autonomia do objeto está pautada no Na Figura 1 exemplificamos como as objeto, agora completo, é então devolvido à
conceito das camadas lógicas. informações transitam entre as camadas. camada de apresentação, onde seu conteúdo
As camadas lógicas (layers) são imple- Suponha um usuário que via interface já pode ser exibido ao usuário.
mentadas independentes da arquitetura gráfica queira consultar o salário líquido
do sistema, ou seja, de suas camadas fí- de um funcionário cujo código é 100. Ele Aplicabilidade da orientação a
sicas (tiers). Dessa forma, as três camadas faz essa solicitação por meio da interface objetos
continuarão a existir mesmo se estiverem (camada de apresentação). Esta instancia um Ao se falar em orientação a objetos,
implementadas num sistema cliente/ser- objeto Funcionário (objFunc) e faz a cha- pouco se imagina que a mesma tenha
vidor (two-tier) ou numa arquitetura web mada do método busca, passando como aplicabilidade em diversas fases do de-
(three-tier). Podemos ter as três camadas parâmetro o código do funcionário (100). senvolvimento de sistemas: levantamento
lógicas implementadas até mesmo em um A solicitação é dirigida à camada de negócio, de requisitos, análise, implementação e
único computador, stand-alone, com base de que nada pode fazer enquanto não obtiver projeto de banco de dados.
dados local, mas ainda assim teremos três os dados do banco de dados. Assim, ela Durante o levantamento de requisitos
camadas lógicas distintas. A divisão das repassa o objeto, ainda vazio, à camada fomos beneficiados com o caso de uso.
camadas lógicas é mostrada na Tabela 2. de persistência, solicitando que seja feita a Você pode pensar imediatamente: “Mas
A camada de apresentação normalmente busca da persistência do referido objeto. A o caso de uso é orientado a objetos?” E a
é representada pela interface gráfica, po- camada de persistência, por sua vez, a única resposta é direta: “Não!” A verdade é que
dendo ser representada por qualquer ou- que conhece a estrutura do banco, prepara ele não tem nenhuma referência à orienta-
tra forma de entrada de dados. Ao receber uma query de consulta, para recuperar do ção a objetos, a não ser ter sido criada por
uma solicitação do usuário, essa camada BD os dados necessários. De posse dessas Ivar Jacobson 0 um dos três autores da
se responsabiliza em convertê-lo em ações informações, cabe a essa camada associar UML 0, em sua metodologia orientada
reconhecíveis pela próxima camada, a de o conteúdo retornado do BD aos atributos a objetos (OOSE – Object Oriented System
negócio. Ao receber as respostas da cama- do objeto (objFunc) e, em seguida, devolvê- Engineering). Seu formato e subdivisão em
da de negócio, a camada de apresentação lo à camada chamadora. Contudo, para se seções não possuem nenhuma similarida-
cuida em exibi-las para o usuário. Pode se chegar ao valor do salário líquido é preciso de com os conceitos de classe, herança etc,
apresentar de forma múltipla. um cálculo, cuja regra pertence apenas à ca- contudo sua importância faz coro com as
Exemplo: a rotina da camada de negócio mada de negócio. Sendo assim, ao retornar à vantagens do paradigma OO.
que processa um contra-cheque pode ter segunda camada, esta de posse do valor do A Engenharia de Requisitos se preocupa
saída em duas camadas de apresentação: salário bruto, já pode proceder ao cálculo desde a identificação do requisito até sua
em uma interface gráfica, para utilização que devolverá o valor do salário líquido. O modelagem e especificação. Nas fases de
interna, e em uma interface web, para
acesso via internet.
A camada de negócio tem por objetivo
receber as solicitações da camada de apre-
sentação, e realizar à camada de persis-
tência as solicitações que se façam neces-
sárias, para processar e devolver o pedido
original. Essa camada fica responsável por
todo processamento, cálculo e validação
inerente aos requisitos da aplicação.
A camada de persistência tem por ob-
jetivo receber as solicitações da camada
de negócio, e para realizá-las, prepara e
executa as queries necessárias para acesso
ao banco de dados. Somente essa camada
deve conhecer as fontes de dados e a
estrutura das tabelas envolvidas com ela.
Isso garante a não propagação de acesso
aos dados, o que muitas vezes não só torna
a manutenção difícil, como gera erros ex-
ponenciais, quando da abrangência errada
de uma alteração. Figura 1. Exemplo da troca de mensagens entre as camadas lógicas de uma aplicação

Edição 08 – Engenharia de Software Magazine 23


modelagem e especificação é que o caso de em todas as fases do desenvolvimento Veja na Figura 2 a diferença que temos
uso vem a ser uma poderosa ferramenta, de sistemas, exceto no projeto de banco na implementação da classe Funcionario
pois nos permite a comunicação com o de dados, que continua sendo feito sobre em uma tabela relacional e em uma tabela
usuário, sem que tenhamos a superficiali- bancos relacionais. Essa passagem da de objetos.
dade de um DFD, ou o excesso de técnica modelagem OO para o projeto de bancos Espera-se que toda a navegação através
de um pseudo-código. relacionais é conhecida como modelagem dos relacionamentos entre as classes de um
Dentro de um sistema orientado a objetos, objeto-relacional. Contudo, o ideal (que banco objeto-relacional seja feita por meio
o caso de uso se torna a base para todo o esperamos para um futuro próximo) seria da notação de ponto (dot notation). A notação
processo de desenvolvimento, visto que a o projeto de banco de dados acompanhar de ponto é a forma existente para acessar
partir do mesmo é gerada a primeira versão a modelagem OO, ou seja, termos a nossa as propriedades (atributos) ou métodos de
do modelo de classes, a identificação das disposição um banco de objetos. um objeto. Desta forma, não é necessário
trocas de mensagens entre objetos, por meio Na realidade, o banco, ou alguns bancos, que a query estabeleça explicitamente o re-
da modelagem de um diagrama de seqüên- objetos-relacionais já estão disponíveis no lacionamento entre os objetos, visto que este
cias, e a geração dos casos de teste que irão mercado, como o Oracle, DB2, Postgress, relacionamento já foi previamente definido
garantir a qualidade do produto final. Caché etc. Tudo começou com o surgimen- na definição da classe.
Numa visão de mais alto nível do sis- to dos bancos de objetos, padrão definido
tema, temos o diagrama de casos de uso. pela OMG (Object Management Group) O nascimento da UML
Numa visão de mais baixo nível, com os que cuidava de apresentar um modelo Ao falarmos no começo do desenvolvi-
detalhes necessários para que todos os de dados orientado a objeto. Contudo os mento de sistemas, vimos que a análise
requisitos sejam documentados e modela- bancos BDOO criados sobre este padrão estruturada só surgiu após a programação
dos, temos os cenários dos casos de uso. trouxeram a facilidade de se implementar estruturada. O mesmo ocorreu com a orien-
A modelagem de um sistema na fase de modelos complexos, mas deixaram a dese- tação a objetos (talvez esteja aí a origem de
análise tornou-se um processo mais trans- jar quanto ao desempenho. Numa corrida todos os problemas computacionais). No
parente com a utilização da UML. Diagra- para não perder o filão do mercado, os início da década de 90 havia mais de 50 mé-
mas de classe passam a concentrar todas fabricantes de bancos relacionais se reu- todos disputando o mercado para se tornar
as informações necessárias sobre os dados niram, buscando um padrão alternativo, “o” método principal para a orientação a
(antes modelados com diagramas de enti- que veio a se chamar objeto-relacional objetos. Contudo, a maior parte desses mé-
dade-relacionamento) e sobre as funciona- ou relacional-estendido. Assim nasceu a todos cometia um grave pecado: ser uma
lidades (antes modelados com diagramas versão 3 do SQL. Com isso, algumas ver- extensão dos métodos estruturados. Os
de fluxo de dados). Não só conseguimos sões recentes dos bancos BDR, atualizadas maiores prejudicados eram os usuários que
que essa fase seja mais transparente, como sobre o padrão 3, já oferecem ao mercado não conseguiam encontrar uma solução
conseguimos que a transição da fase de a possibilidade de modelar suas bases de única e devidamente discutida.
análise para a fase de projeto seja feita de dados no modelo OO. Nessa época, mesmo com contribuições
forma automática. A partir de um modelo O que falta então? Acredito sinceramente valiosas de outros metodologistas, três
de classes, não só geramos um script de que patrocínio. Patrocínio das empresas metodologias começaram a dominar o
banco de dados, como conseguimos gerar de mercado em apostar nessa nova forma mercado: OMT – Object Modeling Techni-
automaticamente a estrutura das classes na de persistir seus dados, pressionando que de James Rumbaugh, método Booch de
linguagem de programação escolhida. Da assim os fabricantes a investirem mais no Grady Booch e OOSE – Object-Oriented
mesma forma, a partir de uma estrutura suporte de seus produtos como bancos Software Engineering de Ivar Jacobson.
de banco de dados e de um código já im- objeto-relacionais. Booch, ciente dos problemas em se ter
plementado, podemos automaticamente
atualizar nosso modelo, pelo processo de
engenharia reversa, garantindo que toda a
documentação esteja atualizada.
Para que essa transparência e pratici-
dade aconteçam é imprescindível que
um sistema modelado em UML tenha
a sua implementação numa linguagem
orientada a objetos. O mesmo já não é
uma verdade absoluta quando se fala
da modelagem de casos de uso. Hoje é
comum encontrarmos equipes de desen-
volvimento que vêm utilizando casos de
uso para a modelagem e especificação dos
requisitos, porém tendo as fases de análise
e projeto voltadas para a metodologia de
análise essencial.
Atualmente um padrão de mercado é
a aplicabilidade da orientação a objetos
Figura 2. Exemplo contrapondo o mapeamento objeto-relacional x transição direta para BDOR

24 Engenharia de Software Magazine – Conceitos de orientação a objetos e UML


P R O J E TO

aquela diversidade de métodos, propôs ao • Diagrama de objetos (Object Dia- Versão da Publicação Tipo de revisão
mercado a união das metodologias, o que gram) – apresenta objetos e valores de
UML
foi rechaçado pela maioria. Pouco depois, dados. Corresponde a uma instância do
James Rumbaugh abandonou a General diagrama de classes, mostrando o estado 1.1 Novembro de 1997 Estrutural
Electric e se juntou à Booch na Rational de um sistema em um determinado ponto 1.2 Julho de 1998 Somente conteúdo
Software, produzindo o método unificado, do tempo. 1.3 Março de 2000 Somente conteúdo
na sua versão 0.8. Jacobson, ao perceber a • Diagrama de componentes (Compo-
1.4 Maio de 2001 Estrutural
similaridade do seu método com o méto- nent Diagram) – mostra as dependências
do unificado, logo se uniu a eles. O que entre componentes de software, apresen- 1.5 Março de 2003 Somente conteúdo
nasceu ainda como um método, teve a tando suas interfaces. 2.0 Julho de 2005 Estrutural
mudança de perspectiva, passando a ser • Diagrama de estrutura composta
2.1.1 Agosto de 2007 Somente conteúdo
uma linguagem de modelagem, desaco- (Composite Structure Diagram) – usado para
plando o processo de desenvolvimento. mostrar a composição de uma estrutura. 2.1.2 Novembro de 2007 Somente conteúdo
Nascia a UML – Unified Modeling Language Útil em estruturas compostas de estrutu- Tabela 3. Histórico das versões da UML
na sua versão 0.9. ras complexas ou em projetos baseados
Em 1996, a UML já era vista pelas orga- em componentes – uma variação do diagrama de ati-
nizações como uma ótima estratégia para • Diagrama de pacotes (Package Diagram) vidades que mostra de uma forma
seus negócios. A OMG (Object Management – usado para organizar elementos de mode- geral o fluxo de controle dentro de
Group) emitiu uma RFP (Request for Pro- lo e mostrar dependências entre eles um sistema ou processo de negó-
posals), que objetivava receber propostas • Diagrama de implantação (Deploy- cios. Cada nó ou atividade dentro
de padronização para uma metodologia ment Diagram) – mostra a arquitetura do do diagrama pode representar outro
de desenvolvimento orientado a objetos. sistema em tempo de execução, as plata- diagrama de interação.
Respostas foram recebidas da comunidade formas de hardware, artefatos de software Podemos afirmar que é possível se com-
de engenharia de software e de grandes em- e ambientes de software (como sistemas pletar a modelagem de um sistema de
presas (Digital, HP, IBM, Microsoft, Oracle e operacionais e máquinas virtuais) pequeno ou médio porte, com sucesso,
Unisys, entre outras) fortalecendo a propos- Diagramas comportamentais (dinâmi- com apenas três diagramas (casos de uso,
ta da UML. Em janeiro de 1997, a Rational cos): classes e seqüências), tendo o suporte,
lançou a versão 1.0 da UML como proposta • Diagrama de casos de uso (Use Case dependendo do contexto, de três outros
para padronização na OMG. Entre janeiro e Diagram) – mostra os casos de uso, atores diagramas (objetos, atividades e máquina
julho novas contribuições foram recebidas, e e seus relacionamentos que expressam a de estados).
em 14 de novembro de 1997, a UML 1.1 era funcionalidade de um sistema. O paradigma da orientação a objetos veio
adotada como padrão pelo OMG. • Diagrama de atividades (Activity definitivamente ocupar um espaço que há
A manutenção da UML passou a ser Diagram) – representa a execução de ações muito se necessitava no mercado de de-
responsabilidade da RTF (Revision Task ou atividades e os fluxos que são dispa- senvolvimento. Cabe aos desenvolvedores
Forces), pertencente à OMG, sob a direção rados pela conclusão de outras ações ou entenderem a importância de se respeitar
de Cris Kobryn, centralizando os comentá- atividades. todos os seus conceitos, para que se obte-
rios e pedidos de revisão da comunidade. • Diagrama de máquina de estados nha o melhor do que ele nos propõe.
Novas versões foram publicadas a partir (Statechart Diagram) – representa as ações
daí, conforme a Tabela 3. ocorridas em resposta ao recebimento de
eventos. Links
Diagramas da UML • Diagramas de interação:
O que há de mais relevante na UML é o ƒ Diagrama de seqüências (Se- UML Site
fato de que a linguagem de modelagem quence Diagram) – mostra as inte- www.uml.org
nos oferece diversas ferramentas, ficando rações que correspondem a um Artigo “What is Object-Oriented Software?”, escrito
sob nossa responsabilidade a forma e a conjunto de mensagens trocadas por Terry Montlick
ordem como elas serão utilizadas. Além entre objetos e a ordem que essas http://www.softwaredesign.com/objects.html
disso, a UML possui mecanismos de mensagens acontecem. ODMG Site
extensibilidade, que permitem a adequa- ƒ Diagrama de comunicação www.odmg.org
ção da linguagem aos diversos sistemas (Communication Diagram) – é o an-
existentes no mercado, sem que se perca tigo diagrama de colaboração, que
o entendimento comum ao se usar um mostra objetos, seus inter-relacio-
mesmo modelo. namentos e o fluxo de mensagens
A versão atual da UML contempla 13 dia- Dê seu feedback sobre esta edição!
entre eles Feedback
eu
gramas, divididos em duas categorias: ƒ Diagrama temporal (Timing A Engenharia de Software Magazine
s

Diagramas estruturais (estáticos): Diagram) – mostra a mudança de tem que ser feita ao seu gosto.
sobre e

• Diagrama de classes (Class Diagram) estado de um objeto numa pas- Para isso, precisamos saber o que você,
s

ta
– apresenta classes conectadas por relacio- leitor, acha da revista! e
sagem de tempo, em resposta a
d i çã o

namentos. Usado para exibir entidades do eventos externos. Dê seu voto sobre este artigo, através do link:
mundo real, além de elementos de análise ƒ Diagrama de visão geral de inte- www.devmedia.com.br/esmag/feedback
e projeto. ração (Interaction-Overview Diagram)

Edição 08 – Engenharia de Software Magazine 25

Você também pode gostar