Buscar

Analise e Projeto Orientado a Objetos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
 
 
 
 
 
 
 
 
 
 
Análise e Projeto 
Orientados a Objeto 
 
 
 
 
 
 
 
Autor: 
Haline Gregório Vicente 
 2 
 
 
 
Apostila de Análise e Projeto Orientados a Objeto 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
EmentaEmentaEmentaEmenta 
 3 
 
1. Introdução 
 
2. Conceitos 
 Objeto 
 Tipo de Objeto 
 Métodos 
 Encapsulamento 
 Classe 
 Herança 
 
3. Modelos Orientados Objeto 
 Modelos da Realidade 
 Ferramentas 
 Engenharia da Informação 
 
4. Análise da Estrutura do Objeto 
 Objetos e Tipos de Objeto 
 Associações de Objetos 
 Hierarquias de Generalização e Composição 
 Diagramas de Objeto-Relacionamento 
 Esquemas de Objetos 
 
5. Banco de Dados Orientados a Objeto 
 O Banco de Dados Relacional 
 Banco de Dados Ativos 
 Desempenho 
 Diferenças entre BDR e BDOO 
 
6. Funções 
 Funções Inversas 
 Restrições à Cardinalidade 
 Tipos de atributos convencionais 
 Expressão da Função 
 
 7. Diagramas de Fluxos de Objeto 
 7.1. A Função de um Projeto 
 7.2.Diagramas de Fluxos de Dados 
 7.3. Diagramas de Fluxos de Objetos 
 7.4.Nivelamento 
 
 
 
História 
 4 
 
Antes dos Anos 70 
 
� Técnicas de Documentação de Programas 
� Fluxogramas 
� HIPO (Hierarchy plus Input Process Output-produto IBM) 
� Outras técnicas 
� (excesso de diagramas) 
Meio dos Anos 70 
 
� Análise Estruturada - Tom de Marco, Yourdon, Gane. 
� Projeto Estruturado - Constantine, Myers, Yourdon, Page-Jones 
 
Anos 80 
 
� Modelagem de Informações 
� Modelagem Essencial 
� Sistemas de Tempo Real 
� Ferramentas CASE (Computer Aided Software Engineering) 
 
Anos 90 
 
� Análise e Projeto Orientados a Objetos 
� Coad 
� Booch 
� Rambaugh (OMT) 
� Jacobson 
� Coleman (FUSION) 
� UML 
 
 
 5 
 
Anos 2000... 
 
• WEB 
• Componentes 
• Frameworks 
• eXtreme Programming (XP) 
• Orientação a Aspectos (AOP) 
• Processos Ágeis 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1. Introdução 
 6 
 
 As técnicas orientadas a objeto permitem que o software seja construído de 
objetos que tenham um comportamento especifico. Os próprios objetos podem ser 
construídos a partir de outros, os quais, por sua vez, podem ainda ser construídos de 
outros. 
 A análise de sistemas no mundo orientado a objeto é feita analisando-se os objetos 
e os eventos que interagem com esses objetos. O projeto de software é feito reusando-se 
classes de objetos existentes e quando necessário, construindo-se novas classes. 
 Técnicas orientadas a objeto podem ser usadas para simplificar o projeto de 
sistemas complexos. O sistema pode ser visualizado como uma coleção de objetos, 
estando cada um dos objetos em um determinado estado. Os objetos são construídos a 
partir de outros objetos. 
 As técnicas orientadas a objeto tornam-se muito poderosas quando combinadas a 
outras tecnologias (CASE e I-CASE Programação Visual, Geradores de Código, 
Repositório, Engenharia de Informação, entre outros). 
 A análise e o projeto orientados a objeto modelam o mundo em termos de objetos 
que tem propriedades e comportamentos e eventos que disparam operações que mudam o 
estado dos objetos. Os objetos interagem com outros objetos. 
 A modelagem e o projeto orientados a objeto são os paradigmas que devem 
integrar todas as ferramentas e técnicas poderosas para a criação de software. Estratégia 
de desenvolvimento baseada no conceito de que o sistema deve ser construído a partir de 
componentes reutilizáveis, chamados de objetos. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2.Conceitos 
 7 
Entre as idéias fundamentais básicas para a tecnologia orientada a objeto incluem-se: 
• Objetos; 
• Classes; 
• Métodos; 
• Herança; 
• Encapsulamento. 
Cada conceito é uma idéia ou um entendimento pessoal que temos do nosso mundo. 
Os conceitos que adquirimos nos permitem dar sentido sobre as coisas do nosso mundo. Essas 
coisas às quais nossos conceitos se aplicam são denominados objetos. 
 
ObjetoObjetoObjetoObjeto 
 
� Um objeto pode ser real ou abstrato. 
� Os objetos possuem informações (contém dados) e desempenham ações (possuem 
funcionalidade). 
� Qualquer coisa à qual um conceito ou tipo de objeto se aplica – uma instância de 
um conceito ou tipo de objeto. 
� Um objeto é uma instância de uma classe. 
 
Exemplo: 
 
• Uma fatura; 
• Uma organização; 
• Um vôo de avião; 
• Uma pessoa; 
• Um lugar. 
Na análise e no projeto OO, estamos interessados no comportamento do objeto. As 
operações são codificadas como métodos. A representação de software OO do objeto é, 
dessa forma, uma coleção de tipos de dados e métodos. No software OO: Um objeto é 
qualquer coisa, real ou abstrata, a respeito da qual armazenamos dados e os 
métodos que os manipulam. 
 
 
Um tipo de objeto é uma categoria de objeto. (entidade) 
Um objeto é uma instância de um tipo de objeto. (atributo) 
 
 
 8 
Exemplo: um tipo de objeto poderia ser Fatura e um objeto poderia ser nº. 51.783. 
 
OBS: O termo objeto, porém, é diferente do termo entidade. A entidade preocupa-se apenas 
com os dados enquanto o objeto preocupa-se tanto com os dados como com os métodos com os 
quais os dados são manipulados. 
 
MétodosMétodosMétodosMétodos 
 
� Os métodos especificam a maneira pela qual os dados de um objeto são 
manipulados. 
� Uma especificação dos passos pelos quais uma operação deve ser executada. 
� Ele é um script de implementação de uma operação. 
� Diferentes métodos podem ser usados para executar a mesma operação. 
� Os métodos de um tipo de objeto referenciam somente as estruturas de dados 
desse tipo de objeto. 
� A ação que um objeto ou uma classe podem desempenhar. 
� Os métodos são similares às funções e procedures do universo da programação 
estruturada. 
 
Um objeto é, dessa forma, uma coisa, com suas propriedades representadas pelos 
tipos de dados e seu comportamento representado pelos métodos. 
 
EncapsulamentoEncapsulamentoEncapsulamentoEncapsulamento 
 
 O ato de empacotar ao mesmo tempo dados e objetos é denominado encapsulamento. O 
objeto esconde seus dados de outros objetos e permite que os dados sejam acessados por 
intermédio de seus próprios métodos. Isso é chamado de ocultação de informações 
(information hiding). 
 
 
� O encapsulamento protege os dados do objeto do uso arbitrário e não-intencional. 
� Encapsulamento é o resultado (ou ato) de ocultar do usuário os detalhes da 
implementação de um objeto. 
� O Encapsulamento é importante porque separa a maneira como um objeto se 
comporta da maneira como ele é implementado. 
� A definição de como implementar os conhecimentos ou ações de uma classe, sem 
informar como isto é feito. 
 9 
 
Exemplo: 
 
 
 
 Cada objeto encapsula uma estrutura de dados e métodos. Uma estrutura de dados 
encontra-se no centro de um objeto. O objeto é manipulado por métodos que implementam as 
operações permitidas. A estrutura de dados pode ser usada somente com os métodos. Essa 
restrição ao acesso é denominada encapsulamento, que protege os dados contra adulteração. Os 
dados do objeto não podem ser usados, exceto com esses métodos. 
 
 
ClasseClasseClasseClasse 
 
 O termo classe refere-se à implementação de software de um tipo de objeto. Um tipo de 
objeto especifica uma família de objetos sem estipular como o tipo e o objeto são 
implementados. Os tipos de objetos são especificados durante a análise OO. Os tipos de 
objetos são implementados como módulos enquanto na linguagem orientada a objeto, os tipos 
de objetos são classificados como classes. 
 
� Uma classe é uma implementação de um tipo de objeto. 
� Uma classe especifica uma estrutura de dados e os métodos operacionais 
permissíveis que se aplicam a cada um de seus objetos. 
� Uma classe pode ter sua própria estrutura de dados e métodos, bem como herda - 
lá de sua superclasse. 
 
Exemplo: Classe- Objeto - Método - Atributo.X+Y=XY 
abc 
Estrutura Encapsulada de Dados 
Operações permissíveis - a única 
maneira de manipular a estrutura de 
dados. O método da operação está 
oculto do usuário. 
Objeto 
 10 
 
 
Classes Abstratas e Concretas 
 
 A classe abstrata é uma classe que não possui objetos instanciados a partir dela, 
enquanto a classe concreta possui objetos instanciados (criados) a partir dela. 
 
 
Exemplo: No mundo real, por exemplo, existem automóveis e aviões, mas nada que seja 
simplesmente um veiculo (em outras palavras, se não for um carro ou avião, não é de nosso 
interesse). Isso significa que podemos instanciar objetos como carros e aviões, mas nunca 
iremos criar objetos veículos. As classes abstratas são criadas quando necessitamos de uma 
classe que implemente recursos comuns a duas ou mais classes. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Pessoa
Nome
Endereço
Telefone
Idade
Altura
Registrar()
Matricular()
Pagar()
Estudar()
Cadastrar()
Classe 
 
A 
T 
R 
I 
B 
U 
T 
O 
S 
M 
É 
T 
O 
D 
O 
S 
Pedro
Maria
Objetos 
Veículo 
Avião Carro 
Avião – nº. de motores, autonomia, 
velocidade máxima, altitude máxima, nº. 
passageiros (arremeter, aterrissar, glissar, 
aumentar e diminuir a velocidade). 
Carro - nº. passageiros, autonomia, marca, 
modelo (fazer curvas, aumentar e diminuir a 
velocidade). 
Veículo - nº. passageiros, autonomia 
(aumentar e diminuir a velocidade). 
 
 11 
HerançaHerançaHerançaHerança 
 
 
É comum haver similaridades entre diferentes classes. Frequentemente, duas ou mais 
classes irão compartilhar os mesmos atributos e/ou métodos. Como nenhum de nós deseja 
reescrever várias vezes o mesmo código, seria interessante se algum mecanismo pudesse tirar 
proveito dessas similaridades. A herança é esse mecanismo. Por intermédio da herança, é 
possível modelar relacionamentos do tipo “é” ou “é semelhante”, o que nos permite reutilizar 
rotinas e dados já existentes. 
 Uma subclasse herda as propriedades de sua classe-mãe; uma subclasse herda as 
propriedades das subclasses e assim por diante. Uma subclasse pode herdar a estrutura de 
dados e os métodos, ou alguns dos métodos, de sua superclasse. Ela também tem métodos e às 
vezes, tipos de dados próprios. 
 
 
 
 Herança – permite tirar proveito das similaridades entre as classes representadas por 
relacionamentos do tipo “é” ou “é semelhante”. 
 
 
 
 
 Subclasse – uma classe que é um subtipo de uma ou mais classes (denominadas 
superclasses). Como tal, ela herda todas as características de suas superclasses. Em outras 
palavras, todas as características de uma classe são reusáveis por suas subclasses. Se a classe B 
herda de A, então dizemos que B é uma subclasse de A. 
 
 Superclasse – Uma classe que é um supertipo de uma ou mais classes (tb chamadas de 
subclasses). Como tal, ela é uma classe a partir da qual todas as suas características são 
herdadas por suas subclasses. Em outras palavras, todas as características de uma superclasse 
são reusáveis por aquelas classes que são seus subtipos. Se a classe B herda de A, então 
dizemos que A é uma superclasse de B. 
 
 
Exemplo 1: A figura abaixo mostra uma classe e uma subclasse. A subclasse tem os mesmos 
métodos de sua superclasse, mas tem tb o método G. Ás vezes, uma classe herda propriedades 
de mais de uma superclasse. Isso é denominado herança múltipla. 
 
 
 12 
 
 
Exemplo 2: Pessoa – professor – aluno 
 
 
 
 
OBS: As subclasses deverão sempre ficar abaixo da superclasse e o semicírculo deverá sempre 
apontar da subclasse para a superclasse. 
 
 
Pessoa 
Professor 
Aluno 
A 
D 
H 
D A 
H G 
Classe 
Herança 
Subclasse 
 13 
Herança Simples e MúltiplaHerança Simples e MúltiplaHerança Simples e MúltiplaHerança Simples e Múltipla 
 
Quando uma classe herda características somente de uma outra classe, dizemos que esta é uma 
herança simples. Quando uma classe herda de duas ou mais classes, temos um caso de herança 
múltipla. Em qualquer circunstância, o fato que você deverá lembrar é o seguinte: a subclasse 
herda todos os atributos e métodos das superclasses. 
 
 
Hierarquias de GeneralizaçãoHierarquias de GeneralizaçãoHierarquias de GeneralizaçãoHierarquias de Generalização 
 
 Um conjunto de classes relacionadas por meio da herança. Uma boa maneira de 
organizarmos os conhecimentos é arranjando-o em hierarquias do geral para o mais especifico. 
Por exemplo, a figura abaixo descreve uma hierarquia com o conhecimento do tipo de objeto 
Pessoa no topo. Isso significa que Pessoa é um tipo de objeto mais geral do que empregado e 
estudante. Isso significa que empregado e estudante são subtipos de pessoa, ou, inversamente, 
que pessoa é um supertipo de empregado e estudante. 
 
 Pessoa 
 
 
 
 Empregado Estudante 
 
 
Vendedor Gerente 
 
Pássaro Lagarto 
Dragão 
Pássaro – Envergadura de assas, Velocidade 
máxima (comer/voar). 
Lagarto – Nº de garras, cor das escamas 
(comer/voar) 
Dragão – Nome, Envergadura de assas, 
Velocidade máxima, Nº. de garras, cor das 
escamas (expelir/capturar donzelas/comer) 
 14 
Diferenças entre análise e projeto: 
Primeira alternativa: 
1. A análise modela o problema e consiste das atividades necessárias para entender o 
domínio do problema (o que deve ser feito). É uma atividade de investigação. 
2. O projeto modela a solução e consiste das atividades de criação (como pode ser 
feito) 
 
Segunda alternativa: 
1. A análise consiste de todas as atividades feitas com ou para o conhecimento do 
cliente. A informação produzida é aquela que o cliente deve discutir e aprovar 
2. O projeto inclui as atividades que resultam em informação que interessa apenas ao 
programador 
3. Com essa definição, a análise invade um pouco o "lado da solução", pois o cliente 
deve discutir alguns tipos de interações que ocorrerão na interface do usuário, etc. 
 
 15 
 
Diagramas de ObjetoDiagramas de ObjetoDiagramas de ObjetoDiagramas de Objeto----RelacionamentoRelacionamentoRelacionamentoRelacionamento 
 Os tipos de objetos têm relação com outros tipos de objeto. Os diagramas de 
entidade-relacionamento são usados há anos na análise convencional de sistemas. 
Os diagramas mostram as associações entre tipos de entidades. Um diagrama de 
objeto-relacionamento é representado da mesma maneira que o diagrama de 
entidade relacionamento. 
 Veja a figura abaixo: 
 Um diagrama de objeto-relacionamento é essencialmente o mesmo que um 
diagrama de entidade-relacionamento, onde cada retângulo poderia ser um tipo de 
objeto na analise e projeto orientado a objeto. Fica mais fácil o entendimento do 
modelo quando os tipos de objetos e as relações são representados num diagrama 
de objeto-relacionamento; supertipos e subtipos num diagrama de generalização. 
 
 
 
 
Cliente Pedido 
Linha de 
Pedido 
Produto 
Estoque de 
Produto Armazém 
 16 
Diagramas Orientados a Objeto 
Resumo dos símbolos usados para a analise e projeto orientado a objeto. Como 
já sabemos um objeto, como uma entidade, é uma coisa real ou abstrata. Nós, por 
conseguinte, usamos um retângulo para desenhar tipos de objetos. Recomenda-se 
que os tipos de objetos e classes sejam desenhados com caixas de cantos vivos e as 
atividades com caixas de cantos arredondados. 
Dados 
Caixa de cantos vivos 
Representam dados (tipo 
De entidade, subtipos,registros) 
 
 
 
 
Cardinalidade (multiplicidade) 
 
 
Exclusividade Mútua 
Uma e somente uma das 
Ramificações são tomadas 
 
 
A 
A 
A 
A 
A 
B 
B 
B 
B 
B 
 17 
Atividades 
Caixa de cantos arredondados 
Representam atividades (funções, 
processos,procedimentos) 
 
 
 
 
 
 
A 
X 
Y 
Z 
A está associado a 
X, Y ou Z. 
A 
 
A 
A 
A 
A 
B 
B 
B 
B 
B 
Mínimo Máximo 
0 
 
 
 
1 
 
 
0 
 
 
1 
 
 
Mais do 
que 1 
 
 
1 
 
 
 
1 
 
 
Mais do 
que 0 
 
Mais do 
que 1Mais do 
que 1 
Fluxo ou seqüência 
 18 
Multiplicidade de Associação (cardinalidade): 
• É o número de instâncias de uma classe relacionada com uma 
instância de outra classe. 
• Para cada associação, há uma multiplicidade em cada direção. 
 
A notação usada pela UML, para os indicadores de multiplicidade, é: 
 
 Muitos -------- 
 Apenas Um ----------- 
 Zero ou Muitos------- 
 Um ou Muitos-------- 
 Zero ou Um--------- 
 
 
UML 
Linguagem de Modelagem Unificada 
 
1. Introdução 
 
As empresas modernas têm descoberto que o gerenciamento da informação como 
um recurso é uma questão estratégica para a sobrevivência em mercados cada vez mais 
competitivos e frente a fontes de recursos cada vez mais escassas. 
Diante dessa situação, os sistemas de informação tornaram-se peças-chave no 
gerenciamento da informação corporativa, e o sucesso no seu desenvolvimento, operação 
e manutenção tem significado, para as empresas, flexibilidade e capacidade competitiva 
no mercado, permitindo mais precisão e agilidade na tomada de decisão sobre o uso 
eficiente desses recursos. E os sistemas atuais tendem, cada vez mais, a serem mais 
complexos, maiores e dinâmicos do que os sistemas concebidos anteriormente. Portanto 
necessitam ser mais organizados, versáteis e flexíveis. 
Uma das grandes preocupações das organizações é a necessidade de se criar 
sistemas de informação rápidos, com qualidade e baixo custo. Por isto, tornou-se 
imprescindível a adoção de métodos que possam proporcionar mais estabilidade ao 
processo de desenvolvimento de sistemas de informação. 
Os métodos convencionais de desenvolvimento de sistemas (análise e projeto 
estruturado) apresentam algumas limitações que introduzem pontos de descontinuidade 
no processo de desenvolvimento de sistemas de informação. Estas limitações ocorrem 
principalmente por serem utilizados diagramas diferentes em cada fase do ciclo de vida 
de um sistema, acarretando perda de informação e inconsistências na transição de um 
diagrama para outro. 
* 
1 
 
0..* 
 
1..* 
 
0..1 
 19 
 Os métodos orientados a objetos utilizam um modelo único, o qual é utilizado em 
todas as fases do ciclo de vida de um sistema. Dessa forma, o processo de 
desenvolvimento de sistemas é simplificado, interativo e controlável. Cada iteração 
acrescenta características ao modelo, de forma a haver menores possibilidades de 
inconsistências e erros. 
O desenvolvimento de sistemas baseado em objetos concentra a maior parte do 
esforço na fase de análise de requisitos. Esse esforço adicional é compensado pela 
implementação mais rápida e mais simples do projeto. O sistema resultante é mais 
completo e de fácil manutenção devido ao encapsulamento e ao reuso. 
Grande parte de projetos de desenvolvimento de sistemas fracassam devido 
principalmente à má administração de riscos, construção de sistemas errados e por 
superestimar a tecnologia. 
Entre os riscos, podemos citar problemas de domínio de tecnologia, riscos 
financeiros, impossibilidade de fazer integração, inexistência de testes de requerimentos e 
código, requerimentos incompletos, ausência de interação com o usuário etc. 
Uma das maneiras de evitar o fracasso é definir um processo de desenvolvimento 
de sistemas. 
O processo de desenvolvimento de sistemas de informação é formado por um 
conjunto padronizado e documentado de atividades para todas as fases do ciclo de 
desenvolvimento. 
O processo de desenvolvimento tem que ser controlado e medido para facilitar a 
gerência dos riscos do projeto em cada fase, disciplinar a criatividade quando o 
desenvolvimento é feito em equipe e assegurar a qualidade do sistema. 
A escolha de uma metodologia constitui um dos passos mais importantes no 
processo de desenvolvimento de sistemas, e é através dela que as equipes e seus membros 
mantêm uma linguagem comum durante todo o ciclo de desenvolvimento. 
Os principais benefícios na adoção de metodologias são: 
• Permitir o compartilhamento da mesma filosofia de trabalho entre os 
desenvolvedores de sistemas de informação corporativos; 
• Evitar trabalho desnecessário; 
• Aumentar a produtividade; 
• Estabelecer pontos de verificação para acompanhamento e controle de 
execução do projeto de desenvolvimento; 
• Facilitar o envolvimento do usuário no projeto; 
• Prover uma notação e linguagem comum. 
 
Com a adoção de tecnologias orientadas a objetos o processo de desenvolvimento 
passa a ter um enfoque iterativo, com maior participação do usuário, foco em redução de 
riscos, alto nível de reuso e flexibilidade em relação aos requerimentos. 
O controle para o processo iterativo é suportado pelo "Rational Objectory 
Process". O Rational Objectory Process é estruturado em duas dimensões: 
 
Tempo - divisão do ciclo de vida em fases e iterações. 
 
 20 
Componentes - produção de um conjunto específico de artefatos com atividades 
bem definidas. 
 
 
A estruturação de um projeto através da dimensão 'tempo' envolve a adoção das 
seguintes fases: 
 
• Iniciação - especifica a visão do projeto. 
 
• Elaboração - analisa o domínio do problema, projeta a arquitetura apropriada, 
identifica elementos de riscos e desenvolve um plano abrangente de como será 
implementado o projeto. 
 
• Construção - desenvolve o produto através de iterações incrementais para a 
transição para os usuários. 
 
• Transição - promove a transição do produto para os usuários (liberação de 
versão e treinamento). 
Cada fase é concluída quando os objetivos específicos da respectiva fase são 
alcançados. As fases se tornaram mais flexíveis, sendo possível encontrar diversas partes 
do sistema em fases diferentes do ciclo de desenvolvimento. 
 Cada fase do ciclo de desenvolvimento de sistemas deve ser descrita de acordo 
com os seguintes tópicos: 
• Objetivos; 
• Produtos; 
• Atividades; 
• Pessoas envolvidas; 
• Medidas para avaliar a qualidade dos produtos (métricas). 
 
A estruturação de um projeto através da dimensão 'componente' envolve a 
realização das seguintes atividades realizadas ao longo do processo de desenvolvimento: 
 
• Análise de requisitos - descrição do que o sistema deve fazer. 
 
• Análise – detalhamento das atividades do sistema. 
 
• Projeto - como o sistema será implementado. 
 
• Implementação - desenvolvimento do código que resultará no sistema 
executável. 
 
• Teste - verificação do sistema inteiro. 
 21 
 
2. Histórico da UML 
 
Os estudos sobre a tecnologia de objetos iniciaram-se na década de 1980 com 
ênfase nas linguagens de programação. No final da mesma década começaram a surgir os 
métodos de análise e projeto. Os principais métodos foram de: 
• SHLAER & MELLOR (1989 e 1991); 
• COAD & YOURDON (1991); 
• COAD & NICOLA (1993); 
• COAD et al. (1995); 
• WIRFS-BROCK et al. (1990); 
• BOOCH (1994 e 1995); 
• RUMBAUGH et al. (1991 e 1996); 
• MARTIN & ODELL (1994 e 1995); 
• JACOBSON (1994 e 1995). 
 
Todos os métodos eram muito similares, apesar da existência de diferentes 
notações para representar o mesmo conceito, o que na verdade, causava muita confusão 
entre os técnicos e competição entre os metodologistas, o que provocou a “guerra dos 
métodos”. 
Em 1994 James Rumbaugh e Grady Booch iniciaram o trabalho de unificação dos 
métodos Booch e OMT. 
Em 1995 no OOPSLA , Booch e Rumbaught apresentaram a documentação da 
versão 0.8 do método unificado e anunciaram a integração de Ivar Jacobson na equipe, 
formando assim o que eles denominaram de “Three amigos”. 
Durante 1996 eles trabalharam no método que passou a chamar de Unified 
Modeling Language (UML) e a Object Management Group (OMG) iniciou um esforço 
para padronização na área de métodos. 
Os esforços de Rumbaugh, Booch e Jacobson resultaram as versões 0.9 e 0.91 da 
UML em junho e outubro de 1996 respectivamente. 
A UML é a sucessora da linguagem de modelagem encontrada nos métodos 
Booch, OOSE/Jacobson, OMT e outros como Modelos de Entidades e Relacionamentos. 
Cada um desses métodos era reconhecidomediante alguma forte característica. O 
OOSE é orientado a ‘use case’ e provê um excelente recurso para a análise de requisitos. 
A OMT foi expressiva para análise e sistemas centrados a dados. Booch’93 foi relevante 
na fase de projeto e construção de sistemas voltados para Engenharia. 
 22 
Durante 1996 a Rational Software Corporation contou com a participação de 
outras Instituições parceiras como: Hewlett-Packard, IBM, Microsoft, Oracle, Unisys, 
Platinum Technology, etc. Essa colaboração contribuiu para a produção da versão 1.0, 
uma versão bem definida, expressiva, poderosa e aplicável, a qual foi submetida a OMG 
para adoção. 
Em setembro de 1997 liberaram a versão1. 1 da UML e em dezembro a mesma 
foi aprovada como padrão pela OMG. 
Com a unificação dos métodos a UML alcançou dois objetivos: 
• Acabou com as diferenças existentes entre os métodos anteriores; 
• Unificaram as perspectivas entre os diferentes tipos de sistemas, fases de 
desenvolvimento e conceitos internos. 
 
 
2.1 – Método 
 
A UML não é um método é uma linguagem de modelagem designada para 
especificar, visualizar, construir e documentar um sistema. A linguagem de modelagem é 
a notação que o método utiliza para expressar projetos enquanto que o processo indica 
quais passos seguir para desenvolver um projeto. 
 A especificação da UML consiste de duas partes: 
• Semântica - especifica a sintaxe abstrata e a semântica dos conceitos de 
modelagem estática e dinâmica de objetos; 
• Notação – especifica a notação gráfica para a representação visual da 
semântica. 
A UML suporta o desenvolvimento iterativo e incremental. Desenvolvimento 
iterativo e incremental é o processo de desenvolvimento de sistemas em pequenos passos. 
Uma iteração é um laço de desenvolvimento que resulta na liberação de um subconjunto 
de produtos que evolui até o produto final percorrendo as seguintes atividades: 
 
• Análise de requisitos 
• Análise 
• Projeto 
• Implementação 
• Teste 
 
O detalhamento de cada etapa destas atividades define o método de 
desenvolvimento de sistemas. 
 
 
2.2 - Análise de requisitos 
 
Esta etapa se caracteriza pela definição do comportamento do sistema, ou seja, 
como o sistema age ou reage, descrevendo o relacionamento entre o ambiente e o 
sistema. Deve ser uma definição de necessidades do usuário e não uma proposta de 
solução. O usuário deve indicar os requisitos prioritários para o sistema. 
 23 
O grupo de análise deve identificar as necessidades do usuário. Decisões do 
projeto impostas não são características essenciais do domínio do problema. 
 A análise de requisitos compõe-se dos seguintes diagramas: 
 
• Diagrama de caso de uso; 
• Diagrama de seqüência; 
• Diagrama de colaboração; 
 
Para realizar a análise de requisitos, primeiramente deve-se: 
 
• Identificar objetivo e características do sistema; 
• Identificar os requisitos essenciais; 
• Descrever as necessidades do usuário; 
• Elaborar diagrama de caso de uso; 
• Elaborar diagrama de seqüência; 
• Elaborar diagrama de colaboraçã 
 
 
 3. Conceitos 
 
UML é uma linguagem visual para especificação (modelagem) de sistemas 
orientados a objeto. A UML privilegia a descrição de um sistema seguindo três 
perspectivas: 
1. Os diagramas de classes - (Dados estruturais); 
2. Os diagramas de casos de uso (Operações funcionais); 
3. Os diagramas de seqüência, atividades e transição de Estados (Eventos 
temporais). 
Os casos de uso de um projeto de software são descritos na linguagem UML 
através de Diagramas de Casos de Uso (Use Case). Diagrama de “Use Case”: É um 
diagrama usado para se identificar como o sistema se comporta em várias situações que 
podem ocorrer durante sua operação. Descrevem o sistema, seu ambiente e a relação 
entre os dois. Os componentes deste diagrama são os atores, os “Use Case” e os 
relacionamentos. Casos de uso e Relacionamentos. Ainda pode-se usar as primitivas 
Pacotes e Notas. 
 
Ator: Representa qualquer entidade que interage com o sistema durante sua execução 
essa interação se dá através de comunicações (troca de mensagens). Um ator pode ser 
uma pessoa (usuário, secretaria, aluno...), um dispositivo (impressora, máquina...), 
hardware (placa de modem, scaner...), softwares (sistema de bd, aplicativos...), etc. 
 
 
 
 
 24 
Algumas de suas características são descritas abaixo: 
 
• Ator não é parte do sistema. Representa os papéis que o usuário do sistema 
pode desempenhar. 
• Ator pode interagir ativamente com o sistema. 
• Ator pode ser um receptor passivo de informação. 
• Ator pode representar um ser humano, uma máquina ou outro sistema. 
 
Representação: 
 
 
 
 
 
 
 
 
 
OBS: Atores representam, na verdade, papeis desempenhados por pessoas, dispositivos 
ou outros quando interagem com o sistema. Um ator cujo identificador seja ALUNO não 
representa um aluno, mais sim um aluno qualquer, uma pessoa que esteja interagindo 
com o sistema na qualidade de aluno. 
 
Use Case: Como foi exemplificado acima, é uma seqüência de ações que o sistema 
executa e produz um resultado de valor para o ator. Modela o dialogo entre os atores e o 
sistema; é um fluxo de eventos completos. Algumas de suas características são descritas 
abaixo: 
 
• Um “Use Case” modela o diálogo entre atores e o sistema. 
• Um “Use Case” é iniciado por um ator para invocar uma certa funcionalidade 
do sistema. 
• Um “Use Case” é fluxo de eventos completo e consistente. 
• O conjunto de todos os “Use Case” representa todas as situações possíveis de 
utilização do sistema. 
 
Relacionamento: Os relacionamentos ligam as classes/objetos entre si criando 
relações lógicas entre estas entidades. Os relacionamentos podem ser dos seguintes tipos: 
• Associação: É uma conexão entre classes, e também significa que é uma conexão 
entre objetos daquelas classes. Em UML, uma associação é definida com um 
relacionamento que descreve uma série de ligações, onde a ligação é definida como a 
semântica entre as duplas de objetos ligados. 
• Generalização: É um relacionamento de um elemento mais geral e outro mais 
específico. O elemento mais específico pode conter apenas informações adicionais. 
Ator Use Case 
 25 
Uma instância (um objeto é uma instância de uma classe) do elemento mais 
específico pode ser usada onde o elemento mais geral seja permitido. 
 
Os relacionamentos em um diagrama de casos de uso podem envolver dois atores e 
dois casos de uso ou um ator e um caso de uso e assim sucessivamente. O relacionamento 
é representado através de uma 
 
 
Exemplo: Diagrama de “Use Cases” para um sistema automatizado de Matrícula num 
Curso 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tipo de Relacionamento - Associações 
 
Uma associação representa que duas classes possuem uma ligação (link) entre elas, 
significando, por exemplo, que elas “conhecem uma a outra”, “estão conectadas com”, 
“para cada X existe um Y” e assim por diante. Classes e associações são muito poderosas 
quando modeladas em sistemas complexos. 
 
 
 
 
 
Professor 
Selecionar 
curso para 
ensinar 
Pedir lista 
dos 
matriculados 
Gerencia
r 
Manter 
informação de 
Manter 
informação de 
professor 
Gerar catalogo 
Manter 
informações dos 
cursos 
Sistema 
de 
cobrança 
Matrícula 
nos 
Cursos 
Aluno 
 26 
1.1 Associações Normais 
 
O tipo mais comum de associação é apenas uma conexão entre classes. É 
representada por uma linha sólida entre duas classes. A associação possui um nome 
(junto à linha que representa a associação), normalmente um verbo, mas substantivos 
também são permitidos. 
Pode-se também colocar uma seta no final da associação indicando que esta só pode 
ser usada para o lado onde a seta aponta. Mas associações também podem possuir dois 
nomes, significando um nome para cada sentido da associação. 
Para expressar a multiplicidade entre os relacionamentos, um intervalo indica 
quantos objetos estão relacionados no link. O intervalo pode ser de zero para um (0..1), 
zero para vários (0..*ou apenas *), um para vários (1..*), dois (2), cinco para 11 (5..11) e 
assim por diante. É também possível expressar uma série de números como (1, 4, 6..12). 
Se não for descrita nenhuma multiplicidade, então é considerado o padrão de um para um 
(1..1 ou apenas 1). 
Cliente Conta CorrentePossui �
 É possuído 
 
Duas classes se relacionando por associação normal 
 
No exemplo acima vemos um relacionamento entre as classes Cliente e Conta 
Corrente que se relacionam por associação. 
 
1.2 - 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. 
Pessoa
Marido
Esposa
 é casado com
 
 Exemplo de uma associação recursiva 
 
1.3 - Associação Ternária 
 27 
 
Mais de duas classes podem ser associadas entre si, a associação ternária associa três 
classes. Ela é mostrada como uma grade losango (diamante) e ainda suporta uma 
associação de classe ligada a ela, traçaria-se, então, uma linha tracejada a partir do 
losango para a classe onde seria feita a associação ternária. 
 
Regras Contratuais
Contrato Cliente0..* 1..*
1..*
 
Exemplo de uma associação ternária 
 
No exemplo acima a associação ternária especifica que um cliente poderá possuir 1 
ou mais contratos e cada contrato será composto de 1 ou várias regras contratuais. 
 
 
1.4 - Agregação 
 
A agregação é um caso particular da associação. A agregação indica que uma das classes 
do relacionamento é uma parte, ou está contida em outra classe. As palavras chaves 
usadas para identificar uma agregação são: “consiste em”, “contém”, “é parte de”. 
• É uma forma especializada de associação na qual um todo é relacionado com 
suas partes. Também conhecida como relação de conteúdo. 
• É representada como uma linha de associação com um diamante junto à 
Classe agregadora. 
• A multiplicidade é representada da mesma maneira que nas associações. 
 
 
 
NaviosMarinha
*
contém
*
 
Exemplo de uma agregação entre duas classes 
 28 
 
Tipo de Relacionamento - Generalizações 
 
A generalização é um relacionamento entre um elemento geral e um outro mais 
específico. O elemento mais específico possui todas as características do elemento geral e 
contém ainda mais particularidades. Um objeto mais específico pode ser usado como uma 
instância do elemento mais geral. A generalização, também chamada de herança, permite 
a criação de elementos especializados em outros. 
Existem alguns tipos de generalizações que variam em sua utilização a partir da 
situação. São elas: generalização normal e restrita. As generalizações restritas se dividem 
em generalização de sobreposição, disjuntiva, completa e incompleta. 
 
1.1 - Generalização Normal 
 
Na generalização normal a classe mais específica, chamada de subclasse, herda tudo 
da classe mais geral, chamada de superclasse. Os atributos, operações e todas as 
associações são herdados. 
 
Conta Corrente Poupança
 
Exemplo de uma generalização normal 
 
Uma classe pode ser tanto uma subclasse quanto uma superclasse, se ela estiver 
numa hierarquia de classes que é um gráfico onde as classes estão ligadas através de 
generalizações. 
A generalização normal é representada por uma linha entre as duas classes que 
fazem o relacionamento, sendo que se coloca uma seta no lado da linha onde se encontra 
a superclasse indicando a generalização. 
 
1.2 - Generalização Restrita 
 
Uma restrição aplicada a uma generalização especifica informações mais precisas 
sobre como a generalização deve ser usada e estendida no futuro. As restrições a seguir 
definem as generalizações restritas com mais de uma subclasse: 
 
• Generalizações de Sobreposição e Disjuntiva: Generalização de sobreposição 
significa que quando subclasses herdam de uma superclasse por sobreposição, novas 
 29 
subclasses destas podem herdar de mais de uma subclasse. A generalização disjuntiva 
é exatamente o contrário da sobreposição e a generalização é utilizada como padrão. 
 
Veículo
BarcoCarro
Anfíbio
{sobreposição}
 
Exemplo de uma generalização de sobreposição 
 
• Generalizações Completa e Incompleta: Uma restrição simbolizando que 
uma generalização é completa significa que todas as subclasses já foram 
especificadas, e não existe mais possibilidade de outra generalização a partir 
daquele ponto. A generalização incompleta é exatamente o contrário da 
completa e é assumida como padrão da linguagem. 
 
Pessoa
MulherHomem
{completa}
 
 Exemplo de uma generalização completa 
 
 
 
 
 
 
 30 
 
 
 
 
Diagrama de Seqüência 
 
 Em um sistema computacional orientado a objeto os serviços (casos de uso) são 
fornecidos através da colaboração de grupos. Os objetos interagem através de comunicações de 
forma que juntos, cada um com suas responsabilidades, realizem os casos de uso. 
 O Diagrama de seqüência é uma ferramenta importante no projeto de sistemas orientados 
a objetos. Embora a elaboração dos diagramas possa consumir um tempo considerável para 
sistemas maiores ou mais complexos, eles oferecem a seguir as bases para a definição de uma 
boa parte do projeto como: os relacionamentos necessários entre as classes, métodos e atributos 
das classes e comportamento dinâmico dos objetos. 
Um diagrama de seqüência é um diagrama de objetos, ou seja, ele contém como primitiva 
principal um conjunto de objetos de diferentes classes. O objetivo dos diagramas de seqüência 
é descrever as comunicações necessárias entre objetos para a realização dos processos em um 
sistema computacional. Os diagramas de seqüência têm este nome porque descrevem ao longo 
de uma linha de tempo a seqüência de comunicações entre objetos. Como podem existir muitos 
processos em um sistema computacional, sugere-se proceder à construção dos diagramas de 
seqüência por caso de uso. Assim, tomar-se-ia separadamente cada caso de uso para a 
construção de seus diagramas de seqüência. De uma forma geral, para cada caso de uso 
constrói-se um diagrama de seqüência principal descrevendo as seqüências normais de 
comunicação entre objetos e diagramas complementares descrevendo seqüências alternativas e 
tratamento de situações de erro. 
Utiliza-se também o termo cenário associado com os diagramas de seqüência. Um 
cenário é uma forma de ocorrência de um caso de uso. Como o processo de um caso de uso 
pode ser realizado de diferentes formas, para descrever a realização de um caso de uso pode ser 
necessário estudar vários cenários. Cada cenário pode ser descrito por um diagrama de 
seqüência. No exemplo do caso de uso Cadastrar Aluno do sistema de controle acadêmico, 
podem-se considerar os cenários de inclusão, alteração e exclusão de aluno. 
 
Notação UML para Diagramas de Seqüência 
 
A notação UML para descrição de diagramas de seqüência envolve a indicação do 
conjunto de objetos envolvidos em um cenário e a especificação das mensagens trocadas entre 
estes objetos ao longo de uma linha de tempo. Os objetos são colocados em linha na parte 
superior do diagrama. Linhas verticais tracejadas são traçadas da base dos objetos até a parte 
inferior do diagrama representando a linha de tempo. O ponto superior destas linhas indica um 
instante inicial e, à medida que se avança para baixo evolui-se o tempo. Retângulos colocados 
sobre as linhas de tempo dos objetos indicam os períodos de ativação do objeto. Durante um 
período de ativação, o objeto respectivo esta em execução realizando algum processamento. 
Nos períodos em que o objeto não esta ativo, ele esta alocada (ele existe), mas não esta 
 31 
executando nenhuma instrução. A figura abaixo ilustra a estrutura básica de um diagrama de 
seqüência para o cenário Inclusão de Aluno do caso de uso Cadastrar Aluno. 
 
 : SGBD
Interface 
Secretaria
Controle 
Cadastrar Aluno
Aluno Interface SGBD
 : Secretaria
1: 
2: 
3: 
 
Figura – Estrutura básicade um diagrama de seqüência 
 
 
Outra primitiva importante dos diagramas de seqüência é a troca de mensagem. Esta 
primitiva é utilizada para indicar os momentos de interação ou comunicação entre os objetos. 
Utiliza-se como notação para trocas de mensagens segmentos de retas direcionadas da linha de 
tempo de um objeto origem para a linha de tempo de um objeto destino. Uma seta é colocada 
na extremidade do objeto destino. As linhas representando troca de mensagens são desenhadas 
na horizontal, pois se presume que a troca de uma mensagem consome um tempo desprezível. 
O objeto destino de uma mensagem deve receber a mensagem e processa-la. Desta forma, 
no recebimento de uma mensagem o objeto destino é ativado para tratamento da mensagem. A 
figura abaixo ilustra a troca de mensagens entre objetos e entre atores e objetos. 
 
 32 
 : Secretaria
Interface 
Secretaria
Controle 
Cadastrar Aluno
Aluno
1: 
3: 
Janela
Dados
2: Mostrar Janela
4: Registrar (Dados)
5: Acessar (codigo)
Figura - Exemplo de troca de mensagem em um diagrama de sequencia 
 
 
As mensagens trocadas entre um objeto ou entre um objeto e um ator podem ter três 
significados: 
 
· Chamada de Função ou Procedimento 
 
Uma das interações mais freqüentes entre objetos é a chamada de função. Uma chamada 
de função significa que um objeto esta solicitando a execução de uma função (um método) de 
um outro objeto. Este conceito segue estritamente o processo de chamada de função ou de 
procedimento utilizado nas linguagens de programação. Obviamente, para que um objeto possa 
chamar um método de outro objeto é necessário que o método seja declarado como publico na 
classe respectiva. Como será visto a seguir, a sintaxe, no caso de mensagens que representem 
chamadas de função, é semelhante àquela das linguagens de programação. 
 
· Envio de Mensagem 
 
Objetos também podem comunicar-se com outros objetos através do envio explıcito de 
uma mensagem. O envio de uma mensagem, ao contrario da chamada de função, não é uma 
interação direta entre dois objetos. Na verdade, quando um objeto envia uma mensagem a 
outro objeto, a mensagem é roteada ou encaminhada por algum mecanismo de entrega de 
mensagens. Normalmente, este serviço é prestado pelo sistema operacional através de 
mecanismos como Message Queres (filas de mensagens) ou serviços de notificação. 
 
· Ocorrência de Evento 
 
Existem também outras formas de interação entre objetos através de eventos. Esta é 
também a forma padrão de interação entre objetos e atores. Basicamente, um evento é algum 
acontecimento externo ao software, mas que é a ele notificado, pois lhe diz respeito. A 
notificação, ou seja, a indicação de que um determinado evento ocorreu é, na maioria dos 
 33 
casos, feita pelo sistema operacional. Eventos podem também ser gerados pelo software para o 
sistema operacional. Exemplos são as saídas para dispositivos (monitor, porta serial, disco) 
feitos através de serviços do sistema operacional. 
 
Alguns exemplos de eventos são: 
 
Evento Origem Destino 
 
Clique do mouse mouse Algum objeto 
 
Movimentação do mouse mouse Algum objeto 
 
Dados no buffer do teclado teclado Algum objeto 
 
Dados no buffer da serial porta serial Algum objeto 
 
Projeção de dados no 
monitor. 
Bip do alto-falante. 
Algum objeto 
 
Algum objeto 
 
monitor 
 
alto-falante 
Colocação de dados no 
buffer da serial 
Algum objeto Porta serial 
 
Interrupção Dispositivo de 
hardware 
 
Algum objeto 
Eventos do sistema 
operacional (timer) 
Sistema operacional Algum objeto 
 
 
Tipos de Mensagens 
 
Nos exemplos das figuras utilizou-se como notação gráfica para as trocas de mensagens 
segmentos de reta com uma seta aberta em uma das extremidades. Esta é a notação genérica 
para mensagens que pode ser utilizada nas primeiras versões dos diagramas de seqüência. Em 
diagramas mais detalhados, entretanto, será utilizada outra notação deforma a indicar também 
o tipo das mensagens. Existem dois tipos de mensagens chamadas mensagens síncronas e 
assíncronas. 
 
· Mensagens Síncronas 
 
Mensagens síncronas são mensagens que implicam um sincronismo rígido entre os 
estados do objeto que envia a mensagem e os do objeto de destino da mensagem. Um 
sincronismo entre objetos pode ser entendido, de uma forma geral, como uma dependência na 
evolução de estado de um objeto sobre o estado de um segundo objeto. De uma forma mais 
direta, pode-se dizer que uma mensagem síncrona implica que o objeto que enviou a 
mensagem aguarde a conclusão do processamento da mensagem (entendida como um sinal de 
sincronismo) feito pelo objeto destino, para então prosseguir seu fluxo de execução. O exemplo 
 34 
mais comum de mensagem síncrona é a chamada de função. Em uma chamada de função o 
objeto que faz a chamada ü empilhado e fica neste estado até a conclusão do processamento da 
função chamada. Trata-se, portanto, de um sincronismo rígido entre o objeto chamador e o 
objeto chamado. Alguns sistemas operacionais oferecem também mecanismos de troca de 
mensagens síncronas de forma que o objeto que envia a mensagem fique em estado de espera 
até a conclusão do tratamento da mensagem. 
A notação UML para uma mensagem síncrona é a de um segmento de reta com uma seta 
cheia em uma das extremidades 
 
· Mensagens Assíncronas 
 
Mensagens assíncronas são mensagens enviadas de um objeto a outro sem que haja uma 
dependência de estado entre os dois objetos. O objeto de origem envia a mensagem e 
prossegue seu processamento independentemente do tratamento da mensagem feita no objeto 
destino. Os mecanismos de envio de mensagens suportados pelos sistemas operacionais são o 
exemplo mais comum deste tipo de mensagem. Além disso, de uma forma geral, todas as 
comunicações entre atores e objetos representam trocas de mensagem assíncronas. Considere, 
por exemplo, uma operação para apresentação de uma mensagem no monitor. Um objeto 
executa uma instrução print (ou print ou write) e o sistema despacha a mensagem para o ator (o 
monitor). O objeto prossegue seu processamento independentemente do desfecho na operação. 
Observe que os softwares não bloqueiam quando o monitor não apresenta alguma informação. 
A notação UML para uma mensagem assíncrona é a de um segmento de reta com uma meia 
seta em uma das extremidades. 
 
 
 Além desta diferenciação entre mensagens síncronas e assíncronas, pode-se também 
indicar quando uma mensagem consome tempo. A notação UML para mensagens deste tipo é 
ilustrada na figura abaixo. 
 
 
· Autodelegação 
 
Um objeto pode enviar mensagens para outros objetos e pode também enviar mensagens 
para ele próprio. Uma mensagem enviada de um objeto para ele próprio chama-se uma 
Autodelegação. Mensagens de Autodelegação podem ser síncronas ou assíncronas. O caso 
mais comum de mensagens assíncronas é o envio de uma mensagem de um objeto para ele 
mesmo através de mecanismos de envio de mensagens do sistema operacional. O caso mais 
comum de mensagens de Autodelegação síncronas é a chamada de função de um objeto pelo 
próprio objeto. 
 
 35 
Controle 
cadastrar aluno
1: Calcular
2: Fim processo
 
Figura – Notação UML para autodelegação 
 
 
 
 
Diagrama de Colaboração 
 
Mostra a interação organizada ao lado de cada classe de objetos e a ligação entre elas. 
Como o diagrama de seqüência, o diagrama de colaboração mostra as mensagens trocadas por 
um conjunto de objetos durante um cenário. É uma representação gráfica alternativa para 
mostrar um cenário. Descrevem grupos de objetos que colaboram através de comunicação. 
Um diagrama de colaboração contém: 
 
• Objetos, que são representados por retângulos. 
• Ligações entre objetos, representadas por uma linha conectando os objetos. 
• Mensagens trocadas entre objetos em uma seqüência ordenada 
• Fluxo de dados entre objetos, se houver. 
 
Através do diagrama de colaboração é mais fácil visualizar as mensagens trocadas entre 
os objetos, subsidiando assim a elaboração do diagrama de classesde objetos. Os objetos e as 
mensagens são as mesmas do diagrama de seqüência. Utilizando o diagrama de colaboração é 
possível identificar se existe algum objeto que não troca mensagens com outro. Caso isto 
aconteça deve-se analisar o modelo de origem e verificar se este objeto é mesmo necessário. 
Os diagramas de seqüência e de colaboração serão mais utilizados no desenvolvimento do 
projeto quando são projetadas as implementações dos relacionamentos. 
O objetivo do diagrama de colaboração é agrupar as mensagens entre pares de objetos de 
forma a fazer-se um levantamento das necessidades de comunicação. 
 
 
 
 
 36 
Diagrama de Estado 
 
 O comportamento de uma classe de objetos é representado através de um 
diagrama de transição de estado, que descreve o ciclo de vida de uma dada classe, os 
eventos que causam a transição de estado para o outro e as ações resultantes da mudança 
de estado. 
 O estado de um objeto é uma das possíveis condições na qual o objeto pode 
existir. O estado compreende todas as propriedades do objeto associadas aos valores 
correntes de cada uma dessas propriedades. 
 Segundo a UML a especificação da dinâmica do sistema deve ser feita através de 
diagramas de estados. Constrói-se um diagrama de estado descrevendo o comportamento 
de cada classe e eventuais diagramas comportamentais para descrever a dinâmica de todo 
o sistema ou de certos módulos. 
• Diagrama de estado é uma descrição global do comportamento dos objetos desta 
classe em todo o sistema; 
• Diagrama de estado; a especificação da dinâmica do sistema deve ser feita através 
de diagramas de classe; 
• Descreve-se o conjunto de estados de um objeto e também o conjunto de 
transações de estados existentes. 
 
A UML utiliza como notação para diagramas de estados a notação proposta por 
Harel. Nesta notação, um diagrama de estados e um grafo dirigido cujos nodos 
representam estados e cujos arcos representam transições entre estados. Estados são 
representados graficamente por elipses ou retângulos com bordas arredondadas e 
transições são representadas por segmento de retas dirigidas. 
 
Notação do Diagrama de Estado 
 
 Estado Inicial 
 
 Estado Final 
 
 
 
 
 
 
Estado Intermediário 
Transição de Estado 
 
 37 
 
Estado – pode ser entendido como um momento na vida de um objeto, momento em que 
foi criado, momento em que fez uma inicialização, momento de solicitação, etc. Os 
estados são identificados com nomes no gerúndio e particípio. O mesmo estado pode ser 
repetido. Existem duas notações gráficas especiais para dois estados particulares 
existentes em diagramas de estados. Utiliza-se a notação de um circulo preenchido para 
indicar o estado de partida do objeto. Pode-se entender que ele representa o momento de 
criação ou alocação do objeto. Utiliza-se a notação de dois círculos para representar o 
estado final de um objeto. O estado final representa o momento de destruição ou 
desalocação do objeto. 
 
 
 
 
 
 Estado Inicial Estados Intermediários Estado Final 
 
Exemplos de Estados de um Objeto 
 
Transição de Estados – Os estados tendem a avançar de um certo estado para algum 
outro a medida que executem seus processamentos. Este avanço de uma situação (estado) 
para outro se denomina uma transição de estado. A transição de estado possui um rotulo, 
com a seguinte sintaxe: 
 
Evento (argumento) [condição/Ação] 
 
 
 
Evento – indica uma mensagem ou notificação recebida pelo objeto e que torna a 
transição habilitada. 
Argumento – são valores recebidos junto com o evento. 
Condição – é uma expressão lógica que é avaliada quando o evento associado a uma 
transição ocorre. Uma transição só ocorre se o evento acontecer e a condição associada 
for verdadeira. 
Ação – indica uma ação que é executada durante a transição de um estado a outro. 
 
 
 
 Estado Inicial Estado final 
 
 
Exemplo de Diagrama de Estados 
 
 
 
Mostrand
o janela 
Aguardand
o Dados 
Dados 
recebidos 
Dados 
 38 
Clausula de Envio 
 
• É uma ação de envio de uma mensagem do objeto que se esta modelando para 
algum outro objeto. O envio pode ser síncrono ou assíncrono; 
• Em diagramas de estados, indica-se que o objeto está enviando uma mensagem a 
outro objeto colocando-se uma clausula de envio como uma ação em uma 
transição. 
 ^ nome_objeto. Nome_mensagem 
 
 
 
 
Diagrama de Atividades 
 
 Um diagrama de atividades é um diagrama de estado no qual se considera que 
todos ou a grande maioria dos estados representam a execução de ações ou atividades. A 
notação UML para diagramas de atividades utiliza as mesmas primitivas dos diagramas 
de estados e inclui algumas notações adicionais. 
 As novas primitivas incluídas nos diagrama de atividades são: 
• Estado de Bifurcação e de Convergência 
Bifurcação - é um estado do qual partem duas ou mais transições. A notação utilizada 
para o estado de bifurcação é na forma de um losango. 
Convergência – é um estado que possui mais de uma transição de entrada representando, 
desta forma, um ponto de junção de fluxos alternativos dentro de um diagrama de 
estados. A notação utilizada para o estado de convergência é na forma de um losango. 
 39 
 
 Exemplo de Estados de Bifurcação e de Convergência 
• Sincronismo de Concorrências 
 
Os diagramas de atividades empregam uma notação permitindo a especificação de 
sincronismo de concorrências. A mesma notação, na forma de uma barra preenchida, é 
utilizada tanto para abertura de sincronismo quanto para sincronismo de concorrências. 
Na abertura, entende-se que os fluxos seguintes avançarão concorrentemente. O 
sincronismo de encerramento de concorrências representa um ponto de aguardo até que 
todos os fluxos concorrentes alcancem o ponto de sincronismo. 
Esperando Opção 
Iniciando 
Processo 1 
Iniciando 
Processo 2 
Processo 1 
Encerrado 
Processo 2 
Encerrado 
Encerrando 
Ativação 
Estado de Convergência 
^interf.Processo1 ^interf. Processo2 
Estado de Bifurcação 
 40 
 
 Exemplo de Abertura e sincronismo de encerramento de concorrências 
 
Esperando Opção 
Iniciando 
Processo 1 
Iniciando 
Processo 2 
Processo 1 
Encerrado 
Processo 2 
Encerrado 
Encerrando 
Ativação

Outros materiais