Este documento apresenta os diagramas de casos de uso e classes da UML. Inclui definições de casos de uso, classes, atributos, operações, relacionamentos e exemplos de diagramas de classes.
1. DIAGRAMAS DE
CASOS DE USO
Profs: Edgar Gemo
Zeferino Saugene
UML
Casos de uso
• Os Uses Cases ou ”casos de utilização”
constituem em UML uma técnica para
representar o levantamento de requisitos do
sistema (Nunes, 2001)
• Desde sempre que o correcto levantamento
de requisitos no desenvolvimento de sistemas
de informação tenta garantir que o sistema
será útil para o utilizador final, estando de
acordo com as suas necessidades (Nunes,
2001:13)
UML
1
2. Diagramas Classes
• Profs: Edgar Gemo
• Zeferino Saugene
UML
Introdução
Aspectos tratados pelos Diagramas de
Classe: Dados e Funções
UML
2
3. Introdução
• Um Diagrama de Classes:
– Dá uma visão estática do sistema;
– Exibe um conjunto de classes,
interfaces e seus relacionamentos;
– As classes especificam tanto a
estrutura como o comportamento
dos objectos (que são instâncias de
classes);
UML
Introdução
• Ao completar os diagramas de
interação, podemos completar o
diagrama de classes:
– Normalmente criamos os diagramas
de classe em paralelo aos de
interação
• No final, precisamos apenas incluir os
detalhes que faltam (métodos, atributos
ou associações)
UML
3
4. Introdução
• Informações tipicamente
encontradas num Diagrama de
Classes:
– Classes, associações e atributos
– Interfaces, incluindo métodos e
constantes
– Métodos
– Informação de tipo de atributos
– Navegabilidade
– Dependências
UML
Exemplo de Diagrama de
Classes
Nome da Classe
Atributo
Estudante Disciplina
CodEstudante : string CodDisciplina : String
Nome : String Inscrição Nome : String
Apelido : String CodEstudante : String Descrição : String
BI/DIR : String CodDisciplina : String Nível(Ano) : Integer
Endereço : String DataInscrição : date Semestre : String
Sexo : char RegimeTemporal : Integer
dataNascimento : date 1 1..* efectuarInscricao() 1..* 1 CargaSemanal : integer
Naturalidade : string alterarIncricao() Bibliografia : String
removerInscricao()
registarEstudante() listarInscritos() registarDisciplina()
alterarDadosestudante() alterarDisciplina()
removerEstudante() removerDisciplina()
Operação Associação Multiplicidade
UML
4
5. Construindo um
Diagrama de Classes
• Identificar todas as classes que
participam no sistema
• Adicionar as classes ao diagrama
• Identificar os atributos para cada
classe
• Adicionar os métodos respectivos
a cada classe
UML
Construindo um
Diagrama de Classes
• Escolher os tipos dos atributos e dos
parâmetros dos métodos
• Incluir as associações necessárias para
dar visibilidade de atributos
• Adicionar setas às associações para
indicar a direção da visibilidade de
atributos (opcional)
• Introduzir linhas de relações de
dependência para indicar a visibilidade
UML que não seja de atributo
5
6. Atributos
• Um atributo representa alguma
propriedade que é compartilhada por
todos os objectos de uma classe
• Descrevem os dados contidos nas
instâncias de uma classe
• Servem para manter o estado dos
objectos.
– Cada objecto possui valores
independentes para os mesmos
atributos
UML
Sintaxe de Atributos
• Sintaxe
– [visibilidade] nome [[multiplicidade]] [:tipo]
[= valor inicial] [{propriedades}]
– Atributos de classe são sublinhados
• Exemplos
– CPF: Integer
– Nome: String = “Alberto”
– Endereço [0..20] : String
– gerenciadorDeJanelas: GerenciadorDeJanelas
UML
6
7. Operações
• Uma operação é a implementação de um
serviço que pode ser requisitado a
qualquer objecto ou classe, possivelmente
afectando o seu estado
– A execução de uma operação pode resultar na
alteração do valor de seus atributos
– Operações de instância
• Actuam sobre uma instância (objecto) de uma classe
– Operações de classe
• Actuam sobre a classe, criando e/ou modificando
atributos de classe
UML
Sintaxe para Operações
• Sintaxe
– [visibilidade] nome [(lista-de-
parâmetros)]
[:tipo-de-retorno] [{propriedades}]
– Operações de classe são sublinhadas
• Exemplos
– LerTemperatura () : Number
– Área (Lado : Integer) : Integer
– ValorPadrão () : Integer {query}
UML
7
8. Relacionamentos
• Poucas classes têm sentido sozinhas
• Os relacionamentos ligam
classes/objectos entre si criando relações
lógicas entre eles
• Os relacionamentos podem ser dos
seguintes tipos:
– Associação,
– Agregação e Composição ,
– Generalização e Herança.
UML
Notação para
Relacionamentos
Associação Herança
Agregação Dependência
Realização Composição
UML
8
9. Associação
• Surge da necessidade de obter
mais informação de uma
associação.
• Normalmente, as classes
associativas surgem nas relações
de “Muitos para Muitos”
rótulo da associação
emprega
Companhia Funcionário
UML
Classe Associativa
• É introduzida quando uma
associação tem propriedades
associadas
* 1..*
Companhia Empregado
Trabalho
descrição
salário
UML
9
10. Associação Unária
• Quando há um relacionamento de
uma classe para ela mesma
Funcionário 1..*
1 rótulo da associação
gerencia
UML
Associação Binária
• Quando há duas classe envolvidas
na forma direta de uma para a
outra
Cliente faz Pedido
1 0..*
UML
10
11. Associação N-ária
• As linhas das associações são
conectadas por um losango
UML
Agregação e Composição
• A Agregação pretende demonstrar que
um “Todo” é composto por “Partes”
• A Composição é uma forma mais forte
de Agregação
– Há uma coincidência da vidas das partes
– Uma vez criada a parte, ela irá viver e morrer
com o todo
– O “Todo” é responsável pelo gerenciamento
da criação e destruição das partes
UML
11
12. Agregação e Composição
• Exemplo de uma Agregação
Mesa
Restaurante
Num_Mesa
Nome 1 1..*
Morada
UML
Exemplo de uma
Composição
Item Encomenda
Encomenda
numItem
numE
1 1..* quantidade
data
tipoE
UML
12
13. Generalização e Herança
• Generalização (Herança)
– Relacionamento entre um elemento
mais geral e um mais específico
– O Conceito Herança está presente,
pois as subclasses (filhos) herdam
da superclasse (pai) a estrutura em
termos de atributos e operações.
UML
Exemplo de Generalização
Forma
origem
mover()
exibir()
Retângulo Círculo Polígono
ponto : Ponto raio : float pontos : ListaDePontos
exibir()
Quadrado
UML
13
14. Multiplicidade
• É a cardinalidade de uma associação
(também usa-se 0..*)
UML
Navegabilidade
• Em geral a navegação entre as
classes de uma associação é bi-
direcional.
• Porém, podemos limitá-la a
apenas uma direção
tem
Usuário Senha
UML
14
15. Exemplos de Diagramas de Classes
Classes que se
relacionam
duplamente:
Informação que
surge a partir da
associação de
duas outras
classes:
UML
Exemplos de Diagramas de Classes
Agregação:
UML
15
16. Exemplos de Diagramas de Classes
Composição:
• A remoção do todo
implica na remoção das
partes;
• O acesso às partes é
restrito ao todo.
UML
Exemplos de Diagramas de Classes
Generalização/Especificação – A Classe Abstracta
•Não permite a criação de objectos;
•Existe apenas para gerar novas sub-classes.
UML
16
17. Diagramas de Classes - Restrições
• Descrevem situações que NÃO podem ocorrer no
modelo
• Pode ser usado para:
Que o programador siga a orientação,
Transformação formal de modelos (MDA).
UML
Diagramas de Classes - Restrições
Restrição {ou}
implica na
selecção exclusiva
entre duas ou mais
associações
existentes em uma
classe.
Observação:
possível
mapeamento para
uso de restrição
{ou} com
multiplicidade
UML máxima 1.
17
18. Diagramas de Classes - Restrições
Observar que para associações OU do tipo 1..* não
possível mapear directamente para herança.
UML
Diagramas de Classes - Restrições
UML
18
19. Diagramas de Classes - Discussão
Dado o modelo de controle académico:
• O aluno pode exercer o papel de monitor durante um período
• Permitir que uma pessoa exerça simultaneamente o papel de
Professor e Aluno da Universidade
Qual é o Problema?
UML
Diagramas de Classes - Discussão
Qual é o Problema?
• Acomodação inábil de objectos que mudam de classes,
• Transmutação.
UML
19
20. Diagramas de Classes - Discussão
A Solução Óptima:
• Combinar herança e associação.
UML
Diagramas de Classes - Erros Comuns
1. Usar classes ou associações para representar
consultas ou operações do sistema que não devem ser
registradas.
2. Identificar métodos nas classes sem ter feito a
modelação temporal
O que é sintonizar?
-Quem usa?
UML -Quais os parâmetros?
20
21. Diagramas de Classes - Erros Comuns
3. Inserir atributos quando o ideal é criar uma classe.
UML
Diagramas de Classes - Erros Comuns
4. Usar herança quando a quantidade de tipos é grande
ou dinâmica.
UML
21
22. Diagramas de Classes - Erros Comuns
5. Inserir chaves-estrangeiras no diagrama de classes:
• As associações são suficientes.
UML
Diagramas de Classes -
Exercícios
1. Em uma Universidade, o plano de carreira para
professores é dividido em quatro etapas: Auxiliar,
Assistente, Adjunto e Titular.
• Construa um modelo de classes que preserve o histórico de um
professor durante a sua vida profissional. Em particular, é
importante manter o registro do início e término do
desempenho em uma das etapas.
2. Considerando um sistema de gestão duma cadeia de Hoteis e os
seus serviços, desenhar um diagrama de classes mostrando
relacionamentos entre as seguintes classes de objectos (Incluir
associações, agregações, generalizações e atributos):
• Hotel, quarto, hóspede, funcionário, sauna, boate, restaurante,
bar, piscina, reserva e outras classes relacionadas.
UML
22
23. Diagramas de Classes - Exercícios
3. Considere o diagrama de classes UML abaixo e marque a
alternativa correcta:
a) Considerando um objecto e qualquer de Empresa, pode-se afirmar
que a quantidade de objectos de Funcionário que participam da
associação a com e é sempre inferior à quantidade de objectos que
participam de b (também com e);
b) Não existem objectos de Funcionário que participam
simultaneamente da associação a e b com um objecto de Empresa;
c) Pode existir um objecto de Empresa que não esteja associado a
qualquer objecto de Funcionário, seja pela associação a ou b;
d) Um objecto de Funcionário pode estar associado com mais de um
objecto de Empresa;
e) A associação de subordinação garante que um supervisor está
associado com subordinados que estão na mesma Empresa.
UML
Diagramas de Classes - Exercícios
4. Considere o diagrama de classes UML abaixo e marque a
alternativa correcta:
a) Para cada objecto de Actividade existe somente um único valor de
data-início;
b) Um objecto de Actor pode simultaneamente gerir vários projetos e
actuar em várias actividades;
c) Um Objectivo pode ser atendido por vários objectos de Actividade;
d) Em um Projecto sua duração é determinada pela duração de suas
actividades;
e) Os objectos de Actividade são ordenados pelo valor do atributo id.
UML
23
24. Bibliografia
• Bennett, S. et all (2002) Object-Oriented
Systems Analysis and Design using UML,
U.S., Mc Graw-Hill Education
• Bezerra, E. (2003), Princípios de Análise e
Projecto de Sistemas com UML, Rio de
Janeiro, Editora Campus Ltda
• Neto, A.C. (2001), Análise e Projeto de
Sistemas I, http://www.dcce.ufs.br/
• Nunes, M. e O´Neill (2001), Fundamental
de UML, Lisboa, FCA - Editora de
Informática
UML
24