Escolar Documentos
Profissional Documentos
Cultura Documentos
ModeloConceitualAl PDF
ModeloConceitualAl PDF
Diagrama de Classes – Um
Perspectivas de um Diagrama de
Exemplo
1
Store
1
Uses Classes
address : Address
1
name : Text
Houses
1
Describes
1 1
POST *
date : Date
SalesLineItem
no domínio do problema
isComplete : Boolean
Captures time : Time Contains
quantity : Integer
endSale() 1 1 1 1.. *
becomeComplete()
enterItem()
makePayment()
makeLineItem()
makePayment()
subtotal()
No projeto – pensamos em objetos (classes)
para a solução
total()
1
Logs-completed 4 * Payment
Paid-by
amount : Quantity
1
Perspectivas de um Diagrama de
Classes
Definição de Objetos
• O modelo conceitual (análise) representa as Conceitual: representa uma entidade,
classes no domínio do negócio em questão. Não
leva em consideração restrições inerentes à
“coisa” , processo ou conceito do mundo
tecnologia a ser utilizada na solução de um real e que possui:
problema. Identidade – valor de uma característica que o
• O modelo de classes de especificação (projeto) é identifica para reconhecimento
obtido através da adição de detalhes ao modelo Atributos – qualidades, características
anterior conforme a solução de software escolhida.
Comportamento – habilidades de
• O modelo de classes de implementação
corresponde à implementação das classes em processamento
alguma linguagem de programação.
1
Definição de Objetos Definição de Classes
De implementação: representa um módulo de Conceitual: são agrupamentos de objetos, são
sw que recebe e produz dados abstrações de um coletivo de entidades do
Identidade – identificador em lg de implementação mundo real
Atributos – variáveis e seus tipos, que recebem O modelo genérico desse coletivo contém
diferentes valores e definem o estado do objeto atributos e comportamentos comuns.
Comportamento – funções ou procedimentos, os
resultados dessas funções determinam o
comportamento do objeto
Atributos Atributos
Métodos Métodos
2
Notação UML para Atributos - Notação UML para Atributos -
Visibilidade Multiplicidade
+ : visibilidade pública: o atributo ü visível Usada para especificar atributos que são
no exterior da classe. arranjos
- : visibilidade privada : o atributo é visível Indica dimensão de vetores e matrizes
somente por membros da classe.
# : visibilidade protegida: o atributo é Ex: notas[10]
visível também por membros de classes matrizDeValores[5,10]
derivadas
3
Métodos ou Serviços Métodos ou Serviços
Sobrecarga de operadores (Overloading) Polimorfismo
Operações de mesmo nome, mas Possibilidade de uma função poder manipular
implementadas de maneira diferente valores com tipos (formas) diversas
Ex: function comp(L:lista):integer
Ex: operações de adição, subtração ↑
implementadas diferentemente para real e qualquer tipo de lista (genérico)
inteiro mesma implementação
4
Notação UML para Métodos – Notação UML para Métodos –
Tipo de Retorno Visibilidade e Propriedades
O Valor-de-Retorno indica se o método retorna Visibilidade – similar ao de atributo
algum valor ao término de sua execução e qual
o tipo de dado do valor retornado. Comentários ou restrições para os métodos
Ex: Ex:
Visão Conceitual
Area() {Área <=600}
CalcularValor(): TipoDinheiro
Restringe a 600 unidades o valor máximo das áreas
Visão de implementação a calcular
ArmazenarDados(nome:char[30]): bool
5
Modelo Conceitual
• Representação de conceitos no domínio do
Diagrama de Classes problema
Identificando Conceitos
Identificando Conceitos (Entidades) –Regras Úteis
• É uma entidade (idéia, coisa ou objeto) do mundo
real. É melhor especificar demais do que de menos
Não exclua entidades simplesmente porque os
• Um bom modelo conceitual deve superestimar o requisitos não indicam a necessidade de guardar
número de conceitos. informações sobre eles (comum em projeto de BD)
Comece fazendo uma lista de entidades candidatos
• Os conceitos são associados ao estereótipo de classe a partir de um checklist.
<< entidade >> Considere os substantivos e frases nominais nas
– um estereótipo para uma classe UML é um classificador descrições textuais do domínio do problema como
que mostra o tipo ao qual a classe pertence. possíveis candidatos a entidades ou atributos
6
Checklist: Classes Entidades Típicas Classes Entidades Típicas
Categoria Exemplos Categoria Exemplos
Objeto físico ou tangível Terminal de ponto-de-venda Coisas em um container Item
Avião Passageiro
Especificação, projeto, ou Especificação de produto Sistemas externos Serviço de crédito
descrição de coisas
Descrição de vôo Controle de tráfego aéreo
Lugares Loja Nomes abstratos Fome
Aeroporto Aracnofobia
Transações Venda, Pagamento Organizações Departamento de vendas
Reserva Companhia aérea
Itens de transação Itens de venda Eventos Venda, Assalto, Reunião
Parcelas de pagamento Vôo, Decolagem
Papéis de pessoas Operador Regras e políticas Política de devolução
Piloto Política de cancelamento
Container de coisas Loja
Avião
7
Criando o Diagrama de Classes- Entidades de Especificação ou
Perspectiva Conceitual Descrição
Estratégia do “fazedor de mapas”:
A especificação ou descrição de um objeto
Usar nomes existentes no vocabulário do domínio deve ser representada como uma entidade em
Incluir apenas conceitos pertinentes para os requisitos separado
(casos de uso) em questão
evita perda de informação quando o objeto é
Excluir tudo que não há no domínio do problema
deletado
destino
ou... ?
Vôo
nome
Aeroporto
Muito comum no domínio de produtos e
vendas Item
Especificação-Produto
Atributos normalmente correspondem a um texto ou Item
Ex.:
descrição Descreve
descrição
número no mundo real
preço
pior número serial
preço 1
melhor * Número serial
UPC UPC
Entidades de Especificação ou
Descrição – Outro exemplo Identificando Atributos
Vôo
Voa-para
Aeroporto
Atributos devem preferencialmente
representar tipos primitivos de dados ou de
data pior
número 1 nome
hora *
valores simples
Ex.: Data, Número, Texto, Hora, Endereço, etc.
Vòo
data
Descrito-por
Descrição-Vôo
melhor Atributos não devem ser usados para:
hora * 1 número
nome
estrangeira”)
8
Adicionando Atributos ao
Sistema POST Atributo Derivado
Identificando Relacionamentos
1. Associações
Os relacionamentos entre as classes representam a
interação entre seus objetos: em geral, representam Conexão entre classes/objetos
a utilização de serviços e/ou a organização entre as
mesmas. Relacionamento que descreve uma série de
– Devem refletir o domínio do problema ligações entre duplas de classes/ objetos
Tipos: Uma ligação significa por exemplo que:
Associação (associação simples)
elas "conhecem uma a outra“
Agregação/composição
Generalização "estão conectadas com“
Dependência para cada X existe um Y
Refinamentos
Associações Associações
• Uma associação representa relacionamentos O mais comum, com apenas uma conexão,
(ligações) que são formados entre objetos representada por uma linha sólida e um
durante a execução do sistema.
– embora as associações sejam representadas nome (geralmente verbo)
entre classes do diagrama, tais associações
representam ligações possíveis entre objetos
das classes envolvidas registra
Caixa Venda
9
Nome de associação, direção de
Associações leitura e papéis
Podem possuir dois nomes, significando um • Para melhor esclarecer o significado de uma
nome para cada sentido da associação e os associação no diagrama de classes, a UML
papéis de cada classe define três recursos de notação:
– Nome da associação: fornece algum
significado semântico à mesma.
registra – Direção de leitura: indica como a associação
Caixa Venda deve ser lida
é registrada por – Papel: para representar um papel específico em
uma associação.
5
T exactly five
3, 5, 8 exactly three,
T
five or eight
10
Exemplo (multiplicidade)
Exemplo (multiplicidade) • Uma corrida está associada a, no mínimo,
• A caixa pode registrar várias vendas dois velocistas
• Uma venda é registrada em somente uma • Uma corrida está associada a, no máximo,
caixa seis velocistas.
• Pode haver uma caixa que não registra • Um velocista pode estar associado a várias
nenhuma venda corridas (a zero ou mais)
participa
Velocista Corrida
registra 2..6 0..*
Caixa Venda
1 0..*
11
Associações - Navegabilidade Associações - Navegabilidade
Mostra a direção de navegação, ou seja do canal Dada uma mercadoria pode-se identificar diretamente
de comunicação entre os objetos e classes. a empresa fornecedora, mas a volta não é verdadeira
Uma associação é navegável da classe A para a
classe B, se, dado um objeto de A, consegue-se
obter de forma direta os objetos relacionados da fornece
classe B. Empresa Mercadoria
0..* 0..*
É importante na visão de especificação e
implementação -> visibilidade entre objetos,
capacidade de um objeto de uma classe mandar
mensagem a um objeto de outra classe
Exemplo (associação
Associações reflexivas
reflexiva)
• Associa objetos da mesma classe.
– Cada objeto tem um papel distinto na associação.
Supervisão
• A utilização de papéis é bastante importante para supervisor 1
evitar ambigüidades na leitura da associação.
• Uma associação reflexiva não indica que um Empregado *
objeto se associa com ele próprio. supervisionado
– Ao contrário, indica que objetos de uma mesma classe
se associam
Associação Exclusiva
Podem ser especificadas restrições em duas ou mais Associação Ordenada
associações
Na associação exclusiva objetos de uma classe podem Especifica uma ordem entre os objetos da
participar de no máximo uma das associações ao associação. Ex: janelas de um sistema têm
mesmo tempo que ser ordenadas na tela (uma está no topo,
0..*
Contrato
0..* uma está no fundo e assim por diante).
em OCL: xor
{OU}
1..* 1..* {ordenada}
Janela Top Janela Bottom
Empresa Pessoa
12
Notação para uma classe
Classes de Associações (ou
Associativas associativa
• É uma classe que está ligada a uma • Representada pela notação utilizada para uma
associação, ao invés de estar ligada a outras classe. A diferença é que esta classe é ligada a
classes. uma associação.
• É criada quando duas ou mais classes estão
Emprego
associadas, e é necessário manter informações salário
sobre esta associação que possui operações e dataContratação
2. Agregação/ Composição
Associação Qualificada Casos particulares de associação
conseqüentemente, multiplicidades,
Usadas com multiplicidades 1..* ou *. O participações, papéis, etc. podem ser usados
qualificador (chave) identifica um objeto igualmente
onde se puder utilizar uma
chave para agregação/composição, uma associação também
recupera conta poderá ser utilizada.
13
Agregação/Composição Como identificar
• Características particulares: • Sejam duas classes associadas, X e Y. Se
– São assimétricas: se um objeto A é parte de um uma das perguntas a seguir for respondida
objeto B, B não pode ser parte de A. com um sim, provavelmente há uma
– Propagam comportamento, no sentido de que agregação onde X é todo e Y é parte.
um comportamento que se aplica a um todo – X tem um ou mais Y?
automaticamente se aplica as suas partes. – Y é parte de X?
– As partes são criadas e destruídas pelo todo, na
classe do objeto todo, existem operações para Palavras chaves: consiste em, contém, é
remover e adicionar as partes parte de, tem, possui, é composta de, faz
parte de, etc.
é composto de é composto de
Time Jogador capítulo seção
* * 1 *
14
Herança de associações Generalização/Especialização
• Atributos e operações e associações são herdados Diferença semântica entre a herança e a associação.
pelas subclasses. • A primeira trata de um relacionamento entre
Realiza
classes, enquanto que a segunda representa
Cliente Pedido relacionamentos entre instâncias de classes.
1 *
• Na associação, objetos específicos de uma classe se
associam entre si ou com objetos específicos de
outras classes.
– Herança: “Gerentes são tipos especiais de funcionários”.
ClientePessoaFísica ClientePessoaJurídica
– Associação: “Gerentes chefiam departamentos”.
Generalização/Especialização
Hierarquias de generalização • Transitividade: uma classe em uma hierarquia herda
Forma propriedades e relacionamentos de todos os seus
origem ancestrais.
mover() – Ou seja, a herança pode ser aplicada em vários níveis,
exibir() dando origem a hierarquia de generalização.
– uma classe que herda propriedades de uma outra classe
pode ela própria servir como superclasse.
Retângulo Círculo Polígono
ponto : Ponto raio : float pontos : ListaDePontos • Assimetria: dadas duas classes A e B, se A for uma
exibir() generalização de B, então B não pode ser uma
generalização de A.
– Ou seja, não pode haver ciclos em uma hierarquia de
Quadrado
generalização.
15
Herança Múltipla
Herança Múltipla
_________
(Entrelaçamento)
16
Classes abstratas – Sistema Post Restrições sobre generalizações
• Restrições sobre generalizações são representadas
(entre chaves) no diagrama de classes próximas à
linha do relacionamento.
• Restrições predefinidas pela UML:
– Sobreposta
– Disjunta
– Completa
– Incompleta
superclasse pode não pertencer a nenhuma das Homem Mulher Nadador Corredor
subclasses
17
Quais hierarquias são adequadas? Dicas
• Deve-se evitar a construção de hierarquias de
generalização muito profundas (com mais de três níveis)
– dificultam a leitura do diagrama.
• Papéis e subclasses não devem ser confundidos.
– Um papel corresponde ao uso de uma certa classe em
uma associação.Uma classe pode assumir vários papéis.
– Deve-se evitar a criação de subclasses em situações que
podem ser resolvidas através da utilização de papéis.
4. Dependências
5. Refinamentos
Conexão entre dois elementos,
Relacionamentos entre duas descrições de uma
representando que uma mudança no
mesma coisa, mas em níveis de abstração
elemento independente afeta o dependente.
diferentes
elemento que depende elemento de que se depende São usados em modelos de coordenação, ou
(usa) (usado) seja, modelos que mostram como os modelos de
diferentes fases se relacionam
18
Associações Típicas Associações Típicas
Categoria Exemplos Categoria Exemplos
A é uma parte física de B (*) Gaveta - POST A é um membro de B Operador - Loja
Asa - Avião Piloto - Companhia Aérea
A é uma parte lógica de B (*) Item de Venda - Venda A é uma sub-unidade Departamento - Loja
organizacional de B
Escala - Vôo Manutenção - Companhia Aérea
A está fisicamente contido em B (*) POST - Loja A usa ou gerencia B Operador - POST
Passageiro - Avião Piloto - Avião
A está logicamente contido em B (*) Descrição-Item - Catálogo A se comunica com B Cliente - Operador
Vôo - Roteiro de Viagem Agente de Reserva - Passageiro
A é uma descrição de B Descrição-Item - Item A está relacionado com uma Cliente - Pagamento
transação B
Descrição-Vôo - Vôo Passageiro - Bilhete
A é um item de uma transação ou Item de Venda - Venda A é uma transação relacionada Pagamento - Venda
relatório B com outra transação B
Opção de Reserva - Reserva Reserva - Cancelamento
A é conhecido/registrado/repor- Venda - POST A é possuído por B POST - Loja
tado/capturado em B (*)
Reserva - Terminal de Reserva Avião - Companhia Aérea
(*) Alta prioridade
Adicionando Associações ao
Modelo Conceitual do Sistema
Identificando Associações
POST
Regras úteis: Relacionamentos fundamentais
Focar nas associações cujo conhecimento deve ser Venda Capturada-em POST
preservado
Para conhecer a venda corrente, calcular total e imprimir
Usar nomes baseados em expressões verbais que façam recibo
sentido quando lidas no contexto do modelo
Venda Paga-por Cliente
Evitar mostrar associações deriváveis ou redundantes
Para saber se a venda foi paga, calcular troco, e imprimir
É mais importante identificar conceitos do que
recibo
associações
Associações demais tendem a confundir um modelo ao Catálogo-Produto Contém Especificação-Item
invés de iluminá-lo Para obter a especificação de um item, dado um UPC
19
Eliminando Associações
Preservando Associações de
Redundantes
Compreensão
Preservar apenas associações de conhecimento pode
Associação Consideração resultar num modelo que não transmite um completo
Venda Iniciada-por Operador Conhecimento não exigido nos entendimento do domínio
requisitos; derivável da associação
Operador Registra-vendas-em POST. Ex.: Venda Iniciada-por Cliente
Operador Registra-vendas-em POST Conhecimento não exigido nos Remoção deixa de fora um aspecto importante do domínio— o fato
requisitos. de que um cliente gera uma venda
POST Inicializado-por Gerente Conhecimento não exigido nos
requisitos.
Venda Iniciada-por Cliente Conhecimento não exigido nos
requisitos. Regra geral:
Loja Armazena Item Conhecimento não exigido nos
requisitos.
Enfatizar associações de conhecimento, mas preservar
Item de Venda Registra-venda-de Item Conhecimento não exigido nos
associações que enriquecem o entendimento do domínio
requisitos.
Identificação dos
Relacionamentos Identificando Generalizações
Na perspectiva de implementação representa • Quando particionar em Sub-Classes
um canal de comunicação entre duas classes a sub-classe tem atributos adicionais de interesse
A necessidade desse canal é dada pelos a sub-classe tem associações adicionais de
diagramas de interação. Sempre que existir interesse
uma mensagem trocada entre dois objetos a sub-classe será manipulada ou usada de maneira
diferente da super-classe ou das outras sub-classes
nesses diagramas existirá uma associação
entre eles, que representa as responsabilidades a sub-classe se comporta diferente da super-classe
ou das outras sub-classes
das classes.
20
Identificando Agregações Identificando Agregações
Verificar se algumas classes podem ser Verificar se alguma classe pode ser sub-
agrupadas em algum composto: dividida em partes.
elas são geralmente criadas/destruídas no as partes possuem tempo de vida limitado ao
mesmo instante. tempo de vida do composto
possuem relacionamentos comuns possuem relacionamentos particulares e de
interesse
1
1
1 • Bezerra, E. Princípios de Análise e Projeto com a UML, ed. Campus-
Elsevier. 2003.
Paid-by Initiated-by 3 Records-sales-on
1 1 1
amount
21