Buscar

Modelagem de Sistemas

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 69 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 69 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 69 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

UNIVERSIDADE FEDERAL DE JUIZ DE FORA 
INSTITUTO DE CIÊNCIAS EXATAS 
 DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO 
 
LICENCIATURA EM COMPUTAÇÃO 
 
 
 
 
 
 
 
 
 
 
 
 
MODELAGEM DE SISTEMAS 
 
 
 
 
 
 
 
 
 
 
 
 
 
Elaborado por: Prof. Michel Heluey Fortuna 
 
 
 
 
 
 
 
 
Agosto/2012
 
ii 
 
Apresentação 
 
[Sobre o material] 
Este material de estudo versa sobre modelagem de sistemas, especialmente, sistemas de 
software. Ele foi elaborado para servir de apoio à disciplina de mesmo nome, com carga 
horária de 30 horas, do curso de Licenciatura em Computação da Universidade Federal de 
Juiz de Fora (UFJF). 
Uma vez que a disciplina-alvo deste material não tem pré-requisito formal, o objetivo 
foi fazê-lo autocontido. Isso significa, entre outras coisas, que alguns conceitos de 
orientação a objetos, necessários ao entendimento do conteúdo aqui apresentado sobre 
modelagem, foram incorporados ao longo do texto. 
Apenas uma parte do rol de modelos existentes para a representação das diferentes 
visões de um sistema e, em particular, do rol de modelos preconizados pela Unified 
Modeling Language (UML), foi coberta aqui. Isso se deveu, principalmente, à limitação de 
carga horária da disciplina-alvo. Pelo mesmo motivo, nem todos os detalhes dos modelos 
cobertos foram incluídos. De qualquer forma, tanto os modelos cobertos, quanto os 
detalhes de cada um, estão entre os mais básicos, estáveis e frequentemente utilizados no 
desenvolvimento de software. 
[Sobre o autor] 
O autor deste material de estudo é doutor em Engenharia de Sistemas e Computação pela 
Universidade Federal do Rio de Janeiro (COPPE/UFRJ) e professor do Departamento de 
Ciência da Computação da Universidade Federal de Juiz de Fora (UFJF). Durante um bom 
tempo atuou também como analista de sistemas em empresas privadas e estatais. Sua 
principal área de interesse é a modelagem de sistemas de informação. 
 
iii 
 
Sumário 
 
Lista de Figuras e Tabelas .............................................................................. v 
1. Introdução .................................................................................................. 1 
O que são modelos? ............................................................................................ 3 
Linguagens x Modelos ........................................................................................ 4 
O paradigma OO ................................................................................................. 5 
UML ................................................................................................................... 6 
2. Modelo de Casos de Uso ........................................................................... 8 
2.1. Introdução ............................................................................................................... 8 
2.2. Diagrama de UCs .................................................................................................... 9 
2.3. Descrição dos UCs ................................................................................................ 10 
Sumário ............................................................................................................. 11 
Fluxo de Eventos .............................................................................................. 11 
2.4. Relacionamentos entre UCs .................................................................................. 14 
Inclusão ............................................................................................................. 14 
Extensão ............................................................................................................ 14 
Considerações sobre Include e Extend ............................................................. 15 
Generalização ................................................................................................... 17 
3. Diagrama de Classes de Objetos ............................................................ 20 
3.1. Introdução ............................................................................................................. 20 
Classe  Objeto ................................................................................................. 21 
3.2. Associações entre classes ...................................................................................... 22 
Associação reflexiva ......................................................................................... 24 
Classe de associação ......................................................................................... 24 
Agregação e Composição ................................................................................. 25 
Generalização/especialização ........................................................................... 27 
4. Diagrama de Estados .............................................................................. 29 
4.1. Introdução ............................................................................................................. 29 
4.2. Elementos de um DE ............................................................................................ 31 
Estados .............................................................................................................. 31 
Eventos ............................................................................................................. 32 
Transições ......................................................................................................... 34 
Atividades ......................................................................................................... 34 
Ações ................................................................................................................ 36 
Estados compostos e subestados sequenciais ................................................... 36 
4.3. Relação com outros modelos ................................................................................ 37 
5. Diagrama de Sequência .......................................................................... 39 
5.1. Introdução ............................................................................................................. 39 
 
iv 
 
5.2. DS  DSS .............................................................................................................. 39 
5.3. Elementos do DS .................................................................................................. 41 
Linha de vida e barras de ativação .................................................................... 41 
Mensagens ........................................................................................................ 42 
Fragmentos de sequência .................................................................................. 45 
5.4. Relação com os outros modelos ............................................................................ 47 
6. Diagrama de Comunicação .................................................................... 48 
6.1. Introdução ............................................................................................................. 48 
6.2. Comparação com outros modelos ......................................................................... 49 
6.3. Comparação: DCom  DS .................................................................................... 50 
6.4. Traduzindo um DS em um DCom ........................................................................ 51 
7. Diagrama de Atividade ........................................................................... 53 
7.1. Introdução .............................................................................................................53 
7.2. Elementos do DA .................................................................................................. 55 
Ação .................................................................................................................. 55 
Transições ......................................................................................................... 55 
Nó objeto .......................................................................................................... 55 
Nó Início da Atividade...................................................................................... 56 
Decisão e Aglutinação ...................................................................................... 56 
Nós de finalização............................................................................................. 57 
Ramificação e Junção ....................................................................................... 58 
Evento temporal ................................................................................................ 59 
Eventos externos ............................................................................................... 59 
Subatividade ..................................................................................................... 60 
Nó conector ....................................................................................................... 62 
7.3. Relação com outros modelos / diagramas ............................................................. 62 
Bibliografia..............................................................................................63 
 
v 
 
Lista de Figuras e Tabelas 
Figuras: 
Figura 1.1: Como se constrói (e se cobra por) software!? ..................................................... 1 
Figura 1.2: Requisitos iniciais do Sistema Restaurante ......................................................... 3 
Figura 1.3: Planta baixa (modelo) de uma residência destacando uma janela ...................... 5 
Figura 1.4: Diagramas da UML 2.4 ....................................................................................... 6 
Figura 2.1: Exemplo de diagrama de casos de uso ................................................................ 9 
Figura 2.2: Níveis mais comuns de detalhamento na descrição de UCs ............................. 10 
Figura 2.3: Fluxo de eventos do UC Pagar a nota (Sistema Restaurante) ......................... 12 
Figura 2.4: Fluxo de eventos do UC Abrir conta (sistema bancário) .................................. 12 
Figura 2.5: Fluxo de eventos com alternativa (UC Pagar a nota) ...................................... 13 
Figura 2.6: Representação do relacionamento de inclusão entre UCs ................................ 14 
Figura 2.7: Representação do relacionamento de extensão entre UCs ................................ 15 
Figura 2.8: Efeito de A includes B sobre o fluxo de eventos dos UCs A e B ..................... 16 
Figura 2.9: Efeito de A extends B sobre o fluxo de eventos dos UCs A e B ...................... 17 
Figura 2.10: Representação do relacionamento de generalização entre UCs ...................... 18 
Figura 2.11: Exemplo de relacionamento generalização entre dois UCs ........................... 18 
Figura 3.1: Exemplo de diagrama de classes de objetos ..................................................... 20 
Figura 3.2: Uma classe (de objetos) Pessoa e um objeto dessa classe ................................ 22 
Figura 3.3: Associação, ligações e multiplicidades ............................................................. 23 
Figura 3.4: Associação reflexiva e papéis ........................................................................... 24 
Figura 3.6: Exemplos de associações do tipo agregação ..................................................... 25 
Figura 3.7: Exemplos de associações do tipo composição .................................................. 26 
Figura 3.8: Generalização / especialização entre classes .................................................... 28 
Figura 3.9: Metamodelo (parcial) de um DC ...................................................................... 28 
Figura 4.1: DE de um sistema de portão de garagem automatizado ................................... 29 
Figura 4.2: Elementos de um DE e sua representação gráfica ............................................ 31 
Figura 4.3: DE (protocolo) da classe Pedido do sistema Restaurante ................................ 33 
Figura 4.4: DE do negócio de um restaurante ..................................................................... 35 
Figura 4.5: Estados civis de uma pessoa (utilizando estados compostos) ........................... 36 
Figura 5.1: DS de sistema (DSS) – Caso de uso Pedir a nota (sistema Restaurante) ......... 39 
Figura 5.2: Diagrama de sequência – Caso de uso Pedir a nota (sistema Restaurante) ..... 40 
Figura 5.3: Linha de vida e barras de ativação .................................................................... 41 
Figura 5.4: Tipos de mensagens .......................................................................................... 42 
Figura 5.5: Exemplo de utilização de mensagem assíncrona .............................................. 43 
Figura 5.6: Formas equivalentes de retorno de mensagem ................................................. 44 
Figura 5.7: Exemplos de fragmentos de sequência ............................................................. 46 
Figura 5.8: Forma alternativa para fragmento opt simples .................................................. 46 
Figura 5.9: Forma alternativa para o fragmento loop simples ............................................. 47 
Figura 6.1: Exemplo de diagrama de comunicação (DCom) .............................................. 48 
Figura 6.2: Tipos de mensagens .......................................................................................... 49 
Figura 6.3: Respostas fora de ordem em mensagens assíncronas ....................................... 50 
Figura 6.4: DS a traduzir para DCom .................................................................................. 51 
Figura 6.5: Primeiro passo de tradução – Objetos ............................................................... 52 
Figura 6.6: Segundo passo de tradução – Ligações ............................................................. 52 
Figura 6.7: Terceiro passo de tradução – Mensagens .......................................................... 52 
Figura 7.1: Exemplo de diagrama de atividade (DA) – venda por telefone ........................ 54 
Figura 7.2: Representação gráfica dos nós e transições de um DA ..................................... 55 
 
vi 
 
Figura 7.3: (a) Combinação de aglutinação e decisão; (b) Significado da combinação ...... 57 
Figura 7.4: (a) Combinação de junção e ramificação; (b) Significado da combinação....... 58 
Figura 7.5: Exemplo de evento temporal recorrente ........................................................... 59 
Figura 7.6: Envio e recebimento de sinais ........................................................................... 59 
Figura 7.7: Espera desde o início da atividade .................................................................... 60 
Figura 7.8: Exemplo de utilização do nó de subatividade – Subatividade Libera pedido .. 61 
Figura 7.9: DA da subatividade Libera pedido ................................................................... 61 
Figura 7.10: Utilização de conector em um DA .................................................................. 62 
 
Tabelas: 
Tabela 3.1: Comparação entre agregação e composição ..................................................... 26 
Tabela 5.1: Exemplos válidos de mensagens (sintaxe) ....................................................... 45 
Tabela 5.2: Alguns operadores de fragmentos de sequência............................................... 45 
Tabela 6.1: Comparação entre o DCom e o DS .................................................................. 50 
 
Modelagem de Sistemas Capítulo 1: Introdução 
 
1 
 
1. Introdução 
Observe atentamente a Figura 1.1 abaixo; o que ela lhe diz? 
 
Figura 1.1: Como se constrói (e se cobra por) software!?
1
 
A primeira reação à figura acima pode ser rir... De fato, ela é engraçada! Mas logo se 
percebe o quanto ela reflete a realidade dos problemas enfrentados por aqueles que se 
envolvem com a tarefa de desenvolver um sistema computacional, com o seu componente 
de software. Eu mesmo já acompanhei diversos projetos de desenvolvimento de software e 
pude observar muitos desses problemas. Nas próximas linhas vou tentar expressar o que 
essa figura me diz ou recorda, com base na minha experiência como analista de sistemas. 
Meu objetivo é motivá-lo(a) a conhecer e a saber utilizar o ferramental descrito neste 
material de estudo, pois ele poderá lhe ajudar a resolver, ou pelo menos contornar, parte 
das dificuldades enfrentadas por todos que se dedicam a desenvolver software. 
O processo de desenvolvimento de software envolve a participação de, pelo menos, 
dois grupos distintos de profissionais, normalmente com formação muito distinta: o grupo 
dos clientes ou usuários (do futuro sistema) e o grupo dos desenvolvedores. O grupo dos 
usuários costuma envolver pessoas das mais diversas áreas de atuação profissional, tais 
como, administradores, engenheiros, profissionais de saúde, de educação, técnicos, etc. O 
outro grupo, o dos desenvolvedores, normalmente tem formação em computação – são, 
principalmente, os analistas de sistemas e os programadores. Os analistas consultam os 
 
 
1
 Autoria desconhecida. 
Modelagem de Sistemas Capítulo 1: Introdução 
 
2 
 
clientes e projetam um sistema para atendê-los e os programadores elaboram o software 
necessário ao funcionamento do sistema. 
O cliente nem sempre tem uma ideia clara do que seria uma solução adequada para 
as suas necessidades. Como todo profissional, ele está em contínuo processo de 
aprendizagem, procurando melhorar suas práticas e obter soluções que atendam essas 
necessidades. Além disso, com raras exceções, o cliente não está a par de todas as 
possibilidades que as tecnologias de informação, comunicação e computação oferecem. 
Portanto, o analista não deve aceitar passivamente tudo o que ele propõe, mas sim 
investigar em parceria com o seu cliente, a qualidade da solução sugerida por ele e, juntos, 
confirmar, aperfeiçoar, ou eventualmente chegar a outro tipo de solução. Se o analista não 
adotar essa atitude proativa na definição do sistema, ele corre o sério risco de projetar um 
sistema incapaz de atender os propósitos do cliente. Infelizmente, esse erro é muito comum 
entre analistas inexperientes. 
Essa parceria entre cliente e analista pressupõe alguns requisitos básicos, dos quais, o 
mais importante talvez seja que exista uma linguagem comum capaz de permitir uma 
comunicação efetiva entre as diferentes categorias de profissionais envolvidos. Em 
primeiro lugar, essa linguagem deve incluir os termos e conceitos do domínio de trabalho 
do cliente, para que o analista possa entender os problemas que o cliente enfrenta e espera 
ver resolvidos com o sistema a ser desenvolvido. No entanto, essa linguagem comum 
também precisa incluir termos, conceitos e estruturas próprias das tecnologias de 
informação, comunicação e computação, para que o cliente possa acompanhar e contribuir 
com o analista, na busca pela solução de software capaz de atender plenamente os seus 
anseios. É nesse requisito que o material ora apresentado para estudo pode contribuir. Ele 
apresenta uma proposta de linguagem, que é parte de uma linguagem maior padronizada 
mundialmente sob a denominação de UML (Unified Modeling Language), a ser utilizada 
no levantamento das necessidades dos clientes, na análise dessas necessidades e no projeto 
de uma solução para atendê-las. Com essa linguagem, os analistas constroem modelos que 
vão sendo aperfeiçoados e detalhados aos poucos, parte deles com a ajuda dos clientes, até 
refletirem com razoável precisão o sistema a ser construído. Depois, esses modelos são 
entregues aos programadores para que eles desenvolvam o software conforme projetado. 
Erros introduzidos na definição de um sistema repercutem negativamente em todas 
as etapas posteriores do seu desenvolvimento (isso está ilustrado muito bem na Figura 1.1) 
e tem custo maior de correção. Daí a importância de se conseguir a participação efetiva de 
clientes e desenvolvedores, logo no início do processo. 
[O sistema Restaurante] 
Suponha que você foi contratado para desenvolver um sistema. O que você deve fazer em 
primeiro lugar? 
O primeiríssimo passo no desenvolvimento de qualquer sistema, é o levantamento 
das necessidades que os futuros usuários do sistema esperam ver atendidas – ou seja, é 
preciso levantar os requisitos do sistema. Um bom ponto de partida é entrevistar as pessoas 
que usarão o sistema. No caso do sistema para o restaurante, poderiam ser feitas entrevistas 
com o dono do restaurante, com o gerente do restaurante, com a pessoa que fica no caixa, 
com os garçons e até com alguns clientes habituais. O resultado dessas entrevistas seria 
uma série de anotações como as mostradas Figura 1.2, que servirão de base para a 
modelagem do sistema: 
Modelagem de Sistemas Capítulo 1: Introdução 
 
3 
 
Resumo descritivo do sistema Restaurante 
Deseja-se um sistema para o controle do funcionamento do restaurante. O Caixa do 
restaurante deverá, a cada nova refeição, registrar no sistema os pratos e as bebidas 
solicitadas pelo cliente. Com isso, o Caixa poderá emitir a notinha (ticket) no encerramento 
da refeição, a qual é entregue pelo garçom ao cliente, para que o mesmo possa conferir e 
efetuar o pagamento da refeição. Essa notinha deverá conter o número da mesa onde a 
refeição foi servida, as quantidades e valores de tudo o que foi consumido, e o total a 
pagar. 
Pode acontecer o caso em que o cliente cancela a refeição, antes de ela ter sido 
tomada. Neste caso, o Caixa registra isso no sistema. 
O restaurante possui, dentre todos os clientes, alguns habituais, ou seja, que 
regularmente tomam refeições no restaurante. O sistema deverá manter um registro dos 
clientes habituais. É da responsabilidade do gerente do restaurante eleger e registrar no 
sistema os clientes habituais. A esses clientes é permitida a pendura das notinhas (para 
pagamento posterior  no final do mês, por exemplo), que deve ser registrada no sistema 
pelo Caixa. As notinhas dos clientes habituais devem conter o nome e o telefone do cliente. 
O Caixa é quem registra no sistema o pagamento de uma notinha em aberto (ainda 
não paga ou pendurada). O sistema deverá auxiliar o Caixa computando o valor do troco a 
ser devolvido ao cliente. O restaurante só aceita pagamento em dinheiro. 
O gerente deverá manter um cadastro dos itens de consumo (bebidas e pratos) 
servidos no restaurante, indicando seu preço unitário e sua disponibilidade atual (se o prato 
ou bebida pode ser servido). Além disso, será importante que o gerente possa consultar no 
sistema e repassar ao dono do restaurante, as seguintes informações: 
 O consumo (quantidade de cada prato ou bebida) em um dia de funcionamento do 
restaurante; essas informações ajudarão o gerente a planejar a reposição de 
ingredientes na cozinha do restaurante. 
 A receita (valor monetário) obtida entre duas datas, pelo pagamento de refeições 
nesse período. 
 Informações sobre as penduras (nome do cliente,telefone, valor pendurado, data da 
pendura), bem como o valor total pendurado, entre duas datas. Com isso, o gerente 
poderá efetuar a cobrança das penduras mais antigas, que já deveriam ter sido pagas. 
O restaurante serve, em média, 250 refeições por dia. O restaurante possui, 
atualmente, 30 mesas, mas esse número poderá variar. 
Figura 1.2: Requisitos iniciais do Sistema Restaurante 
A partir desse levantamento inicial dos requisitos do sistema, pode-se analisar e 
propor uma organização e estrutura adequadas para o sistema, que atenda esses requisitos. 
É ai que os modelos entram: eles nos ajudam a planejar e estruturar todas as partes do 
sistema a ser construído. 
O que são modelos? 
Para construir uma casa, primeiro se faz a planta baixa da mesma. A planta baixa vai 
mostrar quantos cômodos a casa tem, de que tipo eles são (quarto, sala, banheiro, ...), como 
eles estão dispostos, como se comunicam, onde estão posicionadas as portas e janelas, etc. 
Trata-se de um modelo da casa; ou seja, não é a casa em si, mas apenas uma representação 
abstrata da mesma. O termo abstração está na essência de qualquer modelo, pois toda 
Modelagem de Sistemas Capítulo 1: Introdução 
 
4 
 
representação (por definição) mostra apenas uma parte das propriedades ou detalhes 
daquilo que representa, ou seja, abstrai muitos detalhes do objeto modelado. É o caso da 
planta baixa da casa, que embora inclua informações importantes sobre a mesma, não 
inclui outras também relevantes, como por exemplo, os materiais a serem utilizados nas 
paredes, pisos, portas e janelas. 
Para o engenheiro que vai construir a casa, ter em mãos somente a planta baixa é 
insuficiente para executar a obra. Ele precisa saber mais detalhes sobre ela. Muito antes de 
construir as paredes, ele deverá se preocupar com a posição, tamanho e composição das 
sapatas de fundação, pilares e vigas que sustentarão a casa. Logo, vemos que serão 
necessários outros modelos para complementar a informações representadas na planta 
baixa. Entre esses modelos, podemos citar a planta de estrutura – responsável por 
descrever (abstratamente) os elementos estruturais da casa, a planta de fachada – que 
fornece uma visão de como será a aparência da casa por fora, a planta elétrica – que 
apresenta todas as informações necessárias à construção da rede elétrica da casa, a planta 
hidráulica, etc. 
Mas porque não colocar tudo em uma única planta e evitar a manipulação de várias 
delas? Simplesmente porque cada planta é utilizada (lida) por um tipo de profissional 
diferente, em momentos diferentes. Por exemplo, para o futuro morador da casa, interessa 
conhecer, principalmente, a disposição e tamanho dos espaços que compõem o interior da 
casa (planta baixa) e como ela será vista por fora (planta de fachada). A menos que seja 
engenheiro, ele dificilmente se interessará (ou compreenderá) a representação dos detalhes 
da estrutura da casa (planta de estrutura). Além disso, uma única planta que contivesse 
todas as informações necessárias à execução da obra tenderia a ser muito complexa e, 
consequentemente, difícil de ser lida e compreendida. 
Resumindo... É comum, nas diversas áreas do conhecimento, representar um objeto 
por um conjunto de visões ou modelos complementares e consistentes entre si. Dois 
modelos são consistentes entre si quando um não contradiz o outro. Na Ciência da 
Computação não é diferente. Os sistemas são materializados a partir de diversos modelos 
que se complementam mutuamente e são consistentes uns com os outros. 
Linguagens x Modelos 
Vimos que modelos são representações ou descrições abstratas de alguma coisa que 
precisamos estudar, compreender e/ou construir. E, para descrever algo, sempre temos de 
lançar mão de uma linguagem. Nossa linguagem natural, o Português, é uma possibilidade. 
Entretanto, para construirmos modelos técnicos, como os empregados em engenharia em 
geral, e na Engenharia de Software em particular, normalmente se utiliza uma linguagem 
especializada, ou seja, mais restrita, com símbolos e regras específicas para o universo de 
discurso da área. Por exemplo, para descrever uma casa, devemos falar de quartos, salas, 
jardins, janelas, portas, vigas, pilares, etc. Normalmente, não precisamos nos referir a 
coisas como carros, livros, laranjas, etc. Por isso, a Engenharia Civil emprega uma 
linguagem especializada, que possui símbolos especiais pré-definidos para representar as 
coisas do seu universo de discurso. A Figura 1.3 mostra a planta baixa de uma residência e, 
em destaque, o símbolo utilizado para representar uma janela da mesma. 
O exemplo da Figura 1.3 evidencia outra característica das linguagens utilizadas nas 
engenharias: são linguagens gráficas, ou seja, que utilizam principalmente símbolos 
gráficos no lugar de textuais. O Português, como qualquer outra linguagem natural, é 
textual, ou seja, os símbolos utilizados são símbolos textuais. Por exemplo, se queremos 
descrever uma casa em Português, utilizamos os símbolos “casa”, “quarto”, “janela”, etc. 
Modelagem de Sistemas Capítulo 1: Introdução 
 
5 
 
Vemos, portanto, que as engenharias levaram ao pé da letra um conhecido provérbio: “uma 
figura vale mais do que mil palavras”. 
 
Figura 1.3: Planta baixa (modelo) de uma residência destacando uma janela 
O paradigma
2
 OO 
Uma linguagem específica para modelar sistemas computacionais deve focar o universo 
das coisas que precisam ser consideradas na descrição desses sistemas. Na década de 1970, 
conceitos tais como fluxos e depósitos (ou arquivos) de dados, processos, rotinas, módulos, 
subsistemas, etc., eram quase sempre empregados nos modelos. Posteriormente, na década 
de 1980, com o surgimento da programação orientada a objetos (POO), logo amplamente 
adotada pela academia e pela indústria de software, passou-se a falar de objetos, classes, 
atributos, métodos, mensagens, pacotes, etc. Na POO, os programas de computador são 
organizados como um conjunto de (tipos ou classes) de objetos que se comunicam 
trocando mensagens. Esses objetos possuem atributos (dados) que podem ser consultados 
ou alterados, e métodos (operações) que podem ser executados, em resposta às mensagens 
enviadas de um objeto para outro. 
Uma das consequências importantes dessa mudança na forma de programar foi a 
revisão dos modelos que, até então, eram utilizados na modelagem de sistemas 
computacionais. Inicialmente, diversos autores propuseram, cada um, o seu próprio 
conjunto de modelos orientados a objetos (modelos OO). Mas essa diversidade de 
propostas exigia dos profissionais mais um passo antes de começar a desenvolver um 
sistema: a escolha criteriosa do conjunto mais adequado de modelos. Além disso, 
dificultava o compartilhamento dos modelos entre equipes acostumadas a trabalhar com 
modelos distintos. 
 
 
2
 Conjunto de ideias que rompe com um estado de coisas vigente e fundamenta um novo caminho para o 
desenvolvimento científico ou tecnológico. 
Modelagem de Sistemas Capítulo 1: Introdução 
 
6 
 
UML 
Em 1996, três dos principais proponentes de modelos OO se juntaram para propor um 
conjunto unificado de modelos que pudesse ser adotado por todos – ou seja, um padrão de 
modelagem OO, a ser compartilhado por todos os desenvolvedores de software. Esse 
padrão deu certo e passou a ser conhecido por UML – Unified Modeling Language, ou 
linguagem de modelagem unificada. A UML é uma linguagem de modelagem 
eminentemente gráfica, sempre presente nos currículos dos cursos de graduação em 
computação, e muito utilizada na indústria de software, razões pelas quais, será descrita em 
detalhe nos próximos capítulos. 
A UMLé uma linguagem para especificar, descrever e representar os artefatos de um 
sistema, especialmente sistemas que envolvem uma componente intensiva de software. Em 
outras palavras, é uma linguagem para descrever modelos de sistemas e, em especial, 
sistemas computacionais. 
A UML é padronizada mundialmente pela OMG (Object Management Group)
3
, que 
se encarrega de mantê-la evoluindo com base na experiência e necessidades da 
comunidade de usuários, que inclui a indústria, universidades, governo, especialistas, etc. 
A UML pode ser utilizada ao longo de todas as etapas do desenvolvimento de um 
sistema de software: modelagem de negócio, requisitos de software, análise e projeto. Ela 
abrange as mais diversas áreas de aplicação, tais como administração, engenharia, 
medicina, etc. 
[Diagramas da UML] 
Todos os modelos em UML tem um forte componente gráfico, já que a linguagem define 
diversos diagramas, divididos em três categorias: diagramas estruturais, diagramas 
comportamentais e, como uma subcategoria dessa última, os diagramas de interação. A 
Figura 1.4 apresenta o conjunto de diagramas da UML. 
 
Figura 1.4: Diagramas da UML 2.4 
 
 
3
 http://www.omg.org 
Modelagem de Sistemas Capítulo 1: Introdução 
 
7 
 
Os diagramas estruturais (de classes, de objetos, de pacotes, de estrutura composta, 
de componentes, de implantação e de perfil) definem os elementos do sistema e suas inter-
relações estruturais. São também chamados de diagramas estáticos, pois eles representam 
visões estáticas do sistema, ou seja, visões que independem do transcurso do tempo. Ou 
seja, a variável tempo não é considerada na elaboração dos diagramas estruturais. 
Dos diagramas estruturais, o mais utilizado é, de longe, o diagrama de classes. Por 
isso, nos concentraremos no estudo dele. Os demais diagramas estruturais podem ser 
facilmente encontrados na literatura sobre UML e, em particular, na bibliografia indicada 
no final deste material. 
Os diagramas comportamentais incluem o diagrama de casos de uso, de atividade, 
de estados e, dentro da subcategoria dos diagramas de interação, o diagrama de 
sequência, de comunicação, de temporização e o de panorama de interação. São também 
conhecidos como diagramas dinâmicos, pois apresentam visões dinâmicas do sistema, ou 
seja, visões que levam em conta a passagem do tempo (variável tempo). 
Dos diagramas comportamentais, os mais utilizados são o diagrama de casos de uso, 
de estados, de atividade, de sequência e de comunicação. Por isso, esses são os diagramas 
tratados neste material de estudo. 
[Ferramentas UML] 
Graças à padronização da UML pela OMG e a grande aceitação que essa linguagem teve e 
tem, muitos são os fabricantes de software que desenvolveram ferramentas computacionais 
para apoiar a modelagem com UML. Isso é muito importante pois, como a UML é uma 
linguagem eminentemente gráfica e normalmente os modelos passam por diversas versões 
antes de atingirem um grau de perfeição aceitável, a elaboração a mão dos modelos fica 
impraticável. 
Existem diversas ferramentas de apoio à elaboração de modelos UML, algumas 
pagas e outras gratuitas. Por exemplo, os modelos apresentados neste material de estudo 
foram desenvolvidos utilizando a ferramenta Astah, na versão gratuita, denominada versão 
Community. Essa ferramenta pode ser encontrada na web. Para utilizá-la basta fazer o 
download do arquivo de instalação e executá-lo. 
[Organização deste material] 
O restante deste material está organizado em mais seis capítulos, dedicados aos principais 
modelos da UML: Capítulo 2 – Modelo de Casos de Uso; Capítulo 3 – Diagrama de 
Classes de Objetos; Capítulo 4 – Diagrama de Estados; Capítulo 5 – Diagrama de 
Sequência; Capítulo 6 – Diagrama de Colaboração; e Capítulo 7 – Diagrama de Atividade. 
Modelagem de Sistemas Capítulo 2: Modelo de Casos de Uso 
 
8 
 
2. Modelo de Casos de Uso 
2.1. Introdução 
Nosso objetivo neste tópico é estudar o modelo de casos de uso (ou, abreviadamente, 
modelo de UCs – do inglês Use Cases) e aprender a utilizá-lo para o levantamento e 
especificação dos requisitos de um sistema de software. 
Um caso de uso (UC) de um sistema, como o próprio nome diz, é uma forma de se 
usar o sistema com o objetivo de realizar algo, segundo o ponto de vista de um usuário do 
sistema. 
A importância desse modelo reside no fato de que ele é, normalmente, o primeiro a 
ser elaborado quando se deseja desenvolver um sistema, servindo de base para os demais 
modelos posteriores. Um modelo de UCs bem feito é meio caminho andado no sentido de 
se ter um bom projeto do sistema a desenvolver (o contrário também é verdade!). Portanto, 
que tal se empenhar ao máximo em aprendê-lo bem? 
[Para que serve] 
O modelo de casos de uso serve para especificar os requisitos funcionais de um sistema, ou 
seja, ele especifica: 
 O que o sistema deve fazer; 
 Que funções os atores (usuários) poderão executar ao utilizar o sistema (por isso o 
nome “casos de uso”). 
Pesquisa: a) Defina requisitos funcionais; b) Que outros tipos de requisitos existem? 
Saiba mais: Casos de uso não se aplicam apenas a sistemas de software, mas também servem para 
descrever um negócio, um equipamento, etc. 
[Composição do modelo] 
Um modelo de UCs é composto de, pelo menos, duas partes: o diagrama de UCs (DUC) e 
o conjunto das descrições dos UCs que aparecem no diagrama. A Figura 2.1 apresenta um 
exemplo de diagrama de UCs simplificado, para o funcionamento do sistema de um 
telefone celular. 
Modelagem de Sistemas Capítulo 2: Modelo de Casos de Uso 
 
9 
 
2.2. Diagrama de UCs 
 
Figura 2.1: Exemplo de diagrama de casos de uso 
O diagrama da Figura 2.1 evidencia os principais elementos gráficos e textuais 
utilizados na elaboração do DUC: 
 Atores: Designam papéis de pessoas ou outros sistemas que interagem com o sistema 
que está sendo modelado. No caso do sistema Celular, temos dois atores – o ator 
Usuário, que representa uma pessoa no papel de quem usa o celular e o ator Rede, 
que representa o sistema da operadora do celular. São atores porque interagem 
diretamente (trocando sinais e/ou informações) com o sistema Celular. 
 Casos de uso: O diagrama contém três UCs – Efetuar chamada, Receber chamada e 
Usar a agenda. Cada UC representa um objetivo a ser alcançado por um ator ao 
utilizar o sistema. 
 Associação de comunicação: É representada por uma linha que une o ator ao UC, 
significando que o ator interage (ou se comunica) com o sistema para realizar aquele 
UC. 
 Fronteira do sistema (com o seu ambiente): É representada pelo retângulo que 
envolve todos os UCs do sistema. O que está dentro do retângulo (os UCs) faz parte 
do sistema, e o que está fora (os atores), constitui o ambiente do sistema. Apresenta, 
no canto superior esquerdo o nome do sistema. 
[UC-Lab1: Atores e stakeholders] 
Identifique os atores do sistema Restaurante, com base na descrição dos requisitos desse 
sistema, apresentada na Figura 1.2. 
Lembre-se, atores são pessoas ou sistemas que interagem diretamente com o sistema 
a ser construído. Por exemplo, podemos dizer que (a pessoa no papel de) Caixa é ator do 
sistema Restaurante, pois ele vai usar diretamente o sistema para realizar diversas funções, 
tais como registrar pedidos, emitir notinhas, etc. E o dono do restaurante? A descrição 
inicial do sistema não indica qualquer ação direta dessa pessoa no sistema. Se esse for 
realmente o caso, então o dono não é um ator e, portanto, não aparecerá no diagrama de 
UCs do sistema. 
Modelagem de Sistemas Capítulo 2: Modelo de Casos de Uso 
 
10 
 
Saiba mais... Se o donodo restaurante não é um ator, o que é então? Resposta: é um stakeholder 
(pronuncia-se “isteiquirrolder”). Esse é um termo em inglês para designar aquelas pessoas que, 
embora não interajam diretamente com o sistema, utilizam ou são afetadas, de alguma forma, pelos 
resultados produzidos por ele. Portanto, devemos incluir os stakeholders também entre as pessoas 
entrevistadas para o levantamento de requisitos do sistema. 
[UC-Lab2: DUC] 
Construa um diagrama de UCs para o sistema Restaurante, com base na descrição dos 
requisitos desse sistema (Figura 1.2) e considerando os atores identificados no laboratório 
anterior (UC-Lab1). 
Lembre-se que os UCs de um sistema são os grandes objetivos que os atores têm ao 
utilizar o sistema. No caso do sistema Restaurante, o ator Caixa vai querer usar o sistema 
para registrar um pedido de refeição. Em outro momento, o mesmo ator utilizará o sistema 
para registrar o pagamento da refeição. Portanto, podemos incluir no diagrama de UCs 
desse sistema o UC “Registrar pedido” e o UC “Pagar a nota”, certo? Que outros objetivos 
o ator Caixa teria ao utilizar o sistema? E os outros atores do sistema? 
Observação: Sempre comece o nome do UC com um verbo no infinitivo (como 
Registrar pedido). Essa padronização é adequada, pois reforça a ideia de que UCs são 
funcionalidades desempenhadas com o uso do sistema. 
2.3. Descrição dos UCs 
Após a identificação dos atores e UCs, e a elaboração do DUC do sistema, deve-se 
descrever os UCs. Existem diferentes níveis de detalhamento para se descrever um UC. 
Para cada UC, a escolha do nível de detalhamento mais adequado depende da 
complexidade do UC e deve resultar de um compromisso entre o esforço requerido para se 
descrever o UC naquele nível e a precisão/clareza que a descrição resultante proporciona 
aos seus leitores-alvo – atores, stakeholders e desenvolvedores. A Figura 2.2 apresenta os 
níveis de detalhamento mais comumente utilizados na descrição de UCs, além de indicar 
uma ordem de utilização desses níveis: primeiramente se faz um sumário do UC, para 
depois, em uma segunda etapa e caso seja necessário, descrever o fluxo de eventos do UC. 
 
Figura 2.2: Níveis mais comuns de detalhamento na descrição de UCs 
Modelagem de Sistemas Capítulo 2: Modelo de Casos de Uso 
 
11 
 
Sumário 
O mais alto nível de descrição de um UC é denominado Sumário. Trata-se de uma breve
4
 
descrição textual de como alcançar o objetivo do UC, através da descrição do uso do 
sistema pelos atores envolvidos no UC. Por exemplo, considere o UC Abrir conta, dentro 
do contexto de um sistema bancário. O sumário desse UC poderia ser: 
“O funcionário consulta o Cliente no sistema, pelo CPF. Se necessário, atualiza os 
dados dele. Após o Cliente informar uma senha, a conta é aberta (criada) pelo Sistema. O 
Funcionário verifica com o Cliente o valor a depositar, obtém esse valor e efetua o 
depósito dele na conta que acabou de ser criada. Por fim, o Sistema emite o cartão da nova 
conta.” 
Observe que esse sumário descreve como abrir uma conta bancária (objetivo do ator 
Funcionário), através da interação entre o sistema e os atores Funcionário e Cliente. 
Considere agora o sistema Restaurante. Possíveis sumários para os UCs Abrir pedido 
e Pagar a nota são: 
Sumário do UC Abrir pedido: 
“O Caixa informa os dados para a abertura do pedido (o número da mesa e os itens 
pedidos, com respectivas quantidades). Uma vez concluída essa entrada de dados, o 
sistema registra o novo pedido em seus arquivos.” 
Sumário do UC Pagar a nota: 
 “O Caixa identifica o pedido a pagar. O sistema exibe o total a pagar e solicita ao 
Caixa que informe a quantia entregue pelo cliente para o pagamento. O Caixa informa essa 
quantia. Se ela for maior do que a quantia a pagar, o sistema calcula e apresenta o troco. 
Após a confirmação do Caixa de que o pagamento foi efetuado, o sistema registra que a 
nota foi paga.” 
[UC-Lab3: Sumário dos UCs] 
Faça o sumário dos demais UCs do sistema Restaurante. 
Fluxo de Eventos 
Para uma descrição mais detalhada de um UC, pode-se utilizar o segundo nível de 
detalhamento, denominado fluxos de eventos. Evento é todo acontecimento gerado por um 
ator ou pelo sistema. Consequentemente, qualquer evento tem como atributo ou 
propriedade a posição da sua ocorrência no tempo, em relação aos demais eventos. O fluxo 
de eventos mostra onde cada evento, de um conjunto de eventos, está posicionado no 
tempo, em relação aos demais eventos do conjunto. 
[Exemplo: UC Pagar a nota (Sistema Restaurante)] 
Para exemplificar fluxo de eventos, considere novamente o UC Pagar a nota, cujo sumário 
está reproduzido abaixo: 
“O Caixa identifica o pedido a pagar. O sistema exibe o total a pagar e solicita ao 
Caixa que informe a quantia entregue pelo cliente para o pagamento. O Caixa informa essa 
quantia. Se ela for maior do que a quantia a pagar, o sistema calcula e apresenta o troco. 
 
 
4
 Normalmente, apenas um parágrafo. 
Modelagem de Sistemas Capítulo 2: Modelo de Casos de Uso 
 
12 
 
Após a confirmação do Caixa de que o pagamento foi efetuado, o sistema registra que a 
nota foi paga.” 
Nesse UC, podemos identificar diversos eventos gerados pelo ator Caixa, tais como: 
 Identifica o pedido a pagar; 
 Informa a quantia (entregue pelo Cliente para pagamento do pedido); 
 Confirma que o pagamento foi efetuado; 
Por sua vez, o sistema gera os seguintes eventos: 
 Exibe o total a pagar; 
 Solicita ao Caixa que informe a quantia entregue pelo cliente para o pagamento; 
 Calcula e apresenta o troco; 
 Registra o pagamento em seus arquivos; 
A descrição do fluxo de eventos desse UC colocaria cada evento na sua posição 
correta no tempo, em relação aos demais: 
1. O Caixa identifica o pedido a pagar; 
2. O sistema exibe o total a pagar; 
3. O sistema solicita ao Caixa que informe a quantia entregue pelo cliente para o 
pagamento; 
4. O Caixa informa a quantia (entregue pelo Cliente); 
5. O sistema calcula e apresenta o troco; 
6. O Caixa confirma que o pagamento foi efetuado; 
7. O sistema registra o pagamento em seus arquivos; 
8. O sistema informa ao Caixa a conclusão com sucesso da operação. 
Figura 2.3: Fluxo de eventos do UC Pagar a nota (Sistema Restaurante) 
[Exemplo: UC Abrir conta (sistema bancário)] 
Outro exemplo é a descrição do fluxo de eventos do UC Abrir conta, cujo sumário foi 
apresentado anteriormente nessa seção: 
1. O Sistema pede o CPF do cliente; 
2. O Funcionário informa o CPF; 
3. O Sistema apresenta os dados cadastrais do Cliente e solicita que o Funcionário os 
atualize, se necessário; 
4. O Gerente atualiza o cadastro do Cliente; 
5. O Sistema pede uma senha de acesso para o Cliente; 
6. O Cliente informa a senha; 
7. O Sistema abre a conta; 
8. O Sistema solicita o valor do depósito inicial; 
9. O Gerente informa o valor e confirma seu recebimento; 
10. O Sistema registra o depósito e emite o cartão da nova conta. 
Figura 2.4: Fluxo de eventos do UC Abrir conta (sistema bancário) 
[Fluxo de eventos com situações alternativas] 
De certa maneira (menos estruturada e, normalmente, menos detalhada), o sumário de um 
UC também dá uma ideia dos eventos gerados pelos atores e pelo sistema, bem como da 
ordem em que os eventos ocorrem. Entretanto, em uma descrição de fluxo de eventos, 
além dessa informação estar melhor estruturada e mais detalhada, também é possível 
Modelagem de Sistemas Capítulo 2: Modelo de Casos de Uso 
 
13 
 
destacar situações alternativas que representam comportamento de caráter opcional, 
excepcional ou alternativo. Por exemplo, considere o fluxo de eventos do UC Pagar a nota 
(Sistema Restaurante– Figura 2.3). E se o cliente entregar (e o Caixa informar ao sistema) 
uma quantia inferior ao valor devido para pagamento da refeição? Como o sistema deveria 
se comportar? Veja na Figura 2.5, uma sugestão de como incluir o tratamento dessa 
situação no fluxo de eventos do UC. 
1. O Caixa identifica o pedido a pagar; 
2. O sistema exibe o total a pagar; 
3. O sistema solicita ao Caixa que informe a quantia entregue pelo cliente para o 
pagamento; 
4. O Caixa informa a quantia (entregue pelo Cliente); 
5. O sistema calcula e apresenta o troco; 
6. O Caixa confirma que o pagamento foi efetuado; 
7. O sistema registra o pagamento em seus arquivos; 
8. O sistema informa ao Caixa a conclusão com sucesso da operação. 
Situações Alternativas: 
A1. Quantia dada para pagamento da nota da refeição é inferior ao valor devido: O 
sistema deve informar ao Caixa essa situação e permitir que ele entre com outra 
quantia ou finalize o UC. 
Figura 2.5: Fluxo de eventos com alternativa (UC Pagar a nota) 
O exemplo acima mostra a descrição do fluxo de eventos de um UC com apenas uma 
situação alternativa. Mas essa não é a regra geral. A seguir, é apresentada uma lista de 
situações alternativas que poderiam estar previstas na descrição do fluxo de eventos do UC 
Retirar dinheiro, de um sistema de terminal de autoatendimento bancário. 
A1. Cartão não pode ser identificado; 
A2. Cliente não pode ser identificado; 
A3. Cliente deseja retirar quantia distinta daquelas pré-definidas; 
A4. Saldo na conta do Cliente insuficiente para retirar a quantia solicitada; 
A5. Limite diário de retirada ultrapassado; 
A6. Link de comunicação com o Sistema do Banco está fora do ar; 
A7. Cartão roubado - o cartão está na lista negra; 
A8. O terminal não tem dinheiro suficiente; 
A9. O cartão agarrou no leitor de cartões do terminal; 
[Cenários de um UC] 
A existência de situações alternativas na descrição de um UC mostra que, a cada realização 
de um UC, uma sequência diferente de eventos pode ocorrer. Por exemplo, no UC anterior 
(Retirar dinheiro), se a quantia solicitada para retirada for superior ao limite diário, então 
em vez de disponibilizar o dinheiro ao usuário, o terminal bancário emitirá uma mensagem 
para esclarecer a situação e permitirá que o usuário escolha outra quantia. Cada sequência 
específica de eventos ocorridos durante a realização de um UC é um cenário do UC. 
Portanto, um UC pode expressar um conjunto de cenários. 
Saiba mais... Existe ainda uma forma mais detalhada de se descrever o fluxo de eventos de um UC, 
denominada fluxo completo de eventos, em contraposição àquela que foi vista nesta seção, que 
normalmente é denominada de resumo (outline, em inglês) de eventos. Entretanto, para a maioria 
dos UCs, o sumário ou a fluxo resumido de eventos é mais do que suficiente. 
Modelagem de Sistemas Capítulo 2: Modelo de Casos de Uso 
 
14 
 
[UC-Lab4: Fluxo de eventos dos UCs] 
Elabore os fluxos (resumidos) de eventos para os UCs do sistema Restaurante, incluindo o 
tratamento de situações alternativas, se houver. 
2.4. Relacionamentos entre UCs 
Vimos que o diagrama de UCs mostra o relacionamento de comunicação entre os atores e 
os UCs, através de linhas que unem cada ator aos UCs com os quais ele troca sinais e 
informações. Agora vamos ver que os UCs também podem se relacionar. Abaixo estão 
listados os três tipos de relacionamentos entre UCs, sendo os dois primeiros os mais 
comuns: 
 Relacionamento de inclusão (um UC inclui o outro); 
 Relacionamento de extensão (um UC estende o outro); e 
 Relacionamento de generalização (um UC generaliza o outro). 
Inclusão 
O relacionamento de inclusão (include, em inglês) entre dois UCs expressa que o 
comportamento (fluxo de eventos) de um UC inclui, incondicionalmente, o comportamento 
(fluxo de eventos) do outro UC. Por exemplo, no diagrama da Figura 2.6, o 
(comportamento descrito no) UC Emitir histórico escolar sempre inclui, em algum ponto 
do seu fluxo de eventos, o (comportamento descrito no) UC Efetuar login. Isso é expresso 
através da seta tracejada partindo do UC que inclui e chegando no UC que é incluído. 
 
Figura 2.6: Representação do relacionamento de inclusão entre UCs 
Extensão 
O relacionamento de extensão (extend, em inglês) entre dois UCs expressa que o 
comportamento (fluxo de eventos) de um UC estende, condicionalmente, o comportamento 
(fluxo de eventos) do outro UC. Por exemplo, no contexto de um sistema de 
videolocadora, o diagrama da Figura 2.7 mostra que o (comportamento descrito no) UC 
Registrar pagamento estende condicionalmente o (comportamento descrito no) UC Fazer 
empréstimo, assim como também estende (condicionalmente) o UC Fazer devolução. Isso 
porque, quando se toma um filme emprestado, o pagamento do empréstimo pode ou não 
ser feito no ato do empréstimo (UC Fazer empréstimo); caso não seja feito, o empréstimo 
deve ser pago no momento em que ele é devolvido (UC Devolver empréstimo) – a decisão 
é do cliente da videolocadora. Consequentemente, os relacionamentos do UC Registrar 
pagamento com os outros dois UCs são do tipo extend; só seriam include se Registrar 
Modelagem de Sistemas Capítulo 2: Modelo de Casos de Uso 
 
15 
 
pagamento devesse ser realizado sempre que Fazer empréstimo e Fazer devolução fossem 
realizados. O relacionamento extend é expresso através de uma seta tracejada partindo do 
UC que estende e chegando ao UC estendido (ou seja, no sentido inverso de um include). 
 
Figura 2.7: Representação do relacionamento de extensão entre UCs 
Saiba mais... O diagrama da Figura 2.7 exibe uma novidade – o relacionamento de herança de 
comportamento entre atores
5
. Herança de comportamento, no contexto do modelo de UCs, significa 
herança de UCs, ou seja, um ator herda a capacidade de realizar os UCs de outro ator. Esse 
relacionamento é desenhado como uma seta contínua e com a ponta fechada, partindo do ator que 
herda o comportamento e chegando no outro ator, aquele que fornece o comportamento herdado. 
Portanto, pela Figura 2.7, podemos dizer que o Cliente online pode realizar todos os UCs ligados 
diretamente a ele (no caso, apenas o UC Reservar filme) e mais os UCs herdados do ator Usuário 
online (UC Consultar acervo). Por sua vez, Balconista pode realizar todos os UCs do sistema, 
graças ao relacionamento de herança entre atores. 
Considerações sobre Include e Extend 
Uma coisa a se ter sempre em mente é que os UCs incluídos em outros UCs, ou aqueles 
que estendem outros UCs, devem poder ser ativados independentemente desses outros 
(melhor dizendo: mesmo que esses outros não estejam sendo realizados). Os UCs das 
Figuras 2.6 e 2.7, que são incluídos em outros (Efetuar login, Consultar acervo), ou que 
estendem outros (Registrar pagamento, Informar filme disponível) satisfazem essa 
condição. Por exemplo, o UC Consultar acervo (Figura 2.7) pode ser ativado (realizado) 
mesmo sem a realização do UC Reservar filme, que o inclui; igualmente, o UC Registrar 
pagamento (Figura 2.7) pode ser ativado mesmo que os UCs Fazer empréstimo e Fazer 
devolução não estejam acontecendo (pois um cliente pode, a qualquer momento, entre o 
empréstimo e a devolução do filme, ir à videolocadora e efetuar o pagamento do filme). 
 
 
5
 Também conhecido como relacionamento de generalização/especialização entre atores. 
Modelagem de Sistemas Capítulo 2: Modelo de Casos de Uso 
 
16 
 
Essa observação é importante porque ela impede a utilização desses relacionamentos para 
fazer, no diagrama de UCs, a decomposição funcional do sistema – um erro frequente entre 
modeladores inexperientes. Essa condição pode ser parcialmente verificada graficamente
6: 
no diagrama, todos os UCs devem estar associados a, pelo menos, algum ator. 
Duas diferenças importantes entre os relacionamentos de inclusão e de extensão são: 
1. No relacionamento de inclusão, a seta aponta o UC cujo comportamento vai ser 
inserido no outro UC, enquanto que no relacionamento de extensão, a seta aponta o 
UC que recebe a inserção (de comportamento) do outro UC. 
2. O relacionamento de inclusão é incondicional, ou seja, sempre ocorrerá a inserção do 
comportamento do UC incluído, no UC que o inclui. Diferentemente, o 
relacionamento de extensão é condicional, ou seja, a inserção do comportamento do 
UC que estende, no UC que é estendido, depende de uma condição ser verdadeira. 
Portanto, a extensão modela comportamento opcional, alternativo ou de exceção. 
[Efeito do include e do extend sobre a descrição dos UCs] 
Você deve estar pensando: Que efeito a introdução (no diagrama de UCs) de um 
relacionamento de inclusão ou de extensão entre dois UCs tem sobre a descrição do fluxo 
de eventos desses UCs? 
A Figura 2.8 mostra que o UC A (aquele que recebe a inserção de comportamento) é 
o responsável por “chamar” o UC B. O fluxo de eventos do UC B (aquele que é incluído 
no UC A) não sofre qualquer alteração. 
 
Figura 2.8: Efeito de A includes B sobre o fluxo de eventos dos UCs A e B 
A Figura 2.9 mostra que o UC B (aquele que estende o comportamento) é o 
responsável por especificar duas coisas: 1ª) A condição que deve ser verdadeira para que a 
 
 
6
 Condição necessária, mas não suficiente, já que as associações entre atores e UCs não esclarecem se um 
ator ativa (inicia) um UC, ou apenas interage (se comunica) com ele. 
Modelagem de Sistemas Capítulo 2: Modelo de Casos de Uso 
 
17 
 
extensão (inserção) ocorra; e 2ª) O ponto do fluxo de eventos do UC A (ponto de extensão) 
em que deve ocorrer a inserção. 
Um ponto de extensão é um rótulo que marca um lugar dentro do fluxo de eventos de 
um UC, de forma que se possa referir a ele quando necessário – por exemplo, quando se 
tem de inserir comportamento naquele ponto do fluxo de eventos. Essa é a única alteração 
necessária no fluxo de eventos do UC A
7
. 
 
Figura 2.9: Efeito de A extends B sobre o fluxo de eventos dos UCs A e B 
O relacionamento de extensão entre UCs, por sua característica de afetar apenas a 
descrição do UC que estende (e não a do UC que é estendido)
8
, é mais adequado do que o 
relacionamento de inclusão como mecanismo de especificação de funcionalidades que são 
introduzidas em uma nova versão de um software pré-existente. Isso porque, nesse caso, 
essas funcionalidades são especificadas através de novos UCs que estendem os já 
existentes, evitando-se, assim, alterar esses últimos. 
Generalização 
Imagine a seguinte situação: Uma empresa planeja desenvolver e comercializar um sistema 
de contabilidade. Entretanto, como essa empresa buscará clientes nos diversos ramos de 
atividade – indústria, comércio e serviços, ela chegou à conclusão que precisará ter uma 
versão do sistema para cada ramo. As três versões do sistema terão muito em comum, se 
diferindo apenas em alguns pontos. Como organizar os UCs do sistema, de forma a refletir 
essa situação? 
 
 
7
 Caso o ponto de extensão ainda não exista. 
8
 Exceto pela introdução de um ponto de extensão, se necessário. 
Modelagem de Sistemas Capítulo 2: Modelo de Casos de Uso 
 
18 
 
Pesquisa: Essa situação exemplifica o conceito de família de sistemas. Procure saber mais sobre 
ele... 
Uma boa opção é lançar mão do relacionamento de generalização (generalization, 
em inglês) entre dois ou mais UCs, que expressa a relação entre um UC geral e os demais 
UCs cujas descrições de comportamento especializam o comportamento descrito no UC 
geral. Ou seja, o sistema da nossa empresa hipotética poderia ser modelado através 
diversos UC gerais descrevendo o comportamento comum (genérico) às três versões do 
sistema, e três outros UCs para cada UC geral (um para cada ramo de atividade), 
responsáveis por descrever o comportamento especializado para cada ramo. Cada UC geral 
estaria então ligado aos seus três UCs especializados, através do relacionamento de 
generalização (Figura 2.10). 
 
Figura 2.10: Representação do relacionamento de generalização entre UCs 
Algumas outras características do relacionamento de generalização entre UCs são: 
 O comportamento exibido na realização de um UC que especializa um UC geral não 
está todo descrito nele, mas resulta de se estender o UC geral com o comportamento 
descrito no UC especializado, em pontos de extensão existentes no fluxo de eventos 
do UC geral. Essa é uma vantagem do relacionamento de generalização: o 
comportamento genérico é fatorado no UC geral, e os UCs que o especializam 
contém apenas o comportamento específico a ser acrescentado ao comportamento 
geral. 
 O UC geral não tem, necessariamente, que ser completo ou poder ser executado, mas 
sim os UCs que o especializam. Este é o caso dos UCs gerais do sistema da nossa 
empresa hipotética, pois não faz sentido ter uma versão executável do sistema que 
incorpore apenas o comportamento comum aos três ramos de atividade (não haverá 
cliente interessado nela, certo?). Mas a Figura 2.11 exemplifica uma situação onde é 
razoável supor que tanto o UC geral quanto o UC especializado poderão ser 
executados. 
 
Figura 2.11: Exemplo de relacionamento generalização entre dois UCs 
Modelagem de Sistemas Capítulo 2: Modelo de Casos de Uso 
 
19 
 
[UC-Lab5: Relacionamentos entre UCs] 
Considere a seguinte descrição do comportamento para a abertura de uma conta bancária: 
“O funcionário consulta o Cliente no sistema, pelo CPF. Se necessário, atualiza os dados 
cadastrais dele. Após o Cliente informar uma senha, a conta é criada pelo Sistema. O 
Funcionário verifica com o Cliente o valor a depositar, obtém esse valor e efetua o 
depósito dele na conta que acabou de ser criada. Por fim, o Sistema emite o cartão da nova 
conta.” 
Em conformidade com a descrição acima, complete o diagrama abaixo introduzindo 
um relacionamento de inclusão e outro de extensão. 
 
Modelagem de Sistemas Capítulo 3: Diagrama de Classes de Objetos 
 
20 
 
3. Diagrama de Classes de Objetos 
3.1. Introdução 
Este capítulo apresenta outro modelo da UML: o Diagrama de Classes de Objetos (ou 
abreviadamente, Diagrama de Classes - DC). Ele é largamente utilizado, em conjunto com 
o Modelo de Casos de Uso, para modelar praticamente todo tipo de sistema. Normalmente, 
o DC é elaborado depois do modelo de UCs, embora isso não seja imprescindível. O mais 
importante é que os dois modelos não se contradigam, isto é, eles devem ser consistentes 
entre si. 
Assim como a planta estrutural de uma casa modela a estrutura da casa, ou seja, os 
elementos que garantem a sua sustentação, o DC modela a estrutura de um sistema – os 
elementos (classes, associações, atributos, operações) que possibilitam a realização do 
comportamento descrito nos UCs do sistema. Daí, sua grande importância. 
[Exemplo de DC] 
 
Figura 3.1: Exemplo de diagrama de classes de objetos 
A Figura 3.1 apresenta um exemplo de diagrama de classes. Nela, pode-se observar os 
principais elementos utilizados na construção desse diagrama: classes (tipos) de objetos, 
atributos e operações de classe, e associações entre classes. Uma leitura de parte desse 
diagrama seria: “Todo (objeto da classe) Carro possuirá (os atributos) modelo, placa e 
potência, e poderá ser solicitado a (executar as operações) imprimirProprietario( ) e 
imprimirDados( ). Além disso, todo (objeto daclasse) Carro estará ligado a um único 
(objeto da classe) Proprietário, enquanto que um (objeto da classe) Proprietário estará 
ligado a um ou mais objetos (da classe) Carro”. 
Modelagem de Sistemas Capítulo 3: Diagrama de Classes de Objetos 
 
21 
 
Um DC nos diz muita coisa sobre a estrutura e o comportamento do sistema que ele 
modela. A estrutura do sistema é definida pelas classes e seus atributos, e pelas associações 
entre as classes; ambos, atributos e associações, representam as informações que o sistema 
armazenará. Já o comportamento previsto nos UCs do sistema, esse deverá resultar da 
execução (possivelmente encadeada) de operações das classes. 
Classe  Objeto 
Como vimos no Capítulo 1, toda representação de alguma coisa, como por exemplo, uma 
pessoa, envolve abstração, ou seja, selecionar as propriedades das pessoas que são 
relevantes para o sistema a ser desenvolvido. Desde a adoção do paradigma da orientação a 
objetos, essas propriedades passaram a incluir, além de propriedades estáticas ou de estado 
(atributos), como por exemplo, nome, data de nascimento, sexo, estado civil, etc., também 
propriedades dinâmicas ou de comportamento (operações ou métodos), tais como nascer, 
casar, etc. Uma classe de objetos é a estrutura formada pelos atributos e operações 
selecionados para representar objetos de um mesmo tipo, no contexto de um dado sistema. 
A Figura 3.2 mostra a representação gráfica de uma possível classe (de objetos) Pessoa: é 
um retângulo dividido em três partes ou compartimentos: o compartimento de cima contém 
o nome da classe, o do meio, os atributos da classe e o inferior, as operações da classe. 
Observe que, juntamente com o nome de cada atributo ou operação, também pode ser 
especificado o tipo (de dados) do valor que o atributo pode receber ou que a operação 
retorna (void se a operação não retorna valor), e a visibilidade dos atributos e das 
operações: 
 “-“ : O atributo (ou operação) é privado(a), ou seja, só pode ser utilizado9 (invocada) 
pelas operações da própria classe; 
 “#”: O atributo (ou operação) é protegido(a), ou seja, só pode ser utilizado 
(invocada) pelas operações da própria classe ou pelas operações de uma subclasse 
dela; e 
 “+”: O atributo (ou operação) é público(a), ou seja, pode ser utilizado (invocada) 
pelas operações de qualquer classe do sistema. 
Em geral, os atributos devem ser privados, e as operações, públicas. Esse esquema de 
visibilidade cria um encapsulamento dos dados da classe, pois qualquer acesso a eles de 
fora da classe só pode ser feito através da invocação de alguma operação nela definida. O 
encapsulamento é importante porque mantém baixo o acoplamento entre as classes e, por 
consequência, o custo de se fazer modificações nas mesmas. Em outras palavras, se uma 
classe está encapsulada, uma modificação nela produz menor propagação de modificações 
em outras classes do sistema. 
A partir da classe Pessoa, pode-se criar (instanciar) objetos com valores específicos 
para os atributos da classe e com o mesmo comportamento invocável (operações) nela 
previsto. Portanto, uma classe funciona como um molde (modelo) para a criação de 
objetos similares – as instâncias ou exemplares da classe. A Figura 3.2 exibe um objeto 
criado a partir a classe Pessoa. 
 
 
9
 Para consultar ou alterar o seu valor. 
Modelagem de Sistemas Capítulo 3: Diagrama de Classes de Objetos 
 
22 
 
 
Figura 3.2: Uma classe (de objetos) Pessoa e um objeto dessa classe 
Todo objeto possui ainda outra característica que independe do seu estado (i.e., dos 
valores dos seus atributos): a sua identidade. Por exemplo, podemos distinguir duas folhas 
de papel A4, mesmo que tenham os mesmos valores dos atributos (identidade no espaço); 
também, se pintarmos uma folha de amarelo (ou seja, mudar um de seus atributos – a cor), 
ela continua sendo a mesma folha de papel (identidade no tempo). 
3.2. Associações entre classes 
Além das classes de um sistema, o DC também mostra as associações existentes entre elas. 
Essas associações são, em sua grande maioria, relações binárias, isto é, relacionam duas 
classes, e estão representadas por linhas que ligam as classes. 
Saiba mais... Também podem aparecer no DC associações ternárias, quaternárias, etc., embora isso 
seja pouco comum. Consulte a bibliografa do curso ou pesquise em sites da Internet se quiser saber 
mais sobre essas associações. 
As associações especificam como os objetos das classes associadas poderão estar 
ligados entre si. Por exemplo, se existe uma associação entre a classe A e a classe B, então 
poderão existir ligações entre os objetos da classe A e os objetos da classe B. Assim como 
um objeto é uma instância de uma classe, uma ligação é uma instância de uma associação. 
A Figura 3.3 apresenta uma associação de nome leciona, entre a classe Professor e a classe 
Curso, cujo significado é Professor leciona em Curso
10
. Portanto, objetos representando 
professores poderão estar ligados a objetos representando cursos, e cada ligação entre um 
objeto-professor e um objeto-curso indicará que o professor leciona naquele curso. Por 
exemplo, o professor p3 está ligado a (ou leciona em) dois cursos (c2 e c3), enquanto que o 
professor p1 só leciona em um curso (c1) e o professor p2 não leciona em nenhum curso. 
Quando representamos uma associação entre duas classes no DC, podemos 
especificar as multiplicidades de cada classe naquela associação, da maneira indicada na 
Figura 3.3. Nela, n e m especificam o número mínimo e máximo de objetos da classe 
Professor que um objeto da classe Curso pode estar ligado, enquanto p e q especificam o 
número mínimo e máximo de objetos da classe Curso que um objeto da classe Professor 
pode estar ligado. A propósito, quais seriam os valores de n, m, p e q na Figura 3.3? 
 
 
10
 Caso exista mais de uma associação entre um mesmo par de classes, elas devem ter nomes distintos (e, 
obviamente, significados distintos). 
Modelagem de Sistemas Capítulo 3: Diagrama de Classes de Objetos 
 
23 
 
 
Figura 3.3: Associação, ligações e multiplicidades 
As multiplicidades que mais aparecem nas associações são as apresentadas a seguir: 
 0..1 : no mínimo zero e no máximo um; 
 1..1 (ou, abreviadamente, 1): no mínimo um e no máximo um (ou: exatamente um); 
esta é a multiplicidade default, ou seja, aquela que vigora quando não se indica nada 
em uma extremidade da associação; 
 0..* (ou, abreviadamente *): no mínimo zero e no máximo vários; 
 1..* : no mínimo um e no máximo vários; 
Existem ainda outras formas de se especificar a multiplicidade, como por exemplo: 
3..5 (no mínimo três e no máximo cinco), ou 1, 3..5 (exatamente um, ou, no mínimo três e 
no máximo cinco). 
[DC-Lab1: Associações e suas multiplicidades (1)] 
Especifique as multiplicidades das associações mostradas na figura a seguir. 
 
[DC-Lab2: Associações e suas multiplicidades (2)] 
Qual das três associações a seguir é a correta? 
Modelagem de Sistemas Capítulo 3: Diagrama de Classes de Objetos 
 
24 
 
 
[DC-Lab3: Atributos x Associações] 
Considere o seguinte: 
 É errado incluir em uma classe um atributo que designa um objeto de outra classe 
presente no DC; o correto nesse caso é introduzir uma associação entre as duas 
classes, com o significado correspondente. 
 Entre um par de classes pode-se ter mais de uma associação (com nomes distintos). 
Com base nas duas observações acima, faça um DC para representar países e suas 
cidades, a capital de cada país, e os nomes dos países e das cidades. 
Associação reflexiva 
Umaassociação pode envolver apenas objetos de uma mesma classe, como mostrado na 
Figura 3.4. Esse tipo de associação recebe o nome de associação reflexiva. 
 
Figura 3.4: Associação reflexiva e papéis 
Em uma associação reflexiva, uma outra propriedade das associações se torna 
bastante útil: o papel (do objeto) de cada classe, na associação. Por exemplo, o DC da 
Figura 3.4 nos diz que, se existir uma ligação entre duas pessoas segundo a associação ter, 
uma delas estará no papel de pai e a outra no papel de filho. 
Classe de associação 
Uma associação também pode ter atributos e operações. Por exemplo, considere a 
associação matriculado entre objetos da classe Aluno e da classe Disciplina. A nota que é 
obtida por um determinado aluno em uma disciplina na qual está matriculado, não é 
atributo da classe Aluno nem da classe Disciplina, mas sim da associação entre elas (ou 
seja, a nota não descreve um aluno ou uma disciplina isoladamente, mas sim a associação 
do aluno com a disciplina). Nesse caso, a associação ganha status de classe – uma classe 
de associação, já que ela não apenas associa dois tipos de objetos, mas também representa 
ou descreve um novo tipo de objeto que possui estado (atributos) e comportamento 
Modelagem de Sistemas Capítulo 3: Diagrama de Classes de Objetos 
 
25 
 
(operações). A Figura 3.5 mostra como se desenha uma classe de associação no DC. A 
classe de associação recebe o mesmo nome da associação que a origina. Essa figura 
também mostra uma classe de associação derivada de uma associação reflexiva. 
Figura 3.5: Exemplos de classes de associação 
Agregação e Composição 
O que existe de diferente entre uma associação entre as classes Aluno e Disciplina e outra 
entre as classes Time e Jogador? Uma resposta razoável seria: um jogador é parte de um 
time, mas o mesmo não se pode dizer com relação à associação entre disciplina e aluno 
(uma disciplina não é parte de um aluno, nem um aluno é parte de uma disciplina). Esse 
tipo especial de associação que relaciona o todo a suas partes, com o significado de que o 
todo contém as (ou é constituído pelas) partes, recebe o nome de agregação. A Figura 3.6 
mostra dois exemplos de agregação e como diferenciar uma associação comum de uma 
agregação: colocando um losango na extremidade correspondente à classe que representa o 
“todo”. 
[Agregação] 
 
Figura 3.6: Exemplos de associações do tipo agregação 
[Composição] 
As situações modeladas na Figura 3.6 têm características em comum, mas também se 
diferem em alguns aspectos. Primeiramente, tanto um time é constituído por jogadores, 
quanto um pedido é constituído por itens de pedido (produtos, com suas quantidades e 
preços unitários). Entretanto, um jogador pode existir sem estar ligado a um time; por 
exemplo, um jogador de futebol com passe livre ou desempregado. Já um item de pedido 
não pode existir sem estar ligado a um pedido. Além disso, um mesmo jogador pode 
participar de mais de um time, como quando faz parte do time de um clube de futebol mas 
também do time da seleção brasileira, o que não acontece com um item de pedido, que só 
Modelagem de Sistemas Capítulo 3: Diagrama de Classes de Objetos 
 
26 
 
pode fazer parte de um único pedido. E mais: se um time for desfeito (deixar de existir), 
faz sentido que os jogadores continuem a existir, certo? Mas, e os itens de um pedido, se o 
pedido for apagado? Portanto, percebemos que as duas situações modeladas da mesma 
forma (através de agregação) na Figura 3.6 são, de fato, diferentes. Levando em conta isso, 
a UML definiu um tipo especial de agregação, denominado composição, que traduz as 
características de uma agregação mais forte, como é o caso da agregação entre Pedido e 
Item de pedido. A Figura 3.7 mostra exemplos de composição. Observe que, graficamente, 
uma composição se difere de uma agregação pelo preenchimento do losango com a cor 
preta. 
 
Figura 3.7: Exemplos de associações do tipo composição 
[Comparação entre Agregação e Composição] 
Outra característica tanto da agregação quanto da composição é que uma ação sobre 
o todo tende a se propagar nas partes. Por exemplo, se um time viaja, os jogadores também 
viajam. Entretanto, tem um tipo de ação que só se propaga na composição: apenas na 
composição, a eliminação do todo resulta, necessariamente, na eliminação das partes. Em 
outras palavras, enquanto na composição o tempo de vida dos objetos-parte é sempre no 
máximo igual ao tempo de vida do seu objeto-todo, na agregação um objeto-parte pode 
durar mais do que o seu objeto-todo (ou seja, pode continuar a existir mesmo depois do 
objeto-todo ser eliminado). Por exemplo, quando se um time deixa de existir, normalmente 
os jogadores que compunham aquele time permanecem existindo. Por outro lado, quando 
um pedido é eliminado, os itens que compunham aquele pedido não têm porque continuar 
a existir. Igualmente no relacionamento entre Empresa e Departamento (Figura 3.7), 
quando a empresa deixa de existir, não faz sentido querer manter os seus departamentos 
existindo. Essa diferença entre composição e agregação se reflete na multiplicidade do lado 
da classe-todo: enquanto na agregação essa multiplicidade normalmente é 0..1 (veja na 
Figura 3.6), na composição ela será sempre 1 (isto é, 1..1 – veja na Figura 3.7). A 
multiplicidade do lado da classe-parte pode variar, tanto na agregação quanto na 
composição. Normalmente, considera-se que um objeto-todo possa ser criado antes da 
criação dos seus objetos-parte (multiplicidade 0..*, ou simplesmente *). 
A seguir é apresentado um quadro comparativo entre agregação e composição. 
Tabela 3.1: Comparação entre agregação e composição 
Característica Agregação Composição 
Relação todo-parte Tem Tem 
Propagação de ação no objeto-todo a seus objetos-
parte (exceto, eliminação do objeto-todo) 
Sim Sim 
Modelagem de Sistemas Capítulo 3: Diagrama de Classes de Objetos 
 
27 
 
Característica Agregação Composição 
Propagação de eliminação do objeto-todo a seus 
objetos-parte 
Não Sim 
Existência do objeto-parte independentemente do seu 
objeto-todo 
Sim Não 
Tempo de vida do objeto-parte em relação ao seu 
objeto-todo 
Pode ser maior Menor ou igual 
Participação do (mesmo) objeto-parte na composição 
de mais de um objeto-todo 
Pode Não pode. 
Multiplicidade (usual) no lado da classe-todo 0..1 ou 0..* 1 
Multiplicidade (usual) no lado da classe-parte * * 
 
[DC-Lab4: Agregação e composição] 
Considere as classes Microcomputador, Monitor, Teclado e Gabinete. Desenhe um DC 
com essas classes e estabeleça as associações entre elas que julgar pertinentes (justifique). 
Generalização/especialização 
Existe ainda um outro tipo de associação entre classes, denominada associação de 
generalização/especialização. Quando duas ou mais classes são muito semelhantes, para se 
evitar a declaração dos mesmos atributos e operações repetidamente em cada classe, cria-
se uma classe geral onde são declarados os atributos e operações comuns a todas as classes 
envolvidas, as quais são então declaradas como especializações da classe geral. Em cada 
classe especializada ficam apenas os atributos e operações específicas dela, já que ela 
herda todos os atributos e operações declarados na classe geral à qual está associada. Essa 
é uma medida que, normalmente, contribui para melhorar a legibilidade e a compreensão 
do DC. Veja na Figura 3.8, exemplos desse tipo de associação entre classes. 
Na Figura 3.8, o diagrama da esquerda estabelece que Conta poupança é uma 
especialização de Conta corrente; consequentemente, herda todos os atributos (agencia e 
nrConta) e todas as operações (depositar( ) e obterSaldo(

Outros materiais