Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

1ºAula
Orientação a objetos
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de: 
• conhecer os conceitos de Orientação a Objetos;
• compreender as dificuldades de se observar um problema e transformar em uma solução;
• entender os benefícios da orientação a objetos.
Prezados(as) alunos(as),
Em nossa primeira aula, vamos estudar os conceitos 
importantes sobre orientação a objetos.
Se ao final desta aula tiverem dúvidas, vocês poderão saná-
las através das ferramentas da plataforma de ensino.
Conto com a sua participação, aproveite para ler e refletir 
os objetivos de aprendizagem, afinal da sua participação 
dependerá seu aprendizado.
Bom Trabalho!
Bons estudos!
141
Análise de Sistemas II 6
Seções de estudo
1 – Conceitos da orientação a objetos
2 – A complexidade do domínio do problema
3 – Benefícios da orientação a objetos
1 - Conceitos da orientação a objetos
CONCEITO
CURIOSIDADE
“Uma abordagem orientada a objetos para o desenvolvimento de 
software 
O conceito de orientação a objetos já vem sendo 
discutido há algum tempo. Por volta de 1970, surgiram 
as primeiras publicações, mas a sua maior disseminação 
ocorreu nos anos 90, quando se tornou uma das principais 
metodologias de desenvolvimento de software. Desde o 
lançamento da primeira linguagem orientada a objetos, a 
SIMULA, várias referências da engenharia de software mundial 
como: Peter Coad, Edward Yourdon e Roger Pressman 
abordaram extensamente a análise orientada a objetos como 
um grande avanço no desenvolvimento de sistemas.
No início dos anos 80, surgiu a análise essencial para 
sistemas em tempo real, que ajudaram a análise estruturada 
por eventos, delimitando a área de atuação do sistema, através 
da utilização da lista de eventos, o conceito de “tecnologia 
introduzindo o modelo Entidade Relacionamento (DER). 
As suas principais vantagens residem em oferecer critérios 
objetivos para o particionamento do sistema, observando 
suas características, facilita a obtenção da solução, através dos 
eventos, isola os requisitos de restrições de implementação, 
de análise e sincroniza a modelagem de dados com a de 
processos.
Entretanto, os sistemas desenvolvidos baseados nas 
técnicas estruturadas ainda apresentam algumas limitações, 
principalmente quando da inclusão de novas funções ou 
alterações em funções já existentes, que na maior parte das 
vezes, provocam problemas em outras partes do software.
A grande esperança que levou aos estudos da orientação 
a objetos com mais intensidade foi a de suprir algumas 
das principais preocupações das empresas de software: a 
necessidade cada vez mais crescente de se construir softwares 
corporativos de forma muito mais rápida, com baixo custo, 
em desenvolvimento de software, de Orientação a Objetos. 
apresenta a sua visão do que entende por essa abordagem. 
Alguns dos conceitos encontrados são:
• a orientação a objetos pode ser vista como a 
abordagem de modelagem e desenvolvimento 
de sistemas que facilita a construção de sistemas 
complexos a partir de componentes individuais;
• o desenvolvimento orientado a objetos é a técnica 
de construção de software na forma de uma coleção 
estruturada de implementações de tipos abstratos 
de dados;
• desenvolvimento de sistemas orientado a objetos é 
um estilo de desenvolvimento de aplicações onde 
o encapsulamento potencial e real de processos 
e dados é reconhecido num estágio inicial de 
desenvolvimento e num alto nível de abstração, 
com vistas a construir de forma econômica o que 
• a orientação a objetos é uma forma de organizar o 
software como uma coleção de objetos discretos que 
incorporam estrutura de dados e comportamento;
• quando construídos corretamente, sistemas 
possuem estruturas bem conhecidas e provêm a 
oportunidade de criar e implementar componentes 
totalmente reutilizáveis;
• modelos orientados a objetos são implementados 
convenientemente, utilizando uma linguagem de 
programação orientada a objetos. A engenharia de 
software orientada a objetos é muito mais que utilizar 
mecanismos de sua linguagem de programação, é 
saber utilizar, da melhor forma possível, todas as 
técnicas da modelagem orientada a objetos;
• a orientação a objetos não é só teoria, mas uma 
usadas em inúmeros projetos e para construção de 
diferentes tipos de sistemas;
• a orientação a objetos requer um método que integre 
o processo de desenvolvimento e a linguagem 
de modelagem com a construção de técnicas e 
ferramentas adequadas.
A Orientação a Objetos é um dos maiores, e talvez o 
maior avanço em software destes últimos anos. Ela nos oferece 
uma forma mais natural de se analisar o mundo e transformar 
as necessidades em programas que irão resolver nossos 
problemas. Ela nos permite construir sistemas melhores e 
mais fáceis de dar manutenção.
As técnicas de análise estruturadas ainda hoje são as mais 
sempre tiveram grande aceitação desde que foram lançadas 
sendo utilizadas, a decomposição das funções (chamada 
mostrou-se inadequada em situações de sistemas complexos 
aperfeiçoamentos foram introduzidos desde então, e ajudaram 
existe uma probabilidade maior de que os sistemas criados 
142
7
com as técnicas estruturadas sejam mais difíceis de serem 
incrementados com novas funções e as alterações em funções 
já existentes, muitas vezes, provocam sérios problemas em 
outras partes do software.
A orientação a objetos permite modelar de forma mais 
natural o mundo real, pois as estruturas de dados são vistas 
como objetos, ou seja, têm características e funções. Seu maior 
objetivo é aumentar a produtividade do desenvolvimento de 
software através de uma maior expansibilidade e reutilização 
de código, além de controlar a complexidade e o custo de 
manutenção.
1.1
Por muitos anos, o termo “orientado a objetos” (OO) 
foi usado para denotar uma abordagem de desenvolvimento 
de software que usava uma das linguagens de programação 
orientadas a objeto (ex. Ada 95, C++ , Eiffel, Smalltalk). Hoje, 
o paradigma abrange uma visão completa da Engenharia de 
Software. Edward Berard, citado por Pressman (2006, p.552) 
Os benefícios da tecnologia orientada 
a objetos são incrementados se ele for 
endereçado cedo - através do processo de 
engenharia de software, considerando que a 
tecnologia OO deve avaliar seu impacto em 
todo este processo. Simplesmente empregar 
a programação OO (OOP) não irá produzir 
os melhores resultados. Os engenheiros de 
software e seus gerentes devem considerar 
também itens como Análise de Requisitos 
OO (OORA), projeto OO (OOD), análise 
de domínio OO (OODA), sistemas de banco 
de dados OO (OODBMS) e engenharia de 
software auxiliada por computador orientada a 
objetos (OOCASE). (PRESSMAN, 2006, s/p)
A orientação ao objeto se dedica a desenvolver um 
modelo orientado a objetos do domínio da aplicação. Os 
estão associadas com o problema a ser resolvido.
O enfoque da orientação a objetos é uma visão sobre um 
mundo como uma coletânea de objetos que interagem entre 
si, apresentando características próprias que são representadas 
pelos seus atributos e operações.
No paradigma orientado a objetos, os dados e as funções 
são vistos de forma agregada, não ocorrendo uma modelagem 
separada para cada um desses componentes; portanto, sob 
esse ponto de vista, a orientação a objetos favorece uma 
modelagem mais natural, que melhor retrata a realidade, 
pois processos e dados estão coligados, não se encontram 
dissociados em nenhuma atividade real.
software
2
problema
A tarefa da equipe de desenvolvimento de software é 
construir a ilusão da simplicidade (Booch, 2005), como mostra 
software 
o usuário.
Para o usuário, não importa o quão complexa é a estrutura interna 
do software, para ele o que importa é se o software resolve suas 
necessidades de forma fácil, rápida e segura. Para o usuário, o 
sistema deve ser simples.
A complexidade de um software é uma propriedade 
essencial e não acidental. Observa-se que a herança da 
complexidade deriva de quatro elementos:• A complexidade do domínio do problema – o 
domínio do problema que estamos citando aqui não 
está relacionado com “dominar o problema”, mas 
sim a abrangência, o escopo do problema, este escopo 
envolve os dados, informações, procedimentos, 
o problema. Geralmente a pessoa que desenvolve 
não é quem conhece o domínio do problema que 
está sendo analisado. É preciso destacar também 
que a tarefa de levantamento das necessidades do 
sistema é complicada e demorada, além disso, estas 
necessidades podem mudar ao longo do trabalho, 
ou seja, são instáveis. Devemos pensar também que 
o sistema precisará evoluir para continuar sendo útil 
para a empresa, portanto o domínio do problema 
não está apenas nos requisitos atuais levantados, 
mas também nas possibilidades de necessidades 
futuras que devem ser percebidas pela equipe de 
análise.
• 
– os desenvolvedores devem 
criar a ilusão da simplicidade, ou seja, por mais 
complexo que o software possa ser na sua arquitetura 
interna e nos seus procedimentos, para o usuário 
deve parecer sempre uma coisa simples e de 
fácil utilização. Outro ponto importante é que 
o tamanho do software não está ligado á sua 
qualidade, programas grandes demais não são 
ou mais complexos que outros menores, nem 
mesmo podemos dizer que programas menores 
são melhores porque foram melhor estruturados, 
tudo vai depender de como o software é construído 
e com que desenvoltura ele resolve os problemas 
do usuário. Outro problema importante que precisa 
ser gerenciado é a comunicação entre os integrantes 
da equipe de desenvolvimento, para evitar 
• 
– Um 
mesmo problema pode ser resolvido de várias 
de interesses entre integrantes da equipe de 
desenvolvimento, que podem querer, cada um dos 
integrantes, defender sua alternativa de solução 
como sendo a melhor entre todas as outras. 
Algumas vezes o desenvolvedor pode acabar 
143
Análise de Sistemas II 8
perdendo tempo tentando “reinventar a roda”, ou 
seja, criar coisas que já existem, ou ainda não querer 
aproveitar recursos já disponíveis, seria como se um 
construtor quisesse fabricar os tijolos que irá usar 
na sua obra, ou plantar as árvores para ter a madeira 
que precisará durante a construção. A falta de 
padronização dos procedimentos é outro problema 
que é comum na indústria de software
muito o trabalho em equipe.
• 
um sistema deverá se comportar em determinadas 
situações é uma tarefa que exige um grande esforço 
de equipe e uma grande percepção das necessidades 
e limitações do usuário.
software
Podemos dizer que sistemas complexos são aqueles que 
possuem algumas das características fundamentais, como:
• possuem um longo ciclo de vida;
• 
todos os detalhes do projeto;
• a complexidade pode ultrapassar a capacidade da 
percepção humana, o que vai exigir um esforço em 
conjunto para resolver determinados problemas;
• em alguns sistemas, a complexidade estará sempre 
presente e pode apenas ser gerenciada e não 
superada, mesmo que este gerenciamento deva ser 
Serão descritos a seguir alguns princípios para administrar 
a complexidade, ou seja, levar ordem ao caos.
Figura 1.1. A complexidade do software
Fonte: Booch (2005)
2.1
trazendo ordem ao caos
Administrar a complexidade dos sistemas é tarefa 
essencial, pois sem ela os sistemas acabam por não atender 
todas as necessidades dos usuários, ou podem atender de 
forma errada, além disso, os prazos não serão cumpridos e o 
de construção do sistema.
2.1.1
Dividir um problema maior em partes menores é 
importante para facilitar o entendimento das necessidades, 
pois é muito mais tranquilo administrar problemas menores 
um sistema de software complexo está sendo projetado é 
essencial decompô-lo em partes cada vez menores, cada 
Dessa forma, é possível satisfazer a uma restrição real que 
existe sobre a capacidade de cognição humana: para entender 
qualquer nível de um sistema, é necessário compreender 
somente um pequeno número de partes de uma vez (ao invés 
inteligente endereça diretamente a complexidade inerente do 
software através de uma divisão forçada do espaço do estado 
do sistema” (BOOCH, 2005, s/p).
Para entender melhor o problema como um todo, é 
preciso que se tenha inicialmente uma visão geral sobre 
ele, sem se preocupar inicialmente com os detalhes 
procedimentais que possam aparecer no decorrer do processo 
de desenvolvimento. A partir daí, esse problema “grande” 
deverá ser subdividido em problemas menores e, aí sim, a cada 
subdivisão, os detalhes irão aparecer naturalmente, mas aí já 
será mais fácil administrar a complexidade desses problemas, 
uma vez que eles irão aparecer em porções menores.
A complexidade é organizada como uma hierarquia, 
um sistema complexo é composto por subsistemas inter-
relacionados que, por sua vez, têm seus próprios subsistemas 
e assim por diante, até que se chegue a componentes 
quais serão os componentes mais elementares de um sistema 
e quais são os mais primitivos será uma decisão arbitrária 
da equipe de análise e depende basicamente da visão que o 
observador do sistema terá.
pois descobrir as abstrações e mecanismos comuns num sistema 
Um dos maiores problemas para os desenvolvedores 
de software é conseguir transformar necessidades de 
gerenciamento de informação em soluções de software. Os 
experimentos de Miller, citados por Booch (2005) relatam que 
ele concluiu que “um indivíduo pode compreender somente 
sete (mais ou menos duas) partes de informação ao mesmo 
tempo. Este número aparece como sendo independente do 
conteúdo da informação”. Miller observou que “o espaço do 
julgamento absoluto e o espaço de memória imediata impõem 
várias limitações na quantidade de informação que as pessoas 
estão aptas a receber, processar e relembrar.
Através da organização dos estímulos de entrada 
simultaneamente em várias direções e sucessivamente 
144
Highlight
9
dentro de uma sequência de partes, o ser humano é capaz de 
interromper esse engarrafamento (entrave) de informação.” 
perceber até sete níveis de informação sem se perder, com 
uma variação de mais ou menos duas. A partir deste número 
da informação. Em termos contemporâneos, este processo é 
chamado .
Uma forma de facilitar o entendimento de sistemas 
complexos é descobrir abstrações, mecanismos comuns e 
elementos já conhecidos em outras situações.
CURIOSIDADE
Um motorista consegue dirigir um novo modelo de carro 
Wulf, citado por Booch, (2005) descreve que:
os humanos desenvolveram uma técnica 
poderosa e excepcional para lidar com a 
complexidade. Eles a abstraem. Uma vez 
que o ser humano é inábil para dominar um 
objeto complexo por total, ele escolhe ignorar 
os detalhes não essenciais, lidando, no lugar, 
com um modelo de objetos idealizado e 
generalizado” (BOOCH, 2005, s/p).
Em cada nível de abstração, os elementos cooperam 
entre si para desempenharem suas funcionalidades por meio 
de uma interface e oferecem serviços para os níveis mais altos.
3
O benefício principal do desenvolvimento Orientado a 
Objetos não é reduzir o tempo de desenvolvimento. Ele pode 
levar mais tempo que o desenvolvimento convencional 
porque na Orientação a Objetos se pretende que haja a 
promoção da reutilização futura e a redução dos erros 
posteriores e futuras manutenções. O tempo transcorrido até 
que o código esteja completo pela primeira vez é possivelmente 
ou em alguns casos ligeiramente maior.
O benefício da Orientação a Objetos consiste em que as 
interações subsequentes são mais rápidas e mais fáceis do que 
empregando um método convencional, porque as revisões estão 
mais localizadas. A prática mostra que é necessário um menor 
número de interações porque um maior número de problemas 
são descobertos e corrigidos durante o desenvolvimento.
As técnicas de Orientação a Objeto pressupõem que 
se possam criar sistemas compondo-se objetos previamente 
criados e, consequentemente, reduzindo-se o tempo 
produtividade e qualidade.
Durante as seções anteriores comentamos sobre algumas 
das vantagens do uso datecnologia de orientação a objetos 
para desenvolvimento de sistemas, vamos agora destacar 
detalhes de alguns dos principais benefícios:
• 
desenvolvimento estruturado, em que se elabora um 
projeto e depois se faz os programas, podemos ter 
seus objetivos depois de implementado. No 
desenvolvimento OOP (Object Oriented Project, ou 
Projeto Orientado a Objetos), devido ao fato deste 
ser feito de maneira quase que interativa com o 
A pouca quantidade de código programável 
projeto.
• 
reage aos erros imprevistos como: uma falha na 
impressora, ou um disco cheio. Tanto maior for a 
potencialidade, maior a capacidade do programa 
em causar o menor “estrago” possível aos dados e 
evitar uma saída drástica do sistema.
• - Dizemos que quanto maior for a 
extensibilidade do software, maior será sua capacidade 
analistas.
• - A capacidade de se otimizar a 
produtividade do programador depende diretamente 
da maneira como o software disponibiliza a 
reutilização do código (programa fonte) gerado. 
já reutiliza código anteriormente gerado, porém a 
perfeita reutilização consiste na utilização completa 
de um código gerado para algum sistema sem 
qualquer outra adaptação prévia.
• - A aplicação dos 
conceitos da orientação a objetos na análise de 
sistemas permitirá modelar a empresa ou as áreas 
da aplicação de uma forma mais natural, visto que 
os recursos a serem aplicados retratam com mais 
facilidade o mundo real. A capacidade de retratar 
o universo pesquisado é moldado em diagramas 
mundo real. A própria transição entre etapas na 
construção do software, aplicando- se o paradigma 
os mesmos conceitos e linguagem.
• 
de métodos reduz a complexidade na construção 
do código dos programas. Isso traz simplicidade 
software.
Devemos lembrar que os benefícios da orientação a 
objetos serão maiores e mais evidentes se ela for adotada do 
software.
Na prática, podemos dizer que a maior vantagem 
da orientação a objetos é a facilidade de manutenção do 
sistema (quando OO é aplicado corretamente). Mas, tem 
como desvantagem um maior tempo para desenvolvimento. 
Levantar um sistema orientado a objetos dá um pouco mais de 
145
Highlight
Highlight
Análise de Sistemas II 10
trabalho que um sistema procedural, pois temos que planejar 
o sistema pensando nos objetos e suas funções e não apenas 
nas funções que o sistema irá executar.
A orientação a objetos também possui algumas desvantagens 
• maior tempo necessário para o desenvolvimento do 
projeto do sistema;
• complexidade no aprendizado para 
desenvolvedores de linguagens estruturadas – 
com o desenvolvimento estruturado sentem maior 
orientação a objetos;
• maior uso de memória, por exemplo para aplicações 
móveis em algumas linguagens como o JavaME;
• maior esforço na modelagem de um sistema OO do 
que um sistema estruturado, porém oferece menor 
• dependência de funcionalidades já implementadas 
em superclasses no caso da herança, implementações 
espalhadas em classes diferentes (veremos o 
CURIOSIDADE
Retomando a aula
A orientação a objetos surgiu com o intuito de tornar 
possível criar sistemas mais complexos de forma mais rápida 
e que pudessem receber manutenção de forma que não fosse 
necessário fazer muitas mudanças na estrutura do projeto do 
sistema.
Apesar da maior complexidade nos trabalhos iniciais, a 
orientação a objetos permite que sistemas mais complexos 
possam ser desenvolvidos mais rapidamente.
2 – A complexidade do domínio do problema
A complexidade dos sistemas precisa ser administrada, 
mas isto não é uma tarefa simples, pois envolve uma série 
de problemas relacionados a: complexidade do domínio do 
caracterização do comportamento de sistemas.
Uma das formas de gerenciar a complexidade é a 
decomposição, que permite dividir problemas grandes em 
partes menores, tornando-os problemas menores e mais 
facilmente gerenciáveis.
Os principais benefícios da orientação a objetos são: 
exatidão, potencialidade, extensibilidade, reutilização, 
mais simples.
No entanto, vamos observar que foram citadas várias 
outras vantagens, entre elas, a maior facilidade quando se 
software.
Podemos apontar outros benefícios importantes como 
o ciclo de vida mais longo para os sistemas, desenvolvimento 
mais acelerado sem que isto implique em perda da qualidade, 
possibilidade de se construir sistema muito mais complexos 
pela incorporação de funções prontas (reutilização), menor 
custo para desenvolvimento e manutenção de sistemas.
Vale a pena
PRESSMAN, Roger. Engenharia de Software. São Paulo-
SP: Makron Books, 2006. SOMMERVILLE, I. Engenharia 
de Software. 8ª Edição. Addison Wesley, 2007. BOOCH, 
Grady, JACOBSON, Ivar; RUMBAUGH, James. UML – 
guia do usuário. Elsevier, Rio de Janeiro. 2005.
pena ler
• YOUTUBE. Conceitos básicos de orientação a 
objetos. Disponível em: <http://www.youtube.com/
pena assistir
Minhas anotações
146
2ºAula
Características de objetos
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de: 
• entender as definições dos termos mais utilizados na orientação a objetos;
• compreender as dificuldades de se observar um problema e transformar em uma solução;
• entender os benefícios da orientação a objetos.
Prezados(as) alunos(as),
Nesta segunda aula, vamos conhecer as definições dos 
Se ao final desta aula tiverem dúvidas, vocês poderão saná-
las através das ferramentas da plataforma de ensino.
Conto com a sua participação, aproveite para ler e refletir 
os objetivos de aprendizagem, afinal da sua participação 
dependerá seu aprendizado.
Bom Trabalho!
Bons estudos!
147
Análise de Sistemas II 12
Seções de estudo
1 – Objetos
2 – Classes
3 – Características da orientação a objetos
1
 
CONCEITO
Grady Booch (1955-) é um informático 
americano. Seu livro “Software 
Engineering with Ada” lançou as raízes 
do projeto orientado a objetos. Esse 
trabalho evoluiu para uma metodologia 
de desenvolvimento de sistemas 
orientados a objetos publicada em seu 
livro “Object- Oriented Analysis and 
Design with Applications”. Em 1996, 
em parceria com Ivar Jacobson e James 
Rumbaugh, lançou uma linguagem 
que se tornou um padrão da indústria, a 
UML. (Wikipedia, 2013)
Um objeto pode 
entidade do mundo real 
que tem uma identidade. 
citados por Booch (2005, 
p. 91) oferecem a seguinte 
No mundo real um objeto limita-se a existir, mas, no 
que se refere ao mundo da tecnologia da informação, cada 
qual pode ser 
referenciado inequivocamente (RUMBAUGH et al., 2005).
Os objetos podem representar uma entidade concreta 
(o parágrafo de um documento, a janela num computador, 
um aluno deste curso, o carro do aluno, um arquivo do 
computador) ou uma entidade conceitual (uma regra num 
sistema ou uma estratégia de jogo).
Figura 2.1. Características do objeto.
Fonte: Booch (2005)
A estrutura de um objeto é representada por um 
conjunto de atributos. O comportamento do objeto é 
representado por um conjunto de operações que podem ser 
executadas sobre o objeto. Objetos com a mesma estrutura e 
o mesmo comportamento são agrupados em uma estrutura 
que chamamos de .
Em outras palavras, um é algo distinguível que 
contém um (atributos ou propriedades) e possui um 
. O comportamento é como um objeto 
age e reage, em termos de mudanças em seu estado e troca de 
mensagens. Uma é alguma ação que um objeto 
executa sobre outro para obter uma reação. Cada objeto tem 
uma e é distinguível de outro, mesmo que seus 
atributos sejam idênticos. Instâncias de classes são chamadas 
de objetos.
 do 
mudanças do estado do objeto interagindo com o seu mundo 
externo, através das operações realizadas pelo objeto.
A comunicação entre objetos se dá por meio de troca de 
mensagens. Assim, para acessar a estrutura de dados de outro 
objeto, um objeto deve enviar uma mensagem para aquele 
outro objeto. Uma mensagem consiste do nome de uma 
operação e dos argumentos requeridos para que a operação 
seja executada.
O comportamento de um objeto representa como 
este objeto reage, em termosde suas mudanças de estado, 
mensagens a que um objeto pode responder representa seu 
comportamento.
A troca de mensagens é uma parte da equação
comportamento de um objeto, uma vez que o estado de um 
objeto afeta seu comportamento. Na maioria das linguagens 
de programação orientadas a objetos, as operações que os 
clientes podem executar são tipicamente declaradas como 
métodos, que fazem parte da declaração das classes (veremos 
o conceito de classe mais adiante). O estado de um objeto 
representa os resultados cumulativos de seu comportamento 
(BOOCH, 2005).
Um objeto é, pois, uma entidade que tem seus atributos 
representados por tipos de dados e seu comportamento 
representado por operações.
A criação de um objeto é chamada de . 
Cada instância tem seus próprios valores para seus atributos, 
mas compartilha o nome e os comportamentos dos atributos 
com as outras instâncias da mesma classe.
A orientação a objetos possui alguns conceitos 
fundamentais que norteiam todas as formulações e facilitam 
a sua aplicação em software. As seções que seguem apresentam 
outra
sã s e 
metodologias baseadas em objetos.
2 - Classes
Uma e é o agrupamento de objetos que possuem 
características idênticas, ou seja, com a mesma estrutura de 
atributos ou propriedades) e comportamento 
(operações).
148
Highlight
13
Os atributos são “variáveis” ou campos que indicam 
possíveis informações armazenadas por um objeto de uma 
classe. Por exemplo: nome, cpf, endereço.
Métodos são funcionalidades da classe. Exemplo: 
calcular saldo, atualizar estoque, lançar nota.
O conceito de classe é bastante semelhante ao conceito 
de tipo de dados de outras linguagens tradicionais. Da mesma 
o um 
conjunto de valores numéricos que possuem casas decimais, 
ou strings como um conjunto de valores alfanuméricos, 
chamados de cadeia de caracteres,
o conceito de uma classe.
As classes são um conjunto de “coisas”. Posteriormente, 
veremos que essas coisas são chamadas de objetos que 
apresentam características semelhantes. Numa classe, além 
seu “comportamento”, que é expresso através de funções e 
procedimentos.
Uma classe é uma abstração que descreve as propriedades 
importantes para uma aplicação e não leva em conta as outras. 
Exemplos de classes: Parágrafo, Janela, Aluno, Carro. Cada 
de objetos 
individuais. Cada objeto é uma de uma classe. 
Assim, cada instância de classe tem seus próprios valores para 
cada um dos atributos da classe, mas compartilham os nomes 
dos atributos e métodos com as outras instâncias da classe.
Pensemos na classe CARRO. Essa classe define os 
comportamentos e atributos de um carro, e existem atributos 
que serão comuns a todos os carros. As rodas e o motor são 
atributos comuns a qualquer carro. Já uma Ferrari possui 
atributos que são específicos dela, o valor por exemplo.
Figura 2.2. Classe de objetos – Classe Carro.
Fonte: Booch (2005)
Uma classe é um conjunto de objetos do mesmo tipo. 
Todos os objetos de uma classe têm a mesma característica e 
realizam as mesmas funções.
Fazendo uma comparação entre o Modelo Entidades 
Relacionamentos (MER ou DER) e o Modelo Orientado a 
objetos (OO), podemos dizer que:
MER....................................................................................OO
Entidades.......................................................................Classes
Ocorrência.....................................................................Objeto
Atributo.......................................................................Atributo
3
objetos
A Orientação a Objetos se caracteriza principalmente 
Usando como exemplo um sistema de cadastramento 
de veículos, teríamos, entre outras, a classe VEÍCULOS que 
conteria um conjunto de registros ou ocorrência, um para 
cada veículo cadastrado. Cada um destes registros representa 
um OBJETO para a OOA (Object Oriented Analysis - Análise 
Orientada a Objetos).
Se aprofundássemos a nossa análise, descobriríamos 
que existem tipos diferentes de veículos tais como: veículo-
caminhão, veículo-de-passeio e veículo- ônibus. Estaríamos 
diante das subclasses da classe veículo. É interessante notar 
que,
a cada uma das subclasses, também existem atributos e 
comportamentos comuns entre elas, isto é, as subclasses 
herdam características das classes hierarquicamente 
superiores. Este aspecto – HERANÇA – é profundamente 
explorado e é uma das razões de ser das tecnologias orientadas 
a objeto.
Pelo que foi exposto até agora parece não haver muita 
diferença entre a Análise Orientada a Objetos e a Modelagem 
Entidade-Relacionamento, mas essa diferença existe e é 
fundamental.
Na OOA, guardamos nas classes de objeto mais que 
simplesmente os dados ou atributos; guardamos também, os 
serviços exclusivos sobre esses dados.
No exemplo da classe VEÍCULOS, teríamos os atributos 
Placa, Proprietário, Data-Compra, Potência, Marca, Cor 
etc. E os serviços Incluir- Veículo, Calcular-idade-Veículo, 
Deletar-Veículo, entre outros. Para a subclasse VEÍCULOS 
– CAMINHÃO, além do que foi herdado, teríamos os 
atributos Capacidade-de-cargas e Distância-entre-Eixos, e 
mais os serviços de Calcular- Tempo-Vida-Útil e Reservar-
Espaço-para-frete.
Na OOA, só é possível incluir, alterar, acessar e 
excluir objetos de uma classe através de um acionamento 
de seus serviços exclusivos. Trata-se do conceito de 
ENCAPSULAMENTO, que dá a uma classe de objetos, 
características de “caixa-preta”. Para acionar estes serviços, o 
usuário ou outro objeto deve emitir uma mensagem para o 
objeto receptor, indicando qual função deve ser executada e 
quais os argumentos servirão de parâmetros para essa função. 
Nas linguagens tradicionais, não orientadas a objetos, seria 
algo parecido com acionar uma sub- rotina chamando um 
procedimento ou função.
3.1 - Abstração
A abstração consiste em enfocar os aspectos mais 
importantes de um objeto (visão externa; o que é e o que ele 
faz), ignorando suas características internas (visão interna; 
como ele deve ser implementado).
149
Análise de Sistemas II 14
Abstração é uma das formas fundamentais do ser humano 
lidar com complexidade. Shaw, citado por Booch (2005, p. 
sistema que dá ênfase a alguns dos 
detalhes ou propriedades do sistema enquanto suprimem 
outros. Uma boa abstração é aquela que enfatiza detalhes que 
que são, para o momento, imateriais ou desviadores do foco.”
Uma abstração denota as características 
essenciais de um objeto que o distinguem 
de todos os outros tipos de objetos e 
desta maneira, fornece limites conceituais 
do observador. A abstração enfoca a visão 
exterior de um objeto e serve para separar o 
comportamento essencial do objeto de sua 
implementação. (BOOCH, 2005)
Figura 2.3. A abstração enfoca as características essenciais de um objeto, 
relativas à visão do observador. Fonte: Booch (2005)
a 
abstração diferente do objeto focado, enquanto a vovó vê o 
gato como uma bola de pelos, a veterinária vê sua anatomia. 
Cada uma vê da forma do seu interesse.
Abstração é o princípio de ignorar os 
aspectos de um assunto não relevante para o 
propósito em questão, tornando possível uma 
concentração maior nos assuntos principais. 
A abstração consiste então na seleção que 
um analista faz de alguns aspectos, ignorando 
outros (COA
Figura 2.4. Transformação do problema em modelo de sistema, através da 
abstração Fonte: http://www.cpdee.ufmg.br
e estamos 
considerando é complexo; em vez de tentar compreender o 
todo, selecionamos parte dele. Sabemos que existem detalhes 
adicionais; simplesmente optamos por não considerá-los 
neste momento.
Ao aplicar a abstração de dados, um analist
atributos e os serviços que manipulam exclusivamente esses 
atributos. O único jeito de chegar até os atributos é através de 
um serviço. Os atributos e seus serviços podem ser tratados 
como um todo intrínseco (COAD OURDON, 1992).
3.2
s 
abstrações. A estrutura do objeto é importante uma vez que 
ilustra como diferentes objetos colaboram uns com os outros 
através de padrões de interação, chamadosmecanismos. A 
estrutura de classes é igualmente importante, uma vez que 
destaca a estrutura comum e comportamento dentro de um 
s 
dentro de um sistema de software complexo não é uma tarefa 
fácil, uma vez que requer a descoberta de padrões entre vários 
objetos. No entanto, a partir do momento em que essas 
estruturas estiverem mapeadas, a estrutura do sistema e seu 
entendimento se tornam bastante
3.3 - Encapsulamento
O encapsulamento consiste em ocultar ao usuário o 
funcionamento interno de uma classe. A principal vantagem 
do encapsulamento é permitir que os programadores mudem 
a implementação de uma classe sem que precisem alterar 
algum código gerado. O encapsulamento é o empacotamento 
de dados (atributos) e de operações sobre estes (métodos), 
também conhecido como a capacidade de “esconder 
informação” de detalhes de implementação (abstração).
No caso da orientação a objetos, os dados não podem ser 
acessados diretamente, mas através de mensagens enviadas 
para as operações. O uso de encapsulamento permite que a 
implementação d sem afetar 
as aplicações que usam este objeto ou a forma de acessá-lo.
Figura 2.5. O encapsulamento esconde os detalhes da implementação de um 
objeto. Fonte: Booch (2005)
No encapsulamento, os usuários têm conhecimento 
apenas das operações que podem ser realizadas e precisam 
estar cientes apenas do que as operações realizam e não como 
elas estão implementadas (BOOCH, 2005).
150
Highlight
Highlight
15
O encapsulamento é mais frequentemente alcançado 
através do ocultamento das informações, que é o processo 
de esconder os detalhes de um objeto que não contribuem 
para suas características essenciais; tipicamente a estrutura de 
um objeto é escondida, bem como a implementação de seus 
métodos.
Por exemplo, para se cadastrar uma localização turística 
e suas atrações através de um sistema desenvolvido para 
Web, uma pessoa não precisa conhecer sua estrutura interna 
(tabelas, atributos, classes) nem tão pouco como se dá a 
implementação de seus métodos. Sabe-se que é necessário 
acessar a página via Internet, mas não é preciso saber como 
esta operação é implementada (construída). Dessa forma, o 
usuário precisa conhecer apenas a interface (neste caso, as 
telas) que permite a ele executar operações do tipo incluir, 
alterar, excluir ou consultar, e não como essas operações são 
de fato implementadas.
3.4
A Herança é uma das principais características da 
orientação ao objetos, pois permite o reaproveitamento de 
métodos e atributos, diminuindo o tempo de desenvolvimento 
do sistema e facilita as futuras manutenções.
A herança consiste no compartilhamento de atributos e 
operações entre as classes baseado num relacionamento de 
hierarquia. Permite que uma nova classe seja descrita a partir 
de outra classe já existente (reutilização). A subclasse herda 
as características e o comportamento da superclasse, além de 
poder adicionar novas características e comportamentos aos 
herdados; por exemplo, a classe herda da classe 
algumas propriedades e operações, pois a classe 
automóvel pertenc
A Herança é um mecanismo onde temos uma classe 
 outra, adicionando todas as funcionalidades 
e propriedades daquela primeira (chamada de superclasse) e 
podendo adicionar outras funcionalidades e propriedades para 
a classe criada a partir da primeira (chamada de subclasse). 
Sua utilização força que a subclasse inclua todos os métodos e 
propriedades de sua superclasse;
A utilização da herança representa mais que uma 
simples economia na criaçã
o um comportamento (método) é alterado, 
todas as classes que descendem dela terão acesso aos métodos 
atualizados, sem a necessidade de serem refeitos.
Uma (como 
no caso do exemplo anterior) e posteriormente
termos de subclasses e assim sucessivamente. Podemos dizer 
com isso que a classe automóvel é uma subclasse da classe 
veículo e que a classe veículo é uma superclasse.
O conceito de herança para o paradigma da orientação 
a objetos é bastante semelhante ao conceito de herança que 
conhecemos no nosso dia a dia. Cada um de nós herdou 
características existentes em nossos antecessores, sejam elas 
características físicas ou de comportamento. Da mesma 
forma, as classes e, por consequência, seus objetos, também 
têm a possibilidade de herdar características e métodos 
 para seus antecessores.
Figura 2.6. Exemplo de Herança. Fonte: Microsoft.com
Esta relação entre classes é uma das grandes vantagens 
de sistemas orientados a objetos por causa da redução de 
trabalho resultante durante o projeto e a programação destes.
Existem dois tipos de herança:
• herança simples, onde uma subclasse tem somente 
uma superclasse, ou seja, uma subclasse herda 
apenas as características de uma superclasse;
• herança múltipla, na qual uma subclasse herda 
simultaneamente de várias superclasses.
3.5 - 
o 
pode se comportar de forma diferente em classes diferentes. 
que é diferente para as instâncias de classe círculo e polígono 
ou a operação diferente para janela de computador e 
para uma peça de um jogo de xadrez. Uma operação que tem 
mais de um método que a implementa é dita , ou 
seja, pode possuir várias formas. Uma mesma função pode 
apresentar diferentes “comportamentos”, daí o nome do 
O usuário não precisa saber quantas implementações 
existem para uma operação, ou explicitar qual método deve 
ser utilizado: a linguagem de programação deve ser capaz de 
selecionar o método correto a partir do nome da operação, 
classe do objeto e argumentos (parâmetros) para a operação. 
Assim, novas classes podem ser adicionadas sem a necessidade 
á existente, pois cada classe apenas 
os seus métodos e atributos.
Retomando a aula
Um objeto é qualquer “coisa”, lugar, relatório, evento, 
tela ou conceito que se aplique ao sistema. Todo objeto 
pertence a uma classe e tem seus próprios atributos. Os 
151
Análise de Sistemas II 16
atributos dos objetos são mutáveis e podem receber valores 
diferentes conforme as características do objeto.
Uma classe representa um conjunto de objetos. Estes, 
apesar de possuírem atributos iguais, têm valores diferentes 
em seus atributos. Uma classe é um modelo e todos os seus 
objetos têm os mesmos atributos, embora sejam atributos que 
podem ter valores diferentes, e os mesmos métodos.
Na abstração, nós isolamos os objetos que queremos 
representar do ambiente complexo em que se situam, e nesses 
objetos representamos someta as características que são 
relevantes para o problema em questão.
O encapsulamento é um dos pilares da orientação a 
objetos, sua característica é ocultar partes da implementação, 
e assim construir softwares que atinjam suas funcionalidades e 
escondam os detalhes de implementação do mundo exterior. 
Os objetos encapsulados funcionam como uma caixa preta, 
sabe- se da sua interface externa, mas não precisa se preocupar 
com o que acontece dentro dela.
A herança é uma das principais características das 
linguagens de programação orientadas a objetos, permite 
o reaproveitamento de métodos e atributos diminuindo o 
tempo de desenvolvimento, ainda reduz as linhas de código, 
desta forma facilita as manutenções futuras.
das classes, este trabalha com a redeclararão de métodos 
herdados, ou seja, os métodos têm a mesma assinatura (têm 
o mesmo nome), mas a forma de implementação utilizada 
diferem o da superclasse.
Vale a pena
PRESSMAN, Roger. Engenharia de Software. São Paulo-
SP: Makron Books, 2006. SOMMERVILLE, I. Engenharia 
de Software. 8ª Edição. Addison Wesley, 2007. BOOCH, 
Grady, JACOBSON, Ivar; RUMBAUGH, James. UML – 
guia do usuário. Elsevier, Rio de Janeiro. 2005.
pena ler
• YouTube. Vídeo aula de orientação a objetos. Disponível em: 
<http://www.youtube.com/watch?v=t9Cd7EWL0eo . 
Acesso em 01/12/2013
pena assistir
Minhas anotações
152
3ºAula
Técnicas orientadas a Objetos
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de: 
• entender os objetivos das técnicas de modelagem orientadas a objetos;
• conhecer as principaistécnicas criadas;
• comparar as técnicas;
• observar pontos positivos e negativos em cada uma delas.
Prezados (as) alunos (as),
Continuando nosso aprendizado, na aula 3 vamos 
conhecer algumas das mais importantes técnicas utilizadas na 
orientação a objetos.
Se ao final desta aula tiverem dúvidas, vocês poderão saná-
las através das ferramentas da plataforma de ensino.
Conto com a sua participação, aproveite para ler e refletir 
os objetivos de aprendizagem, afinal, da sua participação 
dependerá seu aprendizado.
Bom Trabalho!
Bons estudos!
153
Análise de Sistemas II 18
Seções de estudo
1 – Introdução
2 – Principais Técnicas
3 – Discussão sobre as metodologias
1 - Introdução
O desenvolvimento orientado a objetos diz respeito aos 
procedimentos de concepção de sistemas a partir dos 
conceitos básicos anteriores e envolve a utilização de 
e implementação.
A metodologia consiste na construção de um modelo 
de um domínio de aplicação e na posterior adição a este 
dos detalhes de implementação durante o projeto de um 
sistema. Existem atualmente várias Metodologias Orientadas 
a Objetos, mas apenas algumas serão descritas a seguir, não de 
forma exaustiva, mas sim apresentando uma breve descrição 
dos conceitos, processos e técnicas utilizadas em cada uma 
delas, de forma a ser possível encontrar semelhanças e 
diferenças.
Existem várias técnicas, ou métodos, para o 
desenvolvimento orientado a objetos. Estas técnicas se 
tornaram populares nos anos 90. Suas principais características 
serão citadas a seguir.
2
2.1
O método de Grady Booch para desenvolvimento 
orientado a objetos é dividido em 3 fases: análise de requisitos, 
análise de domínios e projeto, com ênfase maior no projeto. 
Este método provê os seguintes diagramas: de classes, de 
transição de estados, de objetos, temporais, de módulos e de 
processos.
O método Booch está disponível em muitas versões. 
de um número de visões, em que cada visão é descrita por 
um número de modelos e diagramas. Ele traz uma simbologia 
complexa de ser desenhada a mão, contém também o processo 
pelo qual os sistemas são analisados por macro e micro visões.
O método descrito por Booch (2005) é constituído, 
basicamente, pelas fases de , 
do domínio e . Tem como providenciar uma 
notação e um processo de desenvolvimento, dando especial 
atenção ao aspecto da comunicação entre a fase de análise e 
desenho de um sistema de software Orientado a Objetos. Este 
método tem um caráter amplo que, endereçando os aspectos 
das ferramentas de análise e desenho Orientado a Objetos, 
inclui modelagem dos objetos, modelagem da análise, desenho 
da aplicação, desenho da implementação e ciclo de vida dos 
processos.
Booch propõe diferentes visões para descrever os 
sistemas. O modelo lógico, isto é, o domínio do problema, 
é representado na estrutura de classes e objetos. O diagrama 
de objetos mostra como os objetos interagem uns com os 
outros, enquanto que os diagramas de classe são de índole 
mais estática. Assim, os diagramas de objetos descrevem 
o comportamento dinâmico do sistema. O conceito de 
subsistema, neste método, é entendido como um diagrama 
de módulos, tendo um paralelismo, em termos do papel que 
representa, com os diagramas de categoria e de classes. Os 
subsistemas representam conjuntos de módulos relacionados 
de uma forma lógica.
Um dos grandes pressupostos do método de Booch 
(1996) é criar um modelo do sistema, passível de ser 
implementado. Os vários conceitos deste método estão 
distribuídos, com diferentes níveis de abstração, nas três fases 
do processo, indicados a seguir:
 - produz dois tipos de 
das funções principais do sistema. Devem ser 
inputs e outputs do sistema, ou uma lista 
de referências para planos de ação, procedimentos, 
mecanismos chave que o sistema deve providenciar, 
incluindo o estado de entrada, saída e as mudanças 
de estado esperadas. Estes mecanismos chave 
servem para validar o domínio do modelo, descobrir 
operações, bem como testar determinados casos.
 - - esta fase inclui:
• Diagramas de classe abstratos;
• 
• Herança;
• Diagramas de cenários dos objetos;
• 
 -
análise, adicionando as estruturas e comportamentos 
necessários para implementação do domínio 
em estudo. O modelo iniciado durante a análise 
serve como base para a construção do modelo de 
desenho. São adicionadas as seguintes contribuições 
ao modelo:
• descrições arquiteturais;
• descrições do protótipo;
• diagramas de categoria;
• diagramas de classe;
• diagramas de objeto;
• 
2.2
Esta técnica utiliza um modelo único para todas as fases, 
OOA – Object Oriented Analysis (Análise Orientada a Objeto), 
OOD - Object Oriented Design (Projeto Orientado a Objeto) e 
OOP – Object Oriented Programming (Implementação Orientada 
a Objeto), o que torna mais simples e compreensível o 
154
19
desenvolvimento.
Este método é tido como adequado para o 
desenvolvimento de sistemas segundo o paradigma dos 
entre as fases de análise, desenho e implementação, bem 
questão.
São encontrados 4 grandes benefícios na utilização deste 
método em relação aos métodos de análise tradicionais:
• melhoramento da Interação entre o analista e o 
cliente do sistema;
• aumento da consistência interna entre análise, 
• reutilização;
• providencia uma representação consistente entre as 
diversas fases;
De acordo com Coad/Yourdon, o maior benefício 
da análise OO, resulta da redução da complexidade de um 
determinado problema. Segundo os autores deste método, 
uma aproximação OO consiste de classes, objetos, herança e 
comunicação via mensagens.
O principal objetivo deste método é permitir a 
práticas e estratégias para a prossecução do mesmo. Trata-
se de um método de desenvolvimento orientado ao objeto 
com um domínio de aplicação bastante alargado, incidindo 
na manipulação de classes e objetos respeitantes ao domínio 
do problema, no interface homem-máquina e na gestão das 
tarefas inerentes ao processo de desenvolvimento.
Disponibiliza uma extensão que abarca o conceito de 
reengenharia, de forma a ser possível desenvolver um modelo 
com base no redesenho dos processos organizacionais.
Este método utiliza uma arquitetura de desenvolvimento 
constituída por quatro componentes principais:
• interação humana;
• domínio do problema;
• gestão de tarefas de tempo real;
• gestão dos dados;
2.3
Método criado por Sally Shlaer e Stephen Mellor em 
1988, que fornece um conjunto integrado de modelos de 
análise e que depois são traduzidos (Recursive Design) durante 
o projeto.
informação consiste em uma organização e uma representação 
conceitualização do domínio de um problema.
A técnica propõe uma forma de pensar de modo 
abstrato, problemas a resolver empregando conceitos do 
mundo real ao invés de conceitos de computadores. Trata-
para o desenvolvimento de software a uma escala industrial. É 
baseado no paradigma dos objetos, tendo sido desenvolvido 
no ambiente de projetos do mundo real. Estes projetos 
incluíam manufatura e aplicações de controle de processos, 
operações bancárias, telecomunicações, e aplicações de defesa 
governamental.
de software visualizando o problema sem recorrer de forma 
de modelos de análise orientados ao objeto, que podem ser 
Recursive Design (RD), que 
produz o desenho do sistema através da translação dos 
modelos de análise.
O Modelo de Informação, baseado no modelo relacional 
dos dados, se fundamenta em pensar acerca de problemas 
a resolver empregando modelos que estão organizados, 
informações numa estrutura formal. “Coisas”, ou exemplos 
como objetos, as características destas instâncias são resumidas 
como atributos 
são resumidas como relacionamentos. Os modelos de estado 
de dados mostram a sequência, podendo cada processo ser 
Este processo de sumarização requer que cada 
situação esteja sujeita e conforme as políticas ou as normas 
problema.
As regras e a formalidade permitem que os modelos 
sejam matematicamente transformados noutros tipos de 
dados pode ser transformada numa lista ligada,árvore, ou um 
conjunto de listas baseado em classes equivalentes.
O processo de construção dos modelos de análise OO é 
no modelo de informação de objetos, sendo depois descrito 
Em resumo, este método apresenta os seguintes 
benefícios:
• 
funcional do sistema, na fase de análise;
• aproximação integrada - O método providencia uma 
cobertura extensiva ao ciclo de vida com transições 
utilizando o Recursive Design;
• reutilização - Sistematiza e suporta a reutilização 
de todos os domínios, pois estes são tratados em 
transportados para outros sistemas;
• automação - Porque o processo é baseado na 
translação do modelo de análise, é altamente 
susceptível de automação;
2.4 Objectory
Os métodos OOSE e o Objectory foram desenvolvidos 
baseados no mesmo ponto de vista formado por Ivar 
155
Análise de Sistemas II 20
Jacobson. O método OOSE é a visão de Jacobson de um 
método orientado a objetos, já o Objectory é usado para a 
construção de sistemas tão diversos quanto forem.
Ambos os métodos são baseados na utilização de use-
um ator externo. O método Objectory também foi adaptado 
para a engenharia de negócios, na qual é usado para modelar 
e melhorar os processos envolvidos no funcionamento de 
empresas.
Esses métodos permitem, durante a análise, aprofundar o 
entendimento de como o sistema deve ser realmente utilizado. 
centrando-se na compreensão da forma como o sistema 
está e será utilizado antes de ser feita a alteração pretendida. 
Organizando a análise e o desenho através de sequências de 
interações com o utilizador e utilizando cenários, o método 
produz sistemas bastante robustos e amigáveis, adaptando as 
alterações de uma forma suave.
Este método divide o desenvolvimento em processos, 
que, diferentemente das fases de desenvolvimento tradicionais, 
podem ser iterados e sobrepostos. Estes processos produzem 
uma série de modelos interligados, facilitando posteriormente 
a junção dos mesmos através de uma modelagem consistente.
Para Jacobson, todos os sistemas se alteram durante o 
seu ciclo de vida, tendo a manutenção dos mesmos um peso 
muito grande em termos de custos de desenvolvimento. 
Muitos métodos de desenvolvimento adequam-se a novos 
desenvolvimentos, mas tratando as revisões do modelo 
de uma forma pouco adequada. Os desenvolvimentos 
iniciais devem ser vistos como uma atividade importante, 
a base do sistema.
O método é descrito como um conjunto de processos 
que interagem entre si durante o desenvolvimento do projeto, 
através de diferentes modelos. Os processos principais são a 
análise, construção e teste.
dos requisitos. Consiste num modelo orientado ao caso em 
estudo, com descrições da interface com o utilizador, e um 
modelo dos objetos do domínio. Este modelo é baseado 
nos conceitos de actors (atores) e use cases (casos de uso). 
que deve ser executado pelo sistema, respectivamente. 
Os actors podem ser pessoas ou máquinas. Cada um deles 
pode executar um número diferente de tarefas, bem como 
participar na operação do sistema. Executa uma sequência 
de transações em permanente diálogo com o sistema. A uma 
use case. Cada use case é 
use cases corresponde aos requisitos funcionais do sistema a 
construir.
o desenvolvimento do sistema passa para a construção do 
independentemente do ambiente de implementação 
selecionado. Embora possa ser utilizado o modelo de 
base para a implementação, isto não resulta numa estrutura 
robusta.
O modelo de análise representa uma estrutura mais 
estável e fácil manutenção. No processo de análise é criado 
um modelo Conceitual do sistema a construir. Nesta 
fase, os modelos são desenvolvidos de forma a facilitar a 
compreensão do sistema, privilegiando a comunicação com 
o cliente.
No processo de construção, é desenvolvido o sistema 
a partir dos modelos criados anteriormente. A construção 
inclui o desenho e a implementação, resultando um sistema 
completo.
O processo de teste integra os componentes do sistema, 
testando-o e decidindo se está pronto a ser distribuído ao 
cliente.
2.5
Vários são os métodos para modelagem de sistemas 
orientados a objetos (por exemplo, Rumbaugh, Booch, 
Wirfs-Brock, Coad, etc.), entre eles estão os métodos 
Fusion e OMT, porém alguns são muito menos abordados 
pelos autores de livros e artigos do meio. O método OMT 
possui um número maior de material disponível enquanto 
que o Fusion parece ser o método menos popular dentre 
os outros.
Métodos estruturados são limitados na descrição 
do comportamento dinâmico dos sistemas orientados a 
objetos.
A seguir, serão apresentadas algumas características 
importantes dos métodos citados e, em seguida, será 
mostrada uma abordagem comparativa entre esses métodos, 
fazendo uma análise do processo de desenvolvimento 
adotado em ambos os métodos, com uma visão técnica e 
operações.
2.6 Object Modelling 
Technique
É um método desenvolvido pela GE (General Electric) 
onde James Rumbaugh trabalhava e foi proposta por ele em 
1991, baseada na modelagem Entidades/Relacionamentos 
com extensão para o modelo de classes, herança e métodos. 
A técnica foi estendida para focalizar o projeto de banco de 
dados relacional.
Possuidor de uma grande variedade de conceitos, talvez 
o maior de todos, esta metodologia é composta de quatro 
fases: análise, projeto do sistema, projeto dos objetos e 
implementação, como mostra a Figura 3.1.
O método é especialmente voltado para o teste dos 
do sistema. O modelo total do sistema baseado no método 
OMT é composto pela junção dos modelos de objetos, 
funcional e use-cases.
A técnica OMT se distingue pela sua divisão em 4 fases:
2.6.1 - Análise
• 
156
21
• construir o modelo de objetos, com as suas sub-
atividades;
• desenvolver o modelo dinâmico, com as suas sub-
atividades;
• construir o modelo funcional, com as suas sub-
atividades;
• 
subatividades.
2.6.2
• organizar o sistema em subsistemas;
• 
• alocar os subsistemas aos processadores e tarefas;
• encontrar uma estratégia básica para implementar o 
armazenamento dos dados;
• determinar mecanismos para controlar o acesso aos 
recursos globais;
• escolher a natureza da implementação;
• manipular as condições de fronteira.
2.6.3
• obter operações do modelo funcional e dinâmico;
• desenhar os algoritmos que implementam as 
operações;
• otimizar os caminhos de acesso aos dados;
• ajustar a estrutura das classes de forma a permitir a 
herança entre as mesmas;
• desenhar a implementação das associações;
• determinar a representação exata dos atributos dos 
objetos;
• colocar as classes e associações em módulos.
2.6.4 - Implementação
• desenho da base de dados;
• escrita do código.
Como principais características, destacam-se a separação 
clara entre análise e projeto, a inclusão de todos os conceitos 
A fase de análise é composta por três modelos, os quais 
recomenda-se que sejam seguidos na ordem apresentada a 
seguir:
 - modelo de objetos;
 - modelo dinâmico;
 - modelo funcional.
O modelo de objetos descreve a estrutura estática do 
sistema, com as classes, os relacionamentos existentes entre 
as classes, os atributos e operações que caracterizam cada 
classe; como resultado, tem-se um diagrama Entidade/
Relacionamento estendido.
Figura 3.1. Visão geral de desenvolvimento do método OMT. Fonte: Acervo pessoal
O modelo dinâmico captura os aspectos temporais 
do modelo de objetos utilizando diagramas de máquina de 
estados.
A modelagem funcional descreve a transformação dos 
dados em termos de como os valores de saída são derivados 
dos valores de entrada, utilizando para isso os DFD.
2.7
A técnica Fusion (Fusão) corresponde a uma integração 
das técnicas OMT e de Booch, na qual os dois modelos de 
objeto e de interface visam a representar os aspectos estáticos 
e dinâmicos do problema.
O método Fusion 
sistema, fornecendo uma interface mais amigável com a 
documentação sobre o comportamento dinâmico dos objetos 
e tratamento completo a respeito do ciclo de vida associado 
ao desenvolvimento de software.
dos requisitose a implementação com o uso de uma 
linguagem de programação. O método Fusion é formado por 
uma sequência de etapas dentro de cada fase e os resultados 
de cada uma das fases são explicitamente enviados para uma 
alguns tipos de sistemas concorrentes.
O processo de desenvolvimento do método Fusion é 
dividido em análise, projeto e implementação.
sistema, produzindo modelos que descrevem os seguintes 
elementos;
 - classes de objetos existentes;
 - relacionamentos;
 - operações que podem ser executadas;
 - sequências disponíveis para as operações.
Na fase de projeto, o modelo de operações gerado 
modelos:
 - como as operações serão implementadas pelas 
157
Análise de Sistemas II 22
interações entre os objetos;
 - como as classes farão referências mútuas e como 
estarão relacionadas através da herança;
 - os atributos das classes e suas operações.
Na implementação, o projeto será transformado em 
 -
na forma de métodos pertencentes a uma classe 
selecionada;
 - as sequências permitidas para as operações são 
reconhecidas por máquinas de estado.
utilizando pré-condições e pós-condições (Figura 3.2). A pré-
condição caracteriza as condições sob as quais a operação 
poderá ser ativada. A pós-condição descreve como o estado 
do sistema será alterado pela operação, e quais os eventos que 
serão enviados aos agentes.
Alteração ocorrida
Figura 3.2. Operações do sistema
O modelo de operações é mostrado em forma de uma 
de cada ação:
 Abrir conta
 
 novo cliente
 
 
 
Figura 3.3. Exemplo de modelo de operações do método Fusion
2.8
O RUP ( ) é um framework genérico 
para processos de desenvolvimento de software, criado pela 
empresa Rational Software Corporation, que está fortemente 
centrado na arquitetura, funcionalidade (caso de uso) e o 
desenvolvimento iterativo e incremental (inspirado no ciclo 
de vida espiral de Boehm), que aplica a UML, para o projeto 
e a documentação.
O RUP é um processo de desenvolvimento de software e, 
como tal, descreve os papéis e as atividades que cada membro 
da equipe de projeto deve desempenhar ao longo do ciclo 
de desenvolvimento do software e os produtos que devem 
ser gerados como resultado destas atividades, os chamados 
artefatos.
O RUP usa a UML, que é uma notação consistente que 
pode ser aplicada tanto para a engenharia de sistemas quanto 
a engenharia de negócios.
Uma notação padrão serve aos seguintes papéis:
• serve como uma linguagem para comunicar decisões 
que não são óbvias ou que não podem ser deduzidas 
do próprio código.
• 
todas as decisões estratégicas e táticas importantes.
• 
pessoas raciocinem e para que as ferramentas sejam 
manipuladas.
2.9 - UML
UML ou 
métodos OMT, Booch e OOSE que está sendo submetido a 
OMG para a padronização.
A UML é uma linguagem de modelagem para documentar 
análise e desenho de um sistema. A UML é uma linguagem 
totalmente orientada a objetos, que une as melhores práticas 
e metodologias da Engenharia de Software. É considerada a 
sintaxe geral para criar um modelo lógico de um sistema. Ela 
é utilizada para descrever pontos de um sistema e da forma 
como ele é percebido de várias visões durante a análise e sua 
arquitetura. É uma linguagem que visa capturar conhecimento 
e expressar esse conhecimento.
Seu propósito é a modelagem de sistemas, documentar de 
maneira interativa e visual, proporcionar melhor compreensão 
e sinergia entre o analista e o cliente envolvido no processo de 
desenvolvimento.
A UML ( ) é uma tentativa de 
padronizar a modelagem orientada a objetos de uma forma 
que qualquer sistema, seja qual for o tipo, possa ser modelado 
corretamente, com consistência, fácil de se comunicar com 
outras aplicações, simples de ser atualizado e compreensível. 
Existem várias metodologias de modelagem orientada a 
objetos que até o surgimento da UML causavam muitas 
discussões entre a comunidade de desenvolvedores orientado 
trazendo as melhores ideias de cada uma destas metodologias. 
construção e documentação de sistemas, estabelecida pela 
OMG (Object Management Group).
uma linguagem de modelagem e não uma metodologia, ou 
seja, não tem noções do processo. Um método consiste de 
uma linguagem de modelagem e de um processo. A linguagem 
desenhar projetos.
O processo é o caminho de quais passos serão utilizados 
na elaboração de um projeto, ou seja, pode-se utilizar os 
permitindo que o desenvolvedor faça o seu próprio processo 
de acordo com as necessidades, em função do tipo de software 
a ser desenvolvido (tempo real, sistema de informações, 
produto desktop), o tamanho da equipe a ser envolvida, o nível 
de formalismo exigido e a facilidade de comunicação desejada, 
158
23
tipos de processos e em todo o ciclo de desenvolvimento de 
software.
A técnica UML será descrita mais detalhadamente mais 
adiante.
3 - Discussão sobre as metodologias
É muito difícil que uma comparação sistemática possa 
fazer justiça a ambos os métodos apresentados, Fusion e 
OMT. Muitos aspectos precisam ser analisados; o ideal seria 
os dois métodos e pela mesma equipe de trabalho. Entretanto, 
mostraremos algumas vantagens e desvantagens de cada um 
dos métodos em relação ao outro.
comum também em vários outros métodos, está no processo, 
considerado fraco na orientação dos integrantes da equipe de 
desenvolvimento pelas diversas fases do desenvolvimento do 
software. Porém, a fase de análise tem um processo muito bem 
inter-relacionamento.
O modelo de operações do método Fusion fornece 
uma base descritiva do sistema muito mais clara, deixando 
transparentes as entradas, saídas e alterações com a 
mas deixa a desejar na visão global do sistema.
No método OMT, o modelo funcional não é muito 
comportamentos em virtude dos DFD’s serem essencialmente 
operacionais. Já no modelo de objetos, é possível registrar 
uma grande quantidade de informações estruturais.
O OMT é afetado pelo projeto de Banco de Dados 
Relacional e muitos conceitos essenciais são introduzidos para 
muitos trabalhos. Nele se dá pouca ênfase aos relacionamentos 
existentes entre as funções a serem executadas por um sistema 
e como elas determinam as interfaces de classes.
As diferenças afetam o processo de desenvolvimento 
e em última análise, o próprio software desenvolvido. Aqui 
citamos algumas:
 - Deslocamento do esforço de desenvolvimento 
para a análise: Uma abordagem baseada em 
objetos concentra a maior parte do esforço de 
desenvolvimento do software na fase de análise do 
ciclo de vida. Esse esforço adicional é compensado 
pela implementação mais rápida e simples. Como 
o projeto resultante é mais limpo e adaptável, as 
 - Ênfase na estrutura de dados e não nas funções: A 
encapsulados que ocultam sua implementação 
 - Processo de desenvolvimento inteiriço: Não existem 
descontinuidades nas quais a notação de uma fase 
seja substituída por outra em outra fase;
 - Iterativo, não sequencial: Embora a descrição da 
OMT seja necessariamente linear, o processo real 
é iterativo. Cada iteração acrescenta ou esclarece 
feito, o conduz a menores possibilidades de erros e 
inconsistências.
No método Fusion, há uma grande facilidade no 
entendimento do modelo de operações por ser bem descritivo 
e detalhado, fornecendo até os resultados alcançados pelos 
muito pela modelagem funcional, que não considera a 
seqüência dos processos de valores ou as decisões.
Nenhum dos dois métodos apresentados pode ser 
de um sistema, haja vista que cada um possui características 
muito importantes para concepção do processo.
a critério da equipe de trabalho.
relacionamentos entre as classes é mais clara no método 
OMT, sem contar a facilidade de utilização, ou até migração, 
por parte dos projetistas por utilizar conceitos da modelagem 
estática, muito absorvida pela equipe de trabalho.
O método Fusion usa o dicionário de dados como um 
repositório central.
Retomando a aula
As técnicas existentes permitem e aprimoram a construção 
do modelo do sistema, para posterior inclusão de detalhes da 
implementação(programação). Várias são as metodologias 
existentes, cada uma delas com suas características, pontos 
fortes e fracos. É importante ler e aprimorar o conhecimento 
em cada uma delas para podermos entender de que forma 
cada uma pode ajudar no projeto do sistema.
Nesta seção, vimos características das técnicas de Booch, 
Coad/Yourdon, Shlaer/Mellor, OOSE/Objectory, OMT, 
Fusion, UML e RUP. Conhecemos pontos importantes de 
cada uma delas.
técnicas Fusion e OMT, apontando pontos fortes e fracos de 
cada uma delas.
159
Análise de Sistemas II 24
Vale a pena
PRESSMAN, Roger. Engenharia de Software. São Paulo-
SP: Makron Books, 2006. SOMMERVILLE, I. Engenharia 
de Software. 8ª Edição. Addison Wesley, 2007. BOOCH, 
Grady, JACOBSON, Ivar; RUMBAUGH, James. UML – 
guia do usuário. Elsevier, Rio de Janeiro. 2005.
pena ler
Minhas anotações
160
4ºAula
Análise orientada a objetos
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de: 
• conhecer os modelos da análise orientada a objetos;
• entender os conceitos de associações entre os objetos.
Prezados (as) alunos (as),
Nesta aula 4 estudaremos sobre os modelos da Análise 
Orientada a Objetos.
Se ao final desta aula tiverem dúvidas, vocês poderão saná-
las através das ferramentas da plataforma de ensino.
Conto com a sua participação, aproveite para ler e refletir 
os objetivos de aprendizagem, afinal da sua participação 
dependerá seu aprendizado.
Bom Trabalho!
Bons estudos!
161
Análise de Sistemas II 26
Seções de estudo
1 – Modelos: Objeto, Dinâmico e Funcional
2 – Objetos e classes
3 – Ligações e associações
1
Funcional
modelagem da aplicação e do domínio no qual ela opera. Esta 
fase focaliza o quê necessita ser feito e não como deve ser feito. 
A etapa inicial da fase de análise consiste no estabelecimento 
dos requisitos do problema a ser resolvido, fornecendo uma 
visão conceitual do sistema proposto.
O diálogo subsequente com o usuário, o conhecimento 
da área e a experiência adquirida do mundo real são elementos 
adicionais que servem de entrada para a análise. A saída desta 
fase de análise é um modelo “formal” que captura os aspectos 
de controle e transformação funcional de dados.
Um modelo é uma abstração que tem como propósito 
entender um problema antes de solucioná-lo. A partir de 
modelos, é possível simular e testar sistemas antes de construí-
los, facilitar a comunicação com os usuários e os outros 
membros da equipe de desenvolvimento, visualizar e reduzir 
a complexidade dos problemas a tratar.
No caso da metodologia OMT, obtém-se os modelos 
objeto, dinâmico e funcional.
1.1
O Modelo Objeto serve para representar os aspectos 
estáticos, estruturais, de “dados” de um sistema.
O modelo objeto descreve a estrutura de objetos no 
sistema: sua identidade, suas relações com os outros objetos, 
seus atributos e suas operações. Este modelo tenta capturar 
a estrutura estática dos componentes do mundo real que se 
pretende representar. O modelo objeto tem uma representação 
com seus atributos e operações, e organizados segundo 
hierarquias e associações com os diagramas de outras classes.
Para construir o modelo objeto, é necessário seguir os 
seguintes passos:
• 
• preparar um dicionário de dados;
• 
objetos;
• 
• 
herança;
• 
• 
• agrupar as classes em módulos.
1.2 - Modelo Dinâmico
O Modelo Dinâmico serve para representar os aspectos 
temporal, comportamental e de “controle” de um sistema.
Para construir o modelo dinâmico, é necessário seguir os 
seguintes passos:
• reparar cenários de sequências de interação típicas;
• 
• preparar um rastro de eventos para cada cenário;
• construir um diagrama de estados;
• 
consistência.
1.3 - Modelo Funcional
O Modelo Funcional serve para representar os aspectos 
transformacionais e de “função” de um sistema.
Para construir o modelo funcional, é necessário seguir os 
seguintes passos:
• 
• construir um DFD mostrando dependências 
funcionais;
• descrever funções;
• 
entre objetos;
• 
2
Todos os objetos têm uma identidade e são distinguíveis. 
Eles são instâncias (ocorrências) de classes de objetos que 
descrevem grupos de objetos com similaridade nas 
propriedades (atributos), comportamento (operações ou 
métodos), relações com os outros objetos e semântica.
Figura 4.1. Representação de uma classe. Fonte: Acervo pessoal
Figura 4.2. Representação de classe e objetos. Fonte: Acervo pessoal
162
27
relações é composta de dois tipos de diagramas mostrados na 
• um , que representa classes 
de objetos e tem a função de ser um esquema, um 
padrão ou um “template” para os dados;
• um , utilizado para 
representar instâncias de classes e tem o objetivo de 
descrever como um conjunto particular de objetos 
se relaciona com outro.
O atributo é colocado na segunda parte da caixa, como 
por detalhes opcionais tais como tipo (precedido por “:”) e 
de objeto não são necessários no modelo objeto, pois cada 
objeto já tem a sua própria identidade (a partir de seus valores).
Figura 4.3. Ilustração de Classes e Objetos. Fonte: Acervo pessoal
Figura 4.4. Ilustração de Atributos e Valores. Fonte: Acervo pessoal
Uma operação pode ser aplicada a ou por objetos numa 
classe. A mesma operação pode se aplicar a várias classes 
métodos em várias classes, eles devem ter a mesma assinatura 
(em número e tipos de argumentos). As operações se 
4.5. Cada operação pode ser seguida de detalhes opcionais 
tais como lista de argumentos (colocada entre parênteses após 
o nome, separados por “,” ) e tipo de resultado (precedido 
por “:”). A notação generalizada para classes de objetos se 
Figura 4.5. Operações com Objetos. Fonte: Acervo pessoal
Figura 4.6. Generalização da notação de modelagem de objetos. Fonte: Acervo 
pessoal
3 - Ligações e associações
A ou link é uma conexão física ou conceitual 
entre instâncias de objetos. Por exemplo: Marco Aurélio 
Freitas Santos UNIGRAN. Uma ligação é 
uma túpla correspondente a uma lista ordenada de instâncias 
de objetos. Uma ligação é uma instância de uma associação 
(relacionamento).
Figura 4.7. Exemplo de associação. Fonte: Acervo pessoal
Uma associação descreve um grupo de ligações com 
estrutura e semântica comuns. Por exemplo: uma pessoa 
uma instituição. Todas as ligações de uma 
associação conectam objetos das mesmas classes. O 
base de dados.
Associações e ligações são descritas por verbos. 
Associações são inerentemente bidirecionais e podem ser lidas 
nos dois sentidos. Por exemplo: num primeiro sentido pode-se 
ler: Marco Aurélio Freitas Santos UNIGRAN 
e no sentido inverso, UNIGRAN Marco Aurélio 
Freitas Santos. Associações são muitas vezes implementadas 
em linguagens de programação como apontadores (atributo 
de um objeto que contém referência explícita a outro) de um 
objeto para outro. Por exemplo: objeto Pessoa pode conter 
atributo empregado que aponta para um conjunto de objetos 
Instituição.
Uma ligação mostra a relação entre dois ou mais objetos. 
correspondentes. Observa-se, nesta notação, que a associação 
corresponde a uma linha entre classes e que os nomes de 
associação aparecem em itálico.
Figura 4.8. Associação um-para-um e links. Fonte: Acervo pessoal
163
Análise de Sistemas II 28
As associações (relacionamentos) podem ser binárias, 
ternárias ou de ordem maior. De fato, a maior parte é 
será comentado a seguir). A simbologia OMT para ternária 
ou n-ário é um losango com linhas conectando as classes 
relacionadas. O nome da associação é escrito dentre do 
losango; entretanto, os nomes de associação são opcionais. A 
Figura 4.9. Associação ternária e links. Fonte: Acervo pessoal
A 
uma classe podem se relacionar a uma única instância 
de classe associada. Esse conceito é também conhecido 
como cardinalidade de relacionamento. A multiplicidade 
restringe o número de objetos relacionados. A multiplicidade 
problema. Requisitos vagos tornam a multiplicidade incerta. 
Não é possível determinar muito cedo a multiplicidade no 
processo de desenvolvimento de software;num primeiro 
tempo, determinam-se objetos, classes, ligações e associações 
e depois se decide a respeito de multiplicidade. A distinção 
mais importante é entre “um” e “vários”; entretanto existem 
símbolos especiais para “exatamente um”, “um ou mais”, 
“intervalos”, “”zero ou mais”, “zero ou um”, conforme 
Figura 4.10. Notação para associações múltiplas. Fonte: Acervo pessoal
3.1 - Ligações e associações 
avançadas
3.1.1 - Associação Recursiva
É possível conectar uma classe a ela mesma através de 
uma associação e que ainda representa semanticamente a 
conexão entre dois objetos, mas os objetos conectados são 
da mesma classe. Uma associação deste tipo é chamada de 
associação recursiva.
Figura 4.11. Exemplo de uma associação recursiva. Fonte: Acervo pessoal
3.1.2 - Atributo de ligação
É similar ao caso da classe, onde um atributo é uma 
propriedade dos objetos desta, um atributo de ligação é uma 
apresenta o caso onde permissão-de-acesso é um atributo da 
associação Acessível-por. Cada atributo de ligação tem um valor 
É ainda possível ter atributos de ligações para associações 
ligações ternárias. Apesar de poder substituir os atributos de 
ligação por atributos de objetos da associação, é preferível 
manter atributos de ligação.
Figura 4.12. Atributo de ligação para associação “muitos-para-muitos”. Fonte: 
Acervo pessoal
Figura 4.13. Atributos de ligação para associação um para vários (papéis). Fonte: 
Acervo pessoal
3.1.3 - Modelagem de associação 
como classe
Às vezes, é útil modelar uma associação como classe. 
mostra um exemplo disto. Essa opção é particularmente útil 
quando ligações podem participar em associações com outros 
objetos ou quando ligações são sujeitas a operações.
Figura 4.14. Modelando uma associação como Classe. Fonte: Acervo pessoal
164
29
3.1.4
As associações entre objetos podem ter uma ordem 
implícita. O padrão para uma associação é desordenado (ou 
associação pode ser muito útil em casos como este: janelas de 
um sistema têm que ser ordenadas na tela (uma está no topo, 
uma está no fundo e assim por diante). A associação ordenada 
de associação entre as duas classes.
3.1.5
especial que reduz a multiplicidade efetiva de uma associação, 
distinguindo objetos dentro do conjunto na extremidade 
com associações de um para vários (1..*) ou vários para vários 
3.1.6 - Agregação
A agregação é uma relação “parte-todo” ou “uma-parte-
de” na qual os objetos representando os componentes de 
algo são associados com um objeto representando a junção 
deles (“assembly”). Algumas propriedades da classe junção 
classe junção e uma classe componente. A agregação é 
então uma forma especial de associação. A simbologia da 
agregação é similar a da associação (linha), exceto pelo fato 
de um pequeno losango indicar o lado da junção da relação, 
Figura 4.16. Agregação. Fonte: Acervo pessoal
3.1.7
Generalizações e herança são abstrações poderosas que 
permitem compartilhar similaridades entre as classes, apesar 
de preservar suas diferenças.
é uma relação do tipo “é um” entre uma 
Por exemplo, numa farmácia, a classe PRODUTOS é uma 
superclasse de MEDICAMENTOS e PERFUMARIA. 
Atributos e operações comuns a um grupo de subclasses 
são reagrupados na superclasse e compartilhados por cada 
subclasse. Diz-se que cada subclasse herda as características 
de sua superclasse.
A notação para a generalização é um triângulo conectando 
4.17. As palavras próximas ao triângulo no diagrama são 
discriminadores (atributos de um tipo enumeração que indica 
qual propriedade de um objeto está sendo abstraído por uma 
relação de generalização particular). Os discriminadores estão 
relacionados em correspondência um-a-um com as subclasses 
da generalização.
165
Análise de Sistemas II 30
É possível relação de herança em vários níveis. A herança 
em 2 ou 3 níveis (até 5 em alguns casos) de profundidade é 
aceitável; já a mais de 10 níveis é excessiva.
A generalização facilita a modelagem a partir de classes 
estruturadas e da captura do que é similar e do que é diferente 
nas classes. A herança de operação é de grande ajuda durante 
a implementação para facilitar a reutilização de código.
entre classes, enquanto a herança diz respeito ao mecanismo 
de compartilhar atributos e operações usando a relação de 
generalização. Generalização e especialização são dois pontos 
de vista da mesma relação, no primeiro caso vista a partir da 
superclasse e no segundo da subclasse: a superclasse generaliza 
3.1.8
Um módulo é uma construção lógica para reagrupar 
classes, associações e generalizações. Um módulo captura 
uma perspectiva ou uma vista de uma situação, como no caso 
de um , existem várias visões correspondentes a 
, , . Um modelo objeto 
consiste de um ou vários módulos. A noção de módulo força 
a particionar um modelo objeto em peças gerenciáveis. Uma 
mesma classe pode ser referenciada em módulos diferentes. 
De fato, referenciando a mesma classe em múltiplos módulos 
é o mecanismo para interligar módulos entre si.
Retomando a aula
Na primeira seção, vimos que o modelo Objeto descreve 
a estrutura de objetos no sistema: sua identidade, suas relações 
com os outros objetos, seus atributos e suas operações. 
O modelo Dinâmico serve para representar os aspectos 
temporal, comportamental e de “controle” de um sistema. 
O modelo Funcional serve para representar os aspectos 
transformacionais e de “função” de um sistema.
Um , que representa classes de 
objetos e tem a função de ser um esquema, um padrão ou um 
“template” para os dados.
Um , utilizado para representar 
instâncias de classes e tem o objetivo de descrever como um 
conjunto particular de objetos se relaciona com outro.
A ou link é uma conexão física ou conceitual 
entre instâncias de objetos. Uma associação recursiva é 
quando uma classe se conecta a ela mesma através de uma 
associação entre dois objetos desta mesma classe.
Vale a pena
PRESSMAN, Roger. Engenharia de Software. São Paulo-
SP: Makron Books, 2006. SOMMERVILLE, I. Engenharia 
de Software. 8ª Edição. Addison Wesley, 2007.
pena ler
Minhas anotações
166
5ºAula
Modelagem dinâmica
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de: 
• entender os conceitos de estados e eventos;
• diferenciar atividades e ações;
• compreender o diagrama de estados.
Prezados (as) alunos (as),
Nesta aula 5 veremos as características dos modelos 
dinâmico e funcional.
Se ao final desta aula tiverem dúvidas, vocês poderão saná-
las através das ferramentas da plataforma de ensino.
Conto com a sua participação, aproveite para ler e refletir 
os objetivos de aprendizagem, afinal da sua participação 
dependerá seu aprendizado.
Bom Trabalho!
Bons estudos!
167
Análise de Sistemas II 32
Seções de estudo
1 – O modelo Dinâmico
2 – O modelo Funcional
3 – Comparações entre modelos
1
O modelo dinâmico descreve os aspectos do sistema que 
Esse modelo tenta capturar o controle, aspecto de um sistema 
que descreve as sequências de operação que ocorrem em 
resposta a estímulos externos, sem levar em conta o que as 
operações fazem, quem as ativa e como são implementadas. 
Os conceitos utilizados nesta modelagem dinâmica são os de 
eventos que representam os estímulos externos e de estados 
que representam os valores de objetos.
representa os estados e a sequência de eventos permitidos 
num sistema para uma classe de objetos. Os estados e 
eventos podem ainda ser organizados de forma hierárquica e 
representados num diagrama de estados estruturados.
1.1 - Eventos e estados
Um é caracterizado pelos valores dos atributos 
e pelas ligações mantidas por um objeto. Um 
corresponde a um estímulo individual de um objeto a outro. 
O representa o modelo de eventos, 
estados e transições de estado para uma classe dada. O modelo 
consiste de vários diagramas de estados, um para 
cada classe com comportamento dinâmico importante; ele 
mostra o modelo de atividade para um sistema completo. 
Cada máquina de estados se executa de forma concorrentee 
pode mudar de estado independentemente. Os diagramas de 
estado para as várias classes combinam num modelo dinâmico 
único através de eventos compartilhados.
Um é algo que ocorre num instante de tempo 
e que não tem duração. Um evento pode preceder ou seguir 
outro evento ou pode não ter relação entre eventos (neste caso, 
são ditos concorrentes). Cada evento é uma ocorrência única; 
entretanto, é possível reagrupá-los em classes de eventos e 
dar a cada uma delas um nome que indica uma estrutura e um 
comportamento comuns. Alguns eventos são simples sinais, 
mas muitos outros têm atributos indicando a informação que 
eles transportam. O tempo no qual o evento ocorre é um 
atributo implícito de todos os eventos. Um evento transporta 
a informação de um objeto a outro; os valores de dados 
transportados por um evento são seus atributos. Os eventos 
incluem as condições de erro e as ocorrências normais.
Um cenário é uma sequência de eventos que ocorre 
durante uma execução particular de um sistema. Ele pode 
incluir todos os eventos do sistema ou apenas eventos gerados 
por certos objetos no sistema. A sequência de eventos e os 
objetos que trocam eventos podem ser mostrados juntos num 
diagrama de 
e o rastro de eventos para uma chamada telefônica.
Um é uma abstração dos valores dos atributos 
do objeto a eventos de entrada. A resposta de um objeto a 
um evento pode incluir uma ação ou uma mudança de estado 
pelo objeto.
Um estado tem uma duração; ele ocupa um intervalo 
se ignorar atributos que não afetam o comportamento 
do objeto. O estado é caracterizado por um nome e uma 
descrição contendo a sequência de eventos que leva ao estado, 
a condição que o caracteriza e os eventos aceitos neste estado 
com a ação que ocorre e o estado futuro. O estado pode 
incluir os valores de suas ligações.
O relaciona estados e eventos. 
A mudança de estado causada por um evento é chamada de 
linha telefônica. Os diagramas de estado podem representar 
ciclos de vida uma-vez (com um estado inicial e um estado 
coleção de diagramas de estado que interagem entre si através 
de eventos compartilhados.
Uma é uma função booleana de valores 
objetos. Condições podem ser usadas como guardas nas 
transições, sendo que uma transição guardada
dispara quando o evento ocorre e que a condição de 
guarda é verdadeira.
Figura 5.1. Cenário e traço de eventos para uma chamada telefônica. Fonte: Acervo pessoal
168
33
1.2
Uma descrição do comportamento de um objeto 
Operações associadas a estados ou transições são realizadas 
em resposta aos estados correspondentes ou a eventos.
Uma é uma operação que leva tempo para se 
completar. Ela é associada a um estado. A notação “do: A” 
dentro de um caixa de estado indica que a atividade A inicia 
na entrada no estado e para na saída.
Uma é uma operação instantânea e é associada a 
um evento. Uma ação representa uma operação cuja duração é 
pequena comparada com a resolução do diagrama de estados. 
Ações podem também representar operações de controle 
interno. A notação para uma ação numa transição é um “/” 
seguido do nome da ação, após o evento que a causa.
1.3 - Diagramas de estado 
aninhados
Os diagramas de estado podem ser estruturados para 
permitir descrições concisas de sistemas complexos. Através 
de uma , é possível expandir, num nível mais 
baixo, adicionando detalhes, uma atividade descrita num 
nível superior . É possível organizar estados e eventos em 
hierarquias, com herança de estrutura e comportamento 
comuns, como no caso da herança de atributos e operações 
em classes de objetos. 
Figura 5.3. Diagrama de estados (generalização). Fonte: Acervo pessoal
A permite quebrar um estado em 
Figura 5.2. Diagrama de estados de uma linha telefônica. Fonte: Acervo pessoal
componentes ortogonais, com interação limitada entre eles, 
da mesma forma como se tem uma hierarquia de agregação de 
(estados concorrentes correspondem geralmente a agregações 
de objetos).
Uma num estado pode ser expandida 
como um diagrama de estados de baixo-nível, cada estado 
representando um degrau da atividade. Atividades aninhadas 
são diagramas de estados uma-vez com transições de entrada 
e saída, de forma similar a sub-rotinas. Um diagrama de 
estados aninhado é uma forma de generalização (relação 
do tipo “or”) sobre os estados . Os estados num diagrama 
(superestado) de um diagrama de alto-nível; a simbologia 
utilizada corresponde a uma caixa arredondada representando 
o superestado e contendo todos seus subestados.
podem também ser expandidos em diagramas 
de estados subordinados. Os eventos podem ser organizados 
numa hierarquia de generalização com herança dos atributos 
de eventos. A hierarquia de eventos permite que diferentes 
níveis de abstração sejam usados em diferentes lugares num 
modelo.
1.4
Um modelo dinâmico descreve um conjunto de objetos 
concorrentes, cada um com seu próprio diagrama de estados. 
Os objetos num sistema são inerentemente concorrentes e 
podem mudar de estados de forma independente. O estado 
do sistema total é o resultado dos estados de todos os seus 
objetos. Um diagrama de estados no caso da junção (assembly) 
de objetos através de agregação (relação “and”) é uma 
coleção de diagrama de estados, concorrentes, um para cada 
169
Análise de Sistemas II 34
componente. Entretanto, em vários casos, os estados dos 
componentes interagem; transições guardadas para um objeto 
podem depender do estado de outro objeto.
A concorrência pode também ocorrer dentro do estado 
de um único objeto, quando o objeto pode ser particionado 
em subconjuntos de atributos ou ligações, cada um com seu 
próprio subdiagrama; na notação adotada, os subdiagramas 
são separados por linhas pontilhadas.
2
O modelo funcional descreve os aspectos do sistema que 
dizem respeito com as transformações de valores: funções, 
mapeamentos, restrições e dependências funcionais. Este 
modelo captura o sistema faz sem levar em conta o 
e o ele faz.
O modelo funcional é representado por vários diagramas 
valores e o cálculo de valores de saída a partir de valores de 
entrada e de funções. O modelo funcional inclui também as 
restrições entre valores no modelo objeto.
2.1
O modelo funcional consiste de múltiplos diagramas de 
a relação funcional dos valores calculados pelo sistema, 
incluindo valores de entrada, saída e armazenamento de 
dados internos.
Um DFD contém que transformam dados, 
que movimentam dados, objetos 
que produzem e consomem dados, objetos 
que estocam os dados.
. Um processo transforma valores de dados. 
Um processo é implementado como um método de uma 
operação de uma classe de objetos. O objeto alvo é usualmente 
objeto alvo é implícito.
ou processo Ele representa um valor de dados intermediário 
dados.
. Um ator é um objeto ativo que conduz o diagrama 
dados. Eles podem ser vistos como fontes e receptores de 
dados.
. Um armazenador de dados 
armazena dados para um acesso futuro. Como no caso de um 
ator, um armazenador não gera operações sobre ele mesmo, 
mas simplesmente responde a pedidos para armazenar e 
acessar dados. O acesso pode ser feito em ordem diferente do 
armazenamento. Destaca- se que atores e armazenadores de 
dados são objetos que se diferenciam pelo seu comportamento 
e uso; atores podem ainda ser implementados como 
dispositivos externos e armazenadores como arquivos.
. Um DFD 
é particularmente útil para mostrar a funcionalidade de alto-
nível de um sistema e sua quebra em unidades funcionais 
menores. Um processo pode ser expandido num outro DFD 
no qual as entradas e saídas dos processos o são também no 
novo diagrama. Eventualmente, o aninhamento de diagramas 
como operações.
. Um DFD não mostra quais 
caminhos são executados e em que ordem. Decisões e 
sequenciamento são questões de controle que fazem parte do 
booleana que indica quando um processo pode ser realizado; 
no DFD, que vai de um processo que gera uma variável 
booleana ao processo a ser controlado) não é um valor de 
entrada para o processo.2.1.1 - Especificando operações
Processos em DFD devem eventualmente ser 
implementados como operações sobre objetos. Para cada 
nível baixo, um processo é uma operação. Processos de nível 
elevado podem também ser considerados operações. Uma 
implementação pode ser organizada de forma diferente da que 
o DFD representa por causa de otimização. Cada operação 
funções matemáticas, tabelas de valores de entrada e saída, 
pós-condições, tabelas de decisão, pseudocódigo (algoritmos) 
e linguagem natural.
3 - Comparações entre modelos
Cada modelo descreve um aspecto do sistema, mas 
contém referencias aos outros modelos. O modelo objeto 
descreve a estrutura de dados sobre a qual os modelos 
dinâmico e funcional operam. As operações no modelo objeto 
correspondem aos eventos no modelo dinâmico e as funções 
no modelo funcional.
O modelo dinâmico descreve a estrutura de controle dos 
funções no diagrama funcional. Os eventos no diagrama de 
estados se tornam as operações no modelo objeto.
O modelo funcional descreve as funções invocadas pelas 
operações no modelo objeto e ações no modelo dinâmico. 
pelo modelo objeto. O modelo funcional mostra ainda as 
restrições sobre os valores objeto.
Seções de estudo
170
35
Vimos que um é caracterizado pelos valores dos 
atributos e pelas ligações mantidas por um o. Um é 
algo que ocorre num instante de tempo e que não tem duração 
e um cenário é uma sequência de eventos que ocorre durante 
uma execução particular de um sistema.
Estudamos nesta seção que o modelo funcional 
descreve os aspectos do sistema que dizem respeito com as 
transformações de valores: funções, mapeamentos, restrições 
e dependências funcionais. Este modelo captura o 
sistema faz sem levar em conta o e o ele faz.
Nesta seção, vimos uma comparação do que foi estudado 
entre os modelos dinâmico e funcional.
Vale a pena
PRESSMAN, Roger. Engenharia de Software. São Paulo-
SP: Makron Books, 2006. SOMMERVILLE, I. Engenharia 
de Software. 8ª Edição. Addison Wesley, 2007.
pena ler
UNICAMP. Modelagem Dinâmica. Disponível por www 
em: http://www.ic.unicamp.br/~ariadne/mc436/1s2013/
cap5.pdf. Acesso em 10/11/2013
pena acessar
Minhas anotações
171
6ºAula
Projeto orientado a objetos
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de: 
• compreender a importância de se projetar um sistema;
• saber as características de qualidades desejáveis em um projeto;
• entender os conceitos de projeto de sistema e projeto de objetos.
Prezados (as) alunos (as),
Nesta aula, estudaremos alguns conceitos do projeto 
orientado a objetos.
Se ao final desta aula tiverem dúvidas, vocês poderão saná-
las através das ferramentas da plataforma de ensino.
Conto com a sua participação, aproveite para ler e refletir 
os objetivos de aprendizagem, afinal, da sua participação 
dependerá seu aprendizado.
Bom Trabalho!
Bons estudos!
173
Análise de Sistemas II 38
Seções de estudo
1 – Introdução
2 – Projeto de sistema
3 – Projeto de objeto
1 - Introdução
Uma grande parte dos desenvolvedores de software 
“torcem o nariz” para o trabalho de projeto de software partindo 
uma linguagem de programação que esteja sendo bem 
o que realmente importa, projetar é tempo perdido enquanto 
poderia estar desenvolvendo o programa.
Esta visão romântica e “suicida” hoje em dia não tem mais 
fundamento. Devido ao aumento da complexidade dos projetos 
de software realizar um planejamento profundo do projeto é 
crucial. O cliente precisa entender o que o desenvolvedor 
está fazendo e precisa ter condições de indicar alterações nas 
funcionalidades do projeto. Para isso, é necessário um canal 
de comunicação onde a linguagem usada seja compreensível 
pela equipe de desenvolvimento e pelo cliente. A chave 
para este processo ser bem sucedido é organizar o processo 
de desenvolvimento de forma a envolver programadores, 
analistas e clientes no desenvolvimento do sistema usando uma 
linguagem que seja de fácil entendimento a todos.
O Projeto Orientado a Objetos se dedica a desenvolver 
um modelo orientado a objetos de um sistema de software para 
implementar os requisitos. Os objetivos em um projeto OO 
que está sendo 
resolvido.
Embora a tecnologia orientada a objetos não seja nova, 
o Projeto Orientado a Objetos é uma abordagem inovadora 
para o desenvolvimento do software que, se bem implementada, 
trará benefícios substanciais para o aumento da produtividade 
com qualidade. É necessário, no entanto, que se consiga 
transpor as razões habituais de resistência para adoção de 
novas tecnologias.
Algumas das vantagens do Projeto OO:
• facilidade de manutenção. Objetos podem ser 
entendidos como entidades independentes;
• os objetos são componentes potencialmente 
reutilizáveis;
• para vários sistemas, existe um nítido mapeamento 
entre as entidades do mundo real para objetos do 
sistema.
Se existem vantagens, porque muitas empresas não 
adotaram ainda o projeto orientado a objetos? Alguns dos 
motivos apontados são:
• incerteza;
• falta de pessoas treinadas (know-how);
• ferramentas imaturas
• 
não orientadas a objetos.
Além dos benefícios citados anteriormente, outros 
Deve haver uma maior reutilização do software, acarretando 
ganhos de performance na construção de novos sistemas. 
Todos estes aspectos conduzem a vantagens econômicas. 
A partir da década de 90, as aplicações se tornaram 
mais complexas, demorando mais tempo para serem 
executadas e apresentando um índice proporcionalmente 
maior de falhas. O tempo e o dinheiro necessários para 
a manutenção dessas aplicações também aumentaram 
substancialmente.
A fase de projeto é responsável por incorporar requisitos 
tecnológicos aos requisitos essenciais. Assim, o projetista 
deverá estar atento aos critérios de qualidade que o sistema 
terá que atender.
O projeto OO modela a solução e consiste das atividades 
de criação (como pode ser feito), enquanto que a análise 
modela o problema e consistem das atividades necessárias 
para entender o domínio do problema (o que deve ser feito).
A qualidade do projeto pode ser medida conforme os 
requisitos citados a seguir:
adequação, acurácia, interoperabilidade, segurança de acesso 
e conformidade.
software 
manter seu nível de desempenho, sob condições estabelecidas, 
por um período de tempo. Tem como sub- características: 
maturidade, tolerância a falhas, recuperabilidade e 
conformidade.
refere-se ao esforço necessário para se 
utilizar um produto de software, bem como o julgamento 
individual de tal uso por um conjunto de usuários. Tem 
como sub-características: inteligibilidade, apreensibilidade, 
operacionalidade, atratividade e conformidade.
diz respeito ao relacionamento entre o nível 
de desempenho do software e a quantidade de recursos utilizados 
sob condições estabelecidas. Tem como sub-características: 
comportamento em relação ao tempo, comportamento em 
relação aos recursos e conformidade.
concerne ao esforço necessário 
software. Tem como sub-
testabilidade e conformidade.
software ser 
transferido de um ambiente para outro. Tem como sub-
características: adaptabilidade, capacidade para ser instalado, 
coexistência, capacidade para substituir e conformidade.
174
39
2
O projeto do sistema consiste em tomar decisões de alto 
nível sobre o como o problema será resolvido e a solução 
construída. O projeto de sistemas inclui decisões sobre a 
arquitetura do sistema, sobre a organização do sistema em 
subsistemas, a alocação de subsistemas, a componentes de 
hardware ou de software e sobre a política e a estratégia que 
formam o quadro no qual o projeto detalhado poderá ser 
desenvolvido.
O projetista do sistema deve tomar as seguintes decisões:
 -
funções do sistema, dividindo a função principal em 
sub-funções, que pode ser horizontal, mostrando 
sub-funções no mesmo nível, ou vertical dividindo 
cada função em funções menores.
 -
um mesmo problema e como estas tarefas deverão 
 -
Determinar quais equipamentos e programas serão 
alocados para cada partedo sistema como um todo.
 -
Escolher o tipo de metodologia e estruturas de 
dados serão utilizadas para os bancos de dados.
 -
disponibilizados para seus usuários e como será o 
gerenciamento destes acessos;
 -
utilização, solicitações e alterações.
 -
Preparar o sistema e as pessoas para tratar com 
as situações limites, ou seja, situações e valores 
que exigirão do sistema uma validação correta e 
um tratamento adequado quando o as funções 
processamento normal.
 -
Estabelecer que tarefas deverão ser executadas 
primeiro, baseados na necessidade da empresa e nas 
solicitações do usuário.
3
completas das classes e associações utilizadas na 
implementação, bem como as interfaces e os algoritmos 
dos métodos utilizados para por em prática as operações. 
Nesta fase, são adicionados objetos internos para a 
implantação e otimizadas as estruturas de dados e os 
algoritmos. O projetista deverá escolher entre várias formas 
de implementação, levando em conta questões como 
minimização do tempo de execução, da memória e outras 
medidas de custo. A otimização do projeto deve ainda levar 
em conta as facilidades de implementação, manutenção e 
expansão.
Durante o projeto do objeto, o projetista deve realizar os 
passos seguintes:
• combinar os três modelos para obter as operações 
sobre as classes;
• projetar os algoritmos para realizar as operações;
• otimizar os caminhos de acesso aos dados;
• implementar o controle para as interações 
externas;
• ajustar a estrutura de classes para adicionar a 
herança;
• realizar o projeto das associações;
• determinar a representação do objeto;
• empacotar classes e associações nos módulos;
• documentar as decisões de projeto.
Retomando a aula
Todo sistema precisa ser construído baseado em um 
projeto, para que tenha um mínimo de qualidade.
No Projeto Orientado a Objetos é desenvolvido um 
modelo orientado a objetos de um sistema de software para 
implementar os requisitos. Os objetivos em um projeto OO 
resolvido.
sistema; a organização do sistema em subsistemas; a alocação 
de subsistemas; componentes de hardware ou de software; a 
política e a estratégia que formam o quadro no qual o projeto 
detalhado poderá ser desenvolvido.
das classes e associações utilizadas na implementação, assim 
como as interfaces e os algoritmos dos métodos utilizados 
para por em prática as operações.
175
Análise de Sistemas II 40
Vale a pena
DEVMEDIA. Análise e projeto orientado a objetos. 
Disponível por www em http://www.devmedia.com.br/
curso/analise-e-projeto-orientado-a-objetos/336. Acesso 
em 10/10/2013.
UNESP. Projeto orientado a objetos. Disponível por www 
em http://www.dcce. ibilce.unesp.br/~ines/cursos/eng_
soft/2006/aula11_ProjetoOrientadoObjeto.pdf. Acesso 
em 10/10/2013.
pena acessar
Minhas anotações
176
7ºAula
UML Linguagem de Modelagem 
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de: 
• entender os objetivos da UML;
• conhecer a importância da linguagem UML;
• estudar os principais diagramas pertencentes a esta linguagem;
• compreender para quê serve cada um dos diagramas que fazem parte da linguagem.
Prezados (as) alunos (as),
Nesta sétima aula, estudaremos a UML, uma linguagem de 
modelagem unificada, que foi criada para facilitar o trabalho de 
modelagem do sistema de forma padronizada.
Se ao final desta aula tiverem dúvidas, vocês poderão saná-
las através das ferramentas da plataforma de ensino.
Conto com a sua participação, aproveite para ler e refletir 
os objetivos de aprendizagem, afinal, da sua participação 
dependerá seu aprendizado.
Bom Trabalho!
Bons estudos!
177
Análise de Sistemas II 42
Seções de estudo
1 – O que é UML?
2 – Diagramas
1
O desenvolvimento de sistemas de software de grande 
porte é suportado por métodos de análise e projeto que 
modelam esse sistema de modo a fornecer para toda a equipe 
envolvida (cliente, analista, programador, etc.) uma 
compreensão única do projeto.
A UML ( ) é o sucessor de 
um conjunto de métodos de análise e projeto orientados a 
padronização pela OMG (Object Management Group).
A UML foi criada por três grandes desenvolvedores 
de sistemas orientados a objetos: Grady Booch, James 
Rumbaugh, e Ivar Jacobson, que já haviam criado outras 
notações de desenvolvimento de software. A UML se baseia 
de abstração. O desenvolvimento de um sistema em UML 
divide-se em cinco fases: análise de requisitos, análise, 
projeto (design), implementação (programação) e testes. UML 
grupos de desenvolvimento de software interpretem de uma 
maneira correta e sem ambiguidades modelos gerados por 
outros analistas ou grupos de desenvolvimento.
A UML é um modelo de linguagem, não um método. Um 
método pressupõe um modelo de linguagem e um processo. 
O modelo de linguagem é a notação que o método usa para 
descrever o projeto. Os processos são os passos que devem 
ser seguidos para se construir o projeto.
O modelo de linguagem é uma parte muito importante 
do método. Corresponde ao ponto principal da comunicação. 
Se uma pessoa quer conversar sobre o projeto, como outra 
pessoa, é através do modelo de linguagem que elas se 
entendem. Nessa hora, o processo não é utilizado.
vistos no modelo (retângulo, setas, o texto, etc.), é a sintaxe 
do modelo de linguagem. A notação do diagrama de classe 
associação e multiplicidade.
maneira mais rigorosa a notação.
Neste capítulo, apresentaremos a notação UML através 
2 - Diagramas
em uma visão do sistema, sendo esta visão chamada de 
modelo.
A UML consiste de um certo número de elementos 
UML é uma linguagem, ela possui regras para combinar estes 
elementos nos diversos diagramas.
Podemos dizer que um modelo UML pode ser visto 
como um conjunto de diagramas que podem ser examinados 
sistema de software.
Os diagramas utilizados pela UML são compostos de 
nove tipos: diagrama de use-case, de classes, de objeto, de estado, 
de sequência, de colaboração, de atividade, de componente e 
o de execução.
Todos os sistemas possuem uma estrutura estática e 
um comportamento dinâmico. A UML suporta modelos 
estático (estrutura estática), dinâmico (comportamento 
dinâmico) e funcional. A Modelagem estática é suportada 
pelo diagrama de classes e de objetos, que consiste nas 
classes e seus relacionamentos. Os relacionamentos podem 
ser de associações, herança (generalização), dependência ou 
diagramas de estado, sequência, colaboração e atividade. 
E a modelagem funcional é suportada pelos diagramas de 
componente e execução.
Abordaremos rapidamente cada um desses tipos de 
diagrama:
2.1 - Diagrama Use-Case
A modelagem de um diagrama use-case (caso de uso) é 
funcionais de um sistema. Eles são escritos em termos de 
atores externos, use-cases e o sistema modelado.
Os componentes do diagrama Use-Case são:
– é quem solicita ações e eventos do sistema e tem 
o retorno dos resultados destas ações. Um mesmo ator pode 
participar de vários casos de uso;
– é um documento narrativo que descreve 
a sequência dos eventos solicitados ou retornados a um ator;
– o sistema em si que está sendo modelado.
Os atores representam o papel de uma entidade externa 
ao sistema como um usuário, um hardware, ou outro sistema 
que interage com o sistema modelado. Ivan Jacobson (2005)
“documento narrativo que descreve 
a sequência de eventos de um ator que usa um sistema para completar 
um processo”.
seguintes perguntas:
 -
 -
 -
 -
Respondendo a estas quatro perguntas poderemos 
perceber quais são os atores de um sistema. Os atores iniciam 
a comunicação com o sistema através dos use-cases, onde o 
use-case representa uma sequência de ações executadas pelo 
sistema e recebe do ator que lhe utiliza dados tangíveis de 
um tipo ou formato já conhecido, e o valor de resposta da 
execução de um use-case (conteúdo) também já é de um tipo 
178
43
através de texto de documentação.
A notação usada pelo Diagrama “Use Case” é:
Atores e use-cases são classes. Um ator é conectado 
a um ou mais use- cases através de associações, e tanto 
atoresquanto use-cases podem possuir relacionamentos de 
herança em superclasses especializadas em subclasses.
O uso de use-cases em colaborações é muito importante, 
onde estas são a descrição de um contexto, mostrando classes/
como as classes/objetos interagem para executar uma 
por diagramas de atividades e um diagrama de colaboração.
Figura 7.1. Exemplo de diagrama de use-case. Fonte: Acervo pessoal
use-case é implantado, a responsabilidade 
operações necessárias dentro destas classes juntamente com 
instância de um use-case, ou de uma colaboração, mostrando 
importante exemplo de um use-case ou de uma colaboração. 
use-case, apenas a interação entre 
o ator externo e o use-case é vista, mas já observando em nível 
de uma colaboração, todas as interações e passos da execução 
O diagrama de use-case acima demonstra as funções 
de um ator externo de um sistema de controle bancário de 
o administrador do banco poderá desempenhar. Pode-
se perceber que não existe nenhuma preocupação com a 
implementação de cada uma destas funções, já que este 
diagrama apenas se resume a determinar que funções deverão 
ser suportadas pelo sistema modelado.
Use-cases são interações entre os atores e o sistema. 
Existem ações do ator e ações do sistema, mas os atores são 
sempre quem iniciam a ação.
Num exemplo prático, vamos supor que precisamos 
modelar o diagrama de use-case para um sistema de venda de 
uma loja de roupas com um terminal de caixa.
Neste exemplo os atores seriam: o e o Terminal 
do Caixa. Devemos ter em mente que um ator é sempre 
alguém ou algo que interage com o sistema não faz parte 
dele, o ator é sempre externo ao sistema, portanto o próprio 
sistema nunca pode ser um ator dele mesmo, em casos em 
que ações pareçam ser iniciadas pelo sistema, na verdade 
usaremos atores como Gerente ou Administrador.
À ação de realizar a compra de um item nós chamaremos 
de 
atualizar preço, cadastrar cliente, etc.), este será nosso use-case.
Figura 7.2. Diagrama use-case - Compra Item. Fonte: Acervo pessoal 
Precisaremos fazer uma descrição textual do caso de uso 
, onde atuam os atores cliente e caixa, como 
veremos no exemplo a seguir:
Use-case: 
Atores: 
Descrição: O 
Este é um exemplo de caso de uso sem detalhamento 
(detalhar) este diagrama, separando as diversas ações que 
envolvem a ação de Comprar item, conforme foi citado na 
descrição acima.
2.2 - Diagrama de Classes
O diagrama de classes demonstra a estrutura estática 
das classes de um sistema em que essas classes representam 
as “coisas” que são gerenciadas pela aplicação modelada. 
Classes podem se relacionar com outras através de diversas 
maneiras: associação (conectadas entre si), dependência (uma 
classe depende ou usa outra classe), especialização (uma 
classe é uma especialização de outra classe), ou em pacotes 
(classes agrupadas por características similares). Todos esses 
relacionamentos são mostrados no diagrama de classes 
juntamente com as suas estruturas internas, que são os 
atributos e operações. O diagrama de classes é considerado 
estático já que a estrutura descrita é sempre válida em qualquer 
ponto do ciclo de vida do sistema. Um sistema normalmente 
possui alguns diagramas de classes, já que não são todas as 
classes que estão inseridas em um único diagrama e uma certa 
179
Análise de Sistemas II 44
classe pode participar de vários diagramas de classes.
Figura 7.3. Diagrama de Classes – Uma simples representação de uma empresa 
de aluguel de veículos. Fonte: Acervo pessoal
Uma classe num diagrama pode ser diretamente colocada 
em prática utilizando-se uma linguagem de programação 
orientada a objetos que tenha suporte direto para construção 
de classes. Para criar um diagrama de classes, as classes têm 
2.3
O diagrama de objetos é uma variação do diagrama de 
classes e utiliza quase a mesma notação. A diferença é que o 
diagrama de objetos mostra os objetos que foram instanciados 
sistema em um certo momento de sua execução. A mesma 
notação do diagrama de classes é utilizada com 2 exceções: os 
objetos são escritos com seus nomes sublinhados e todas as 
instâncias num relacionamento são mostradas. Os diagramas 
de objetos não são tão importantes como os diagramas de 
complexos de classes ajudando muito em sua compreensão. 
Diagramas de objetos também são usados como parte dos 
diagramas de colaboração, onde as colaborações dinâmicas 
entre os objetos do sistema são mostradas.
Figura 7.4. Diagrama de Objetos. Fonte: Acervo pessoal
se relaciona de 
1 para n com , por isso, um objeto da 
classe cliente pode ter 1 ou vários contratos.
2.4 - Diagrama de Estado
O diagrama de estado é tipicamente um complemento 
para a descrição das classes. Este diagrama mostra todos os 
estados possíveis que objetos de uma certa classe podem se 
encontrar e mostra também quais são os eventos do sistemas 
que provocam tais mudanças. Os diagramas de estado não 
são escritos para todas as classes de um sistema, mas apenas 
conhecidos e onde o comportamento das classes é afetado e 
Diagramas de estado capturam o ciclo de vida dos 
objetos, subsistemas e sistemas. Eles mostram os estados 
que um objeto pode possuir e como os eventos (mensagens 
recebidas, timer, erros, e condições sendo satisfeitas) afetam 
estes estados ao passar do tempo.
Diagramas de estado possuem um ponto de início e 
inicial) é mostrado como um círculo todo preenchido, e um 
círculo em volta de um outro círculo menor preenchido. 
Um estado é mostrado como um retângulo com cantos 
arredondados. Entre os estados estão as transições, mostradas 
A transição pode ser nomeada com o seu evento causador. 
outro é executada ou disparada.
Figura 7.5. Diagrama de Estados – Diagrama de estados de um elevador. Fonte: 
Acervo pessoal
Uma transição de estado normalmente possui um evento 
ligado a ela. Se um evento é anexado a uma transição, esta será 
executada quando o evento ocorrer. Se uma transição não 
possuir um evento ligado a ela, a mesma ocorrerá quando a 
ação interna do código do estado for executada (se existir ações 
desenvolvedor). Então, quando todas as ações forem executadas 
pelo estado, a transição será disparada e serão iniciadas as 
atividades do próximo estado no diagrama de estados.
2.5 
O diagrama de sequência mostra a interação entre os 
objetos ao longo do tempo, apresentando os objetos que 
participam da interação e a sequência de mensagens trocadas.
Esse diagrama mostra a colaboração dinâmica entre os 
vários objetos de um sistema. O mais importante aspecto 
desse diagrama é que a partir dele percebe-se a sequência de 
mensagens enviadas entre os objetos. Ele mostra a interação 
entre os objetos, alguma coisa que acontecerá em um ponto 
consiste em um número de objetos mostrados em linhas 
verticais. O decorrer do tempo é visualizado observando-
se o diagrama no sentido vertical de cima para baixo. As 
mensagens enviadas por cada objeto são simbolizadas por 
180
45
setas entre os objetos que se relacionam.
Diagramas de sequência possuem dois eixos: o eixo 
vertical, que mostra o tempo e o eixo horizontal, que mostra os 
objetos envolvidos na seqüência de uma certa atividade. Eles 
certa atividade do sistema.
No eixo horizontal estão os objetos envolvidos na 
sequência. Cada um é representado por um retângulo de 
objeto (similar ao diagrama de objetos) e uma linha vertical 
pontilhada chamada de linha de vida do objeto, indicando 
a execução do objeto durante a sequência, como exemplo 
citamos: mensagens recebidas ou enviadas e ativação de 
objetos. A comunicação entre os objetos é representada como 
linha com setas horizontais simbolizando as mensagens entre 
é síncrona, assíncrona ou simples. As mensagens podem 
possuir também números sequenciais, que são utilizados para 
tornar mais explícitas as sequências no diagrama.
Em alguns sistemas, objetos rodam concorrentemente, 
cada um com sua linha de execução (thread). Se o sistema 
usa linhas concorrentes de controle, isso é mostrado como 
ativação, mensagensassíncronas, ou objetos assíncronos.
Figura 7.6. Diagrama de Seqüência – Servidor de Impressão. Fonte: Acervo 
pessoal
Os diagramas de sequência podem mostrar objetos que 
são criados ou destruídos como parte do cenário documentado 
pelo diagrama. Um objeto pode criar outros objetos através 
de mensagens. A mensagem que cria ou destrói um objeto é 
geralmente síncrona, representada por uma seta sólida.
2.6 - Diagrama de Colaboração
Um diagrama de colaboração mostra de maneira 
semelhante ao diagrama de sequência, a colaboração dinâmica 
entre os objetos. Normalmente pode-se escolher entre utilizar 
o diagrama de colaboração ou o diagrama de sequência.
No diagrama de colaboração, além de mostrar a troca de 
mensagens entre os objetos, percebe-se também os objetos 
com os seus relacionamentos. A interação de mensagens é 
mostrada em ambos os diagramas. Se a ênfase do diagrama 
for o decorrer do tempo, é melhor escolher o diagrama de 
sequência, mas se a ênfase for o contexto do sistema, é melhor 
dar prioridade ao diagrama de colaboração.
O diagrama de colaboração é desenhado como 
um diagrama de objeto, em que os diversos objetos são 
mostrados juntamente com seus relacionamentos. As 
setas de mensagens são desenhadas entre os objetos para 
nomeadas, que entre outras coisas mostram a ordem em 
que as mensagens são enviadas. Também podem mostrar 
condições, interações, valores de resposta, entre outros. O 
diagrama de colaboração também pode conter objetos ativos, 
que executam paralelamente com outros.
Figura 7.7. Diagrama de Colaboração – Servidor de Impressão. Fonte: Acervo 
pessoal
2.7 - Diagrama de Atividade
Diagramas de atividade capturam ações e seus resultados. 
Eles focam o trabalho executado na realização de uma 
operação (método), e suas atividades numa instância de um 
objeto. O diagrama de atividade é uma variação do diagrama 
de estado e possui um propósito um pouco diferente do 
diagrama de estado, que é o de capturar ações (trabalho e 
atividades que serão executados) e seus resultados em termos 
das mudanças de estados dos objetos.
Os estados no diagrama de atividade mudam para um 
próximo estágio quando uma ação é executada (sem ser 
de estado). Outra diferença entre o diagrama de atividade e 
o de estado é que podem ser colocadas como “swimlanes”. 
Uma swimlane agrupa atividades, com respeito a quem é 
responsável e onde estas atividades residem na organização, e 
é representada por retângulos que englobam todos os objetos 
que estão ligados a ela (swimlane).
Um diagrama de atividade é uma maneira alternativa de 
se mostrar interações, com a possibilidade de expressar como 
as ações são executadas, o que elas fazem (mudanças dos 
estados dos objetos), quando elas são executadas (sequência 
das ações), e onde elas acontecem (swimlanes).
Um diagrama de atividade pode ser usado com diferentes 
propósitos inclusive:
• Para capturar os trabalhos que serão executados 
quando uma operação é disparada (ações). Este é o 
uso mais comum para o diagrama de atividade.
• Para capturar o trabalho interno em um objeto.
• Para mostrar como um grupo de ações relacionadas 
pode ser executado, e como elas vão afetar os 
objetos em torno delas.
• Para mostrar como uma instância pode ser executada 
em termos de ações e objetos.
• Para mostrar como um negócio funciona em 
organização, e objetos (fatores físicos e intelectuais 
usados no negócio).
181
Análise de Sistemas II 46
das atividades é normalmente utilizado para demonstrar as 
de uma atividade a ser desempenhada por uma operação 
do sistema. Decisões e condições, como execução paralela, 
também podem ser mostradas no diagrama de atividade. O 
enviadas e recebidas como partes de ações executadas.
Figura 7.8. Diagrama de Atividade – Servidor de Impressão. Fonte: Acervo pessoal
2.8 - Diagrama de Componente
Um componente pode ser tanto um código em 
linguagem de programação como um código executável já 
compilado. Por exemplo, em um sistema desenvolvido em 
Java, cada arquivo .java ou .class é um componente do sistema, 
e será mostrado no diagrama de componentes que os utiliza.
Figura 7.9. Exemplos de componentes. Fonte: Acervo pessoal
O diagrama de componente e o de execução são 
diagramas que mostram o sistema por um lado funcional, 
expondo as relações entre seus componentes e a organização 
de seus módulos durante sua execução.
O diagrama de componente descreve os componentes de 
software e suas dependências entre si, representando a estrutura 
do código gerado. Os componentes são a implementação na 
na arquitetura lógica (classes, objetos e seus relacionamentos). 
Eles são tipicamente os arquivos realizados no ambiente de 
desenvolvimento.
Um componente é mostrado em UML como um 
retângulo com uma elipse e dois retângulos menores do seu 
lado esquerdo. O nome do componente é escrito abaixo ou 
dentro de seu símbolo.
A dependência entre componentes pode ser mostrada 
como uma linha tracejada com uma seta, simbolizando que 
completa. Por exemplo, com o diagrama de componentes é 
facilmente visível detectar que arquivos .dll são necessários 
para executar a aplicação.
para outros componentes. As interfaces podem ser tanto 
interfaces binárias usadas em run-time (tempo de execução). 
Uma interface é mostrada como uma linha, partindo do 
componente e com um círculo na outra extremidade. O nome 
entre componentes podem então apontar para a interface do 
componente que está sendo usada.
Figura 7.10. Diagrama de Componentes. Fonte: Acervo pessoal
2.9
O diagrama de execução mostra a arquitetura física do 
hardware e do software no sistema. Pode mostrar os atuais 
computadores e periféricos, juntamente com as conexões 
que eles estabelecem entre si e pode mostrar também os 
tipos de conexões entre esses computadores e periféricos. 
objetos que são alocados para mostrar quais unidades de 
software são executados e em quais destes computadores são 
executados.
Figura 7.11. Diagrama de Execução – Associações entre Nodes. Fonte: Acervo 
pessoal
O diagrama de execução demonstra a arquitetura run-
time de processadores, componentes físicos (devices), e de 
software que rodam no ambiente onde o sistema desenvolvido 
será utilizado. É a última descrição física da topologia do 
sistema, descrevendo a estrutura de hardware e software que 
executam em cada unidade.
O diagrama de execução é composto por componentes 
que possuem a mesma simbologia dos componentes do 
diagrama de componentes, nodes
físicos que fazem parte do sistema, podendo ser uma máquina 
cliente numa rede local (LAN), uma máquina servidora, uma 
impressora, um roteador, etc., e conexões entre estes nodes e 
182
47
componentes que juntos compõem toda a arquitetura física 
do sistema.
Retomando a aula
A UML, como resultado da fusão de conceitos dos 
de modelagem simples, comum e largamente utilizável por 
usuários destes e de outros métodos. A UML não é um 
processo, nem uma ferramenta, nem uma linguagem de 
programação. Seu objetivo principal é gerar a modelagem dos 
objetos do mundo real garantindo a interoperabilidade dos 
recursos envolvidos no processo de desenvolvimento.
Um Diagrama é uma visão do modelo, apresentado 
da perspectiva de um observador em particular. Fornece 
uma representação parcial do sistema e é semanticamente 
consistente com outras visões.
Os modelos dinâmicos são suportados pelos diagramas 
de estado, sequência, colaboração e atividade. E a modelagem 
funcional é suportada pelos diagramas de componente e 
execução.
Vale a pena
BOOCH, Grady, JACOBSON, Ivar; RUMBAUGH, 
James. UML – guia do usuário. Elsevier, Rio de Janeiro. 
2005.
SOMMERVILLE, I. Engenharia de Software. 8ª Edição. 
Addison Wesley, 2007.
pena ler
Minhas anotações
183
8ºAula
Reusabilidade: Frameworks e 
Design Patterns
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de: 
• entender a importância do conceito de reusabilidade;
• conhecer o que são os Frameworks;
• entender os Design Patterns.
Prezados(as) alunos(as),
Nestaoitava e última aula, estudaremos os conceitos de 
reusabilidade através das estruturas de Frameworks e Design 
Patterns.
Se ao final desta aula tiverem dúvidas, vocês poderão saná-
las através das ferramentas da plataforma de ensino.
Conto com a sua participação, aproveite para ler e refletir 
os objetivos de aprendizagem, afinal da sua participação 
dependerá seu aprendizado.
Bom Trabalho!
Bons estudos!
185
Análise de Sistemas II 50
Seções de estudo
1 – Frameworks
2 – Patterns
3 – Principais diferenças entre Frameworks e Design Patterns
1 - Frameworks
requisitos do sistema a ser desenvolvido tem como 
consequência direta a garantia de boa qualidade do serviço e 
satisfação do pessoal envolvido.
Observando os requisitos de vários sistemas, percebemos 
que muitas aplicações de propósitos semelhantes possuem 
muitas características que são comuns entre elas e ao mesmo 
feitos para um mesmo ramo de atividade. Por exemplo, um 
sistema de vídeo locadora tem uma série de características 
que são usadas da mesma forma em todas as vídeo 
locadoras, porém, muitas particularidades serão sugeridas 
pelo cliente (responsável pela contratação do serviço) e estas 
particularidades nem sempre serão aceitas em outras lojas.
Visando facilitar o trabalho da equipe responsável 
pelo sistema, pode- se projetar uma arquitetura genérica do 
sistema desejado com uma estrutura de classes que poderá 
ser implantada em qualquer loja. A esta arquitetura genérica 
chamamos de framework.
Um framework é então uma arquitetura genérica que 
implementa a arquitetura da solução para uma categoria 
de problema (ou domínio de aplicação). Ele deve ser visto 
como uma “caixa preta”, onde seus componentes podem ser 
utilizados sem que se saiba como foi feita sua implementação. 
Um conjunto de classes abstratas pode ser usado para 
expressar um projeto abstrato. Um framework é um conjunto 
de classes cooperantes que modelam um projeto reutilizável 
software.
framework, ainda, como uma estrutura 
de suporte que pode ser usada em vários projetos de software. 
Um framework pode incluir programas de suporte, scripts, 
bibliotecas de funções e outros softwares para auxiliar no 
desenvolvimento.
frameworks são 
somente bibliotecas de classes, quando na verdade são mais 
do que isto.
O objetivo é criar um esqueleto resultante da análise 
de um domínio particular de aplicação, representada por 
classes genéricas. Uma vez criado o esqueleto, reutiliza-se as 
framework
que está sendo trabalhada. Portanto, as classes genéricas 
contidas no framework 
2 - Patterns
Todas as arquiteturas de software orientado a objetos bem 
estruturadas estão cheias de padrões. A reusabilidade de 
software tem sido cada vez mais procurada, sendo considerada 
até como fator para medição da qualidade do software que está 
sendo projetado, ou seja, qual o grau de atenção que foi dada 
Apesar de ser citado por muitos autores como o tópico 
mais procurado na comunidade de orientação a objetos, 
o Padrão ainda é muito pouco conseguido, pois para ser 
várias vezes, conservando a arquitetura das classes 
padronizadas.
Os Patterns (Padrões) ajudam a criar uma linguagem 
compartilhada para troca de informações entre os problemas 
e suas soluções. Formando uma linguagem comum de 
Patterns para converter as estruturas e mecanismos de nossas 
arquiteturas, estaremos compreendendo a razão para utilizá-
los.
Cada padrão é uma regra de três partes, que expressam 
o relacionamento entre determinado contexto, um certo 
sistema de forças que ocorrem repetidamente neste contexto 
software que possibilita que 
estas forças trabalhem sobre o contexto. Em outras palavras, 
expressa o relacionamento entre o contexto, o problema e a 
solução.
Um pattern é um processo que gera uma solução, mas ele 
pode gerar qualquer uma de um grande número de soluções 
(considerando que não ocorra a mesma solução duas vezes). 
O elemento humano de patterns é o que certamente contribui 
para suas variações e adaptações, e geralmente requer um alto 
grau de criatividade na sua aplicação e combinação. Então, da 
mesma forma que os processos de arquitetura e projeto são 
esforços criativos, a aplicação do pattern também é.
Então, podemos ver que o Pattern envolve uma 
descrição geral de uma solução para um problema que ocorre 
periodicamente com várias metas. Mas ele faz mais do que 
solução é necessária.
Patterns, eles devem prover os 
seguintes:
• resolver o problema: Patterns capturam soluções, 
não apenas abstraem princípios ou estratégias;
• a solução não é óbvia: Muitas técnicas de solução de 
problemas tentam derivar as soluções dos primeiros 
princípios. O melhor Pattern gera uma solução 
para um problema indiretamente, uma passagem 
necessária para os problemas mais difíceis do 
projeto;
• ele descreve um relacionamento; Patterns não 
descrevem apenas módulos, mas descrevem 
profundamente estruturas de sistemas e mecanismos;
• o Pattern 
todos os softwares procuram fornecer conforto 
humano e qualidade de vida; o melhor Padrão 
186
51
explicitamente direciona para a estética e utilidade.
2.1 - Design Patterns 
Um Design Pattern 
dos subsistemas ou componentes de um software, ou o 
relacionamento entre eles. Comumente descreve a estrutura 
recorrente dos componentes de comunicação que resolvem 
um problema genérico de projeto num contexto particular.
Cada pattern deve ser formulado como uma regra que 
estabelece um relacionamento entre o contexto, um sistema 
faz com que estas forças resolvam-no neste contexto.
Um pattern, em geral, tem alguns elementos essenciais, 
a saber:
• o nome do pattern
palavra ou frase curta, que descreve um problema 
de projeto, suas soluções e consequências. Bons 
nomes de patterns formam um vocabulário para 
discussão das abstrações conceituais. Às vezes um 
pattern pode ter mais do que um nome reconhecível 
ou comumente usado na literatura. Neste caso 
é um hábito comum documentar estes apelidos, 
ou sinônimos, com o cabeçalho Alias ou Também 
conhecido como;
• o problema, que descreve quando o pattern deve 
ser aplicado, explica o problema e o contexto; uma 
estrutura do problema que descreve sua intenção: as 
metas e objetivos desejados;
• o , que descreve as pré-condições sobre 
que problema e que solução parecem ocorrer 
periodicamente e em que solução se deseja chegar. 
Ele nos informa a aplicabilidade do pattern;
• a , que descreve os elementos que compõem 
o projeto, seus relacionamentos, responsabilidades 
e colaborações. Relacionamentos estáticos e regras 
dinâmicas descrevem como produzir o efeito 
desejado. Isto é muitas vezes equivalente a obter 
instruções que descrevem como construir os 
produtos de trabalho necessários. A descrição pode 
do pattern, seus participantes e seus colaboradores, 
para mostrar como os problemas são resolvidos. 
A solução pode não descrever somente estruturas 
estáticas, mas também comportamentos dinâmicos. 
A estrutura estática nos diz a forma e organização do 
pattern, entretanto, é o comportamento dinâmico 
que faz o pattern tornar-se vivo. Algumas vezes, 
possíveis variações ou especializações da solução 
são também descritas;
• os 
inicial; como os patterns são aplicados e como 
transformam o contexto; e o contexto resultante 
deixado no seu rastro. Os exemplos ajudam o leitor 
a entender o uso e a aplicabilidade dos patterns. 
Exemplos visuais e analogias podem, entretanto, 
dar uma ajuda especial. Um exemplo pode ser 
suplementado por uma implementação de amostra 
para mostrar de uma vez que a solução pode ser 
realizada;
• e as , que são resultados, vantagens 
e desvantagens da aplicação do pattern.
2.2 - Patterns relacionados
O relacionamento estático e dinâmico entre este pattern 
e outros e a mesma linguagem ou sistema padrão. Patterns 
relacionados podem, entretanto, compartilhar forças. Ele 
também tem frequentemente um contexto inicial ou resultante 
que é compatível com o contexto inicial ou resultante de 
outro pattern.
2.3 - Idiomas
Um idioma é um Patternuma linguagem de programação. Um idioma descreve como 
implementar aspectos particulares dos componentes ou 
os relacionamentos entre eles usando as características da 
linguagem obtida.
2.4 - Qualidades de um Pattern
Um Pattern bem escrito pode exibir muitas qualidades 
desejáveis. A seguir vamos ver uma descrição detalhada destas 
qualidades.
2.5 - Encapsulamento e Abstração
Cada Pattern 
solução em um domínio particular. Patterns podem prover 
ondulações, fronteiras livres que ajudam a cristalizar o espaço 
do problema e da solução, parcelando-o em fragmentos 
distintos interconectados. Eles também servem como 
do domínio e podem ocorrer variando de níveis hierárquicos 
do domínio conceitual.
2.6 - Como escrever Patterns
Escrever bons Patterns é muito difícil. Patterns não podem 
prover fatos somente (como se fosse um manual de referência 
ou um guia do usuário), mas pode contar uma história que 
captura a experiência que eles estão tentando conduzir. Um 
Pattern pode ajudar seus usuários a: compreender o sistema 
existente; customizar o sistema para as necessidades do 
usuário; e construir novos sistemas. O processo de busca 
de Patterns para documentação é chamado de “mineração de 
Patterns
reversa).
Como reconhecer um pattern quando cruzar por um? 
É necessário anotar algumas coisas que você pensa que são 
patterns. Mas será preciso descartar algumas delas que não 
são pattern como um todo, ou elas são somente pedaços 
de patterns, ou simplesmente bons princípios ou regras de 
manuseio que podem formar partes de um pattern particular. 
É importante lembrar que a solução onde não há força 
presente, não é um pattern.
A melhor forma de aprender como reconhecer e 
documentar patterns úteis é aprendendo com outros que já o 
187
Análise de Sistemas II 52
descrevem patterns e tentar ver se você pode reconhecer todos 
os componentes necessários de um pattern e as qualidades 
ser um pattern, pergunte-se: Porque ele é bom?
3
Frameworks de Design Patterns
Design patterns são mais abstratos do que os frameworks. 
código. Um forte do framework é que ele pode ser escrito em 
linguagens de programação e não somente estudado, mas 
executado e reusado diretamente. Em contraste, Design 
Patterns precisam ser implementados cada vez que eles são 
usados. Design Patterns também expõem a intenção e as 
consequências de um projeto;
Design Patterns têm elementos de arquitetura menores 
que nos frameworks. Um framework típico contém muitos design 
patterns, mas o contrário nunca acontece;
Design Patterns são menos especializados do que 
frameworks. Frameworks sempre têm um domínio de aplicação 
particular. Em contraste, design patterns podem ser usados em 
quase todos os tipos de aplicações. Enquanto muitos design 
patterns especializados são certamente possíveis, estes não 
podem igualmente impor uma arquitetura de aplicação.
3.1 - Conclusões sobre a 
comparação
Os Patterns não garantem a reutilização do software ou 
alta produtividade, aliás, eles não garantem nada, não fazem 
nada que possa tirar a pessoa do processo criativo. Ele 
meramente traz esperança de fortalecimento para uma pessoa 
possivelmente inexperiente, porém capaz e criativa
Patterns são apenas mais uma arma no arsenal do 
desenvolvedor. Atribuir muito mais a ele é contra produtivo.
A utilização de Patterns acelera o processo criativo do 
métodos que são idênticos em muitos outros sistemas com a 
mesma aplicação.
A utilização de Patterns e Frameworks deverá se tornar um 
software
quem os está utilizando, ou seja, a criatividade e a percepção do 
como um todo deverá estar bem organizada para que se possa 
utilizar adequadamente estes dois recursos e assim aproveitar 
o máximo que eles oferecem.
Retomando a aula
 1 – 
Um framework é então uma arquitetura genérica que 
implementa a arquitetura da solução para uma categoria de 
problema (ou domínio de aplicação).
2 – 
Um Design Pattern 
dos subsistemas ou componentes de um software, ou o 
relacionamento entre eles. Comumente descreve a estrutura 
recorrente dos componentes de comunicação que resolvem 
um problema genérico de projeto num contexto particular.
e 
Design patterns são mais abstratos do que os frameworks. 
Frameworks patterns 
forte do framework é que ele pode ser escrito em linguagens 
de programação e não somente estudado, mas executado e 
reusado diretamente.
Vale a pena
________. Frameworks: conceitos gerais. Puc-Rio. 
Disponível por www em http:// www.maxwell.lambda.
ele.puc-rio.br/8623/8623_3.PDF. Acesso em 10/08/2013. 
CAVALHEIRO, Gerson. Framework. Universidade Federal 
de Pelotas. Disponível por www em http://
gersonc.anahy.org/reppoo/PooApoio14-Framework.pdf. 
Acesso em 30/08/2013.
pena ler
• LEITE, Alessandre Ferreira. Frameworks e padrões de 
projeto. Disponível por www em http://www.devmedia.
com.br/frameworks-e-padroes-de-projeto/1111. Acesso 
em 15/11/2013.
pena acessar
Referências
BOOCH, Grady, JACOBSON, Ivar; RUMBAUGH, 
James. UML – guia do usuário. Elsevier, Rio de Janeiro. 2005.
CAVALHEIRO, Gerson. Framework. Universidade 
Federal de Pelotas. Disponível por www em http://gersonc.
anahy.org/reppoo/PooApoio14- Framework.pdf. Acesso 
em 30/08/2013.
CAVALHEIRO, Gerson. Frameworks: conceitos gerais. 
188

Mais conteúdos dessa disciplina