Buscar

Biblioteca_585593

Prévia do material em texto

Diagrama de Classes
Modelagem de Sistemas
Diagrama de Classes
� Introdução – Diagrama de classes
� Elementos do diagrama de classes
Diagrama de Classes - Introdução
Exemplo:
Aluno
nome: Texto
matrícula: Inteiro
definirNome(nome)
obterNome()
definirMatricula(matricula)
obterMatricula
Turma
código: Texto
sala: Texto
horario: Horario
estaAberta()
definirProfessor(professor)
incluirAluno(aluno)
está-matriculado-em
Professor
nome: Texto
titulação: Texto
definirNome(nome)
obterNome()
definirTitulacao(titulo)
obterTitulacao
é-ministrada-por
Diagrama de Classes - Introdução
� Conjunto de objetos do 
mesmo tipo
� Com mesmas características
� Propriedades
� Atributos / Relacionamentos
� Comportamento
� Operações (métodos)
Modelo que representa as informações necessárias para 
realização das funcionalidades do sistema em estudo a 
partir do conceito de CLASSE. 
CLASSE
Diagrama de Classes - Introdução
� Alunos
� Professores
� Disciplinas
� Matrículas
� ...
Em termos de objetos, o que temos numa universidade? 
Cada grupo de objetos tem suas 
características (atributos e métodos)
O analista então cria CLASSES para 
representar esses objetos
Podemos pensar uma CLASSE como 
um template, um molde, uma forma 
para gerar objetos
Diagrama de Classes - Introdução
� Descreve a estrutura estática de um sistema
� As classes representam objetos que podem ser 
manipulados por esse sistema.
� As classes especificam tanto as propriedades quanto o 
comportamentos dos objetos
� Mostra um conjunto de classes, interfaces e seus 
relacionamentos.
� É o diagrama central da modelagem orientada a objetos.
Classes
� Graficamente, as classes são 
representadas por retângulos 
incluindo nome, atributos e métodos.
Nome_da_classe
atributo1
atributo2
...
metodo1
metodo2
metodo3
...
Diagrama de Classes
� Devem receber nomes de acordo com o 
vocabulário do domínio do problema.
� É comum adotar um padrão para 
nomeá-las
Ex: todos os nomes de classes serão 
substantivos singulares com a 
primeira letra maiúscula
Aluno
atributo1
atributo2
...
metodo1
metodo2
metodo3
...
Classes
� Atributos
Representam o conjunto de características (estado) dos 
objetos daquela classe
� Métodos
Representam o conjunto de operações (comportamento) 
que a classe fornece
Diagrama de Classes - Elementos
� As caixas do diagrama de classe são classes e 
estão divididas em 3 compartimentos:
� Nome da classe
(Obrigatório)
� Atributos
� Operações
Diagrama de Classes – Elementos Básicos
Pedido
- dataPagamento : Date[0..1]
# éPréPago : boolean[1] = true
+ itensDeLinha : itenDeLinha [*] {ordenada}
- numeroPedidos : int
+ pagar (valor : double)
- calcularTotal() : double
O analista define o nível de detalhe que quer mostrar no diagrama
� Formas de representação
Diagrama de Classes
Pedido
Nome
Pedido
- dataPagamento : Date[0..1]
# éPréPago : boolean[1] = true
+ itensDeLinha : itenDeLinha [*] {ordenada}
- numeroPedidos : int
Nome + Atributos
Pedido
- dataPagamento : Date[0..1]
# éPréPago : boolean[1] = true
+ itensDeLinha : itenDeLinha [*] {ordenada}
- numeroPedidos : int
+ pagar (valor : double)
- calcularTotal() : double
Nome + Atributos + Operações
Pedido
Nome + Operações
+ pagar (valor : double)
- calcularTotal() : double
Diagrama de Classes
Pedido
- dataPagamento : Date[0..1]
# éPréPago : boolean[1] = true
+ itensDeLinha : itenDeLinha [*] {ordenada}
- numeroPedidos : int
+ pagar (valor : double)
- calcularTotal() : double
Nome da operação Tipo de retornoAtributo estático
Visibilidade
Nome do 
atributo
Tipo de 
dado
Nome da 
classe
Multiplicidade
Valor por 
Omissão
Restrição
� Propriedades
� Representam as características estruturais de uma
classe
� Grosso modo correspondem aos campos de uma
classe, mas é mais que isso.
� Aparecem em duas notações bastante distintas:
� Atributos
� Associações (Relacionamentos)
Diagrama de Classes – Propriedades
� Atributos
Diagrama de Classes – Propriedades
- A notação de atributo descreve uma propriedade como uma
linha de texto dentro da caixa de classe em si.
- Notação completa:
visibilidade nome: tipo multiplicidade = valor-por-omissão {lista de restrições}
Ex: - nome: String [1] = “Sem título” {readOnly)
(continua)
� Notação completa
Diagrama de Classes – Atributos
Visibilidade nome: tipo [multiplicidade] = valor-por-omissão{lista de restrições}
Nome: corresponde ao nome do atributo 
Tipo: domínio do atributo 
Multiplicidade: indicação de quantos objetos podem 
preencher a propriedade [min..max] 
Valor por omissão : valor do atributo, caso ele seja omitido 
no momento da criação 
Lista de restrições: permite indicar propriedades adicionais. 
{readOnly}, {ordered}, {unique}, etc. 
Diagrama de Classes – Atributos
Visibilidade nome: tipo [multiplicidade] = valor-por-omissão{lista de restrições}
Ex: - nome: String [1] = “Sem título” {readOnly)
Somente o nome é necessário
- O marcador de visibilidade indica a visão do atributo por outros objetos
- Nome do atributo: entenda como nome do campo usado numa LP
- Tipo do atributo: indica uma restrição sobre o tipo de objeto. 
entenda como o tipo de um campo numa LP
- Valor por omissão: valor default do objeto novo criado
- Multiplicidade: define o número de vezes em que o objeto participa 
da associação
- Lista de restrições: propriedades adicionais para o atributo
(continua)
Notação completa:
Diagrama de Classes – Atributos
- O marcador de visibilidade indica se o atributo é
(+) público / (-) privado / (#) protegido / (~) Pacote
Público (+): O elemento é visível por qualquer classe
Protegido (#): O elemento é visível na própria classe e pelas
subclasses da classe
Pacote (~): O elemento é visível apenas pela própria classe ou
dentro do pacote onde a classe está localizada
Privado (-): O elemento é visível apenas pela própria classe
Diagrama de Classes – Atributos
- Multiplicidade: define o número de vezes em que o objeto 
participa da associação
A representação de multiplicidade possui o seguinte esquema: 
Li ... Ls, onde: Li define o Limite inferior 
Ls define o Limite superior
Li e Ls poderão ter valores numéricos de 0 a n e Ls poderá
também ter a representação * que tem como significado 
infinito/muitos.
Indicadores de multiplicidade:
– 1 Exatamente um
– 1..* Um ou mais
– 0..* Zero ou mais (muitos)
– * Zero ou mais (muitos)
– 0..1 Zero ou um
– m..n Faixa de valores (por exemplo: 4..7)
Pessoa Empresa
1..*
associação
Representação da multiplicidade
*trabalha para
Diagrama de Classes - Atributos
Relacionamentos
• Os relacionamentos possuem:
– Nome: descrição dada ao relacionamento (faz, tem, 
possui,...)
– Sentido de leitura
– Navegabilidade: indicada por uma seta no fim do 
relacionamento
– Multiplicidade: 0..1, 0..*, 1, 1..*, 2, 3..7
– Tipo: associação (agregação, composição), 
generalização e dependência
– Papéis: desempenhados por classes em um 
relacionamento
Diagrama de Classes - Relacionamentos
Pessoa Empresa
1..*
Tipo: associação
multiplicidade
*trabalha para
empregado
papéis
empregador
sentido de leitura
E a navegabilidade?
nome
Diagrama de Classes - Relacionamentos
EndereçoCliente
reside
1 *
navegabilidade
Diagrama de Classes - Relacionamentos
O cliente sabe quais são seus endereços, mas o endereço 
não sabe a qual cliente pertence
� Os relacionamentos entre as classes podem ser:
� Associação
� Generalização
� Dependência
Diagrama de Classes – Relacionamentos
Diagrama de Classes – Relacionamentos
Associação: é ligação estabelecida entre as classes, por 
necessidade de comportamentos do negócio analisado
PAPEL: nome da associação, tornando claro no 
diagrama o ligação estabelecida.
Associação
• Uma associação é um relacionamento estrutural que 
indica que os objetos de uma classe estão vinculados a 
objetos de outra classe.
• Uma associação é representada por uma linha sólida 
conectando duas classes.
Pessoa Empresa
associação
Diagrama de Classes - RelacionamentosAssociação
Exemplo:
• Um Estudante pode ser
um aluno de uma Disciplina e 
um jogador da Equipe de Futebol
• Cada Disciplina deve ser cursada por no mínimo 1 aluno
• Um aluno pode cursar de 0 até 8 disciplinas
Diagrama de Classes - Relacionamentos
Associação / Agregação:
– É um tipo especial de associação utilizada para 
indicar “todo-parte”
– Um objeto “parte” pode fazer parte de vários objetos 
“todo”
ItemPedido
0..* 1..*
agregação
todo parte
Diagrama de Classes - Relacionamentos
Associação / Composição:
– É uma variante semanticamente mais “forte” da 
agregação
– Os objetos “parte” só podem pertencer a um único 
objeto “todo” e têm o seu tempo de vida coincidente 
com o dele
– Quando o “todo” morre todas as suas “partes”
também morrem
TecladoNotebook
FrameWindow
1 1
1 0..*
1..* 0..*
errado
Diagrama de Classes - Relacionamentos
Associação / Composição:
Ex:
Janela
Scroll Título Corpo
1
0..12 1
Empresa
Departamento Escritório
1
1..*1..*
Diagrama de Classes - Relacionamentos
• Agregação X Composição
Andar Edifício1..n
MesaSala
1..n
11
1..n
1..n
Diagrama de Classes - Relacionamentos
Diagrama de Classes - Relacionamentos
Generalização:
É um relacionamento entre itens gerais (superclasses) 
e itens mais específicos (subclasses)
“é um tipo de”
superclasse
subclasse
Veículo
Terrestre Aéreo
GENERALIZAÇÃO / ESPECIALIZAÇÃO
Generalização representa os vários tipos de um objeto 
em uma única classe.
Diagrama de Classes - Relacionamentos
GENERALIZAÇÃO / ESPECIALIZAÇÃO
Especialização representa os vários tipos de um 
objeto em uma classe distinta relacionando seus 
próprios atributos e comportamentos. 
� Atributos e comportamentos comuns 
são relacionados na classe mãe
� As sub-classes herdam atributos e
Métodos da super classe 
Diagrama de Classes - Relacionamentos
Dependência:
• Representa que a alteração de um objeto (o objeto 
indepedendente) pode afetar outro objeto (o objeto 
dependente)
Ex:
– Obs:
• A classe cliente depende de algum serviço da classe 
fornecedor
• A mudança de estado do fornecedor afeta o objeto cliente 
• A classe cliente não declara nos seus atributos um objeto do 
tipo fornecedor
• Fornecedor é recebido por parâmetro de método
cliente fornecedor
Diagrama de Classes - Relacionamentos
Simbologia
AUTO ASSOCIAÇÃO
Define quando um objeto de uma classe está relacionado 
com outro objeto da mesma classe para atender a algum 
comportamento. A multiplicidade é estabelecida 
normalmente.
Diagrama de Classes - Relacionamentos
Construção do Diagrama de Classes
� Na fase de análise constrói-se primeiramente um 
diagrama de classes sem se preocupar em definir os 
métodos, ao qual chamaremos de Modelo Conceitual
� Na fase de projeto os métodos são adicionados e o 
Modelo Conceitual é refinado gerando o Diagrama de 
Classes
Perspectiva Conceitual
1. Liste os conceitos candidatos para os casos de usos em 
questão usando a lista de categorias comuns e 
identificação textual de nomes. 
2. Desenhe-os em um modelo conceitual.
3. Adicione as associações necessárias para registrar os 
relacionamentos para os quais é preciso preservar 
alguma memória
4. Adicione os atributos necessários para cumprir os 
requisitos de informação.
Construção do Diagrama de Classes
Perspectiva Conceitual
� Um bom modelo conceitual deve superestimar o número 
de conceitos. É melhor especificar demais do que de 
�menos 
� Não exclua entidades simplesmente porque os 
requisitos não indicam a necessidade de guardar 
informações sobre eles (comum em projeto de BD)
� Considere os substantivos e frases nominais nas 
descrições textuais do domínio do problema como 
possíveis candidatos a entidades ou atributos 
Construção do Diagrama de Classes
Identificando Entidades a partir dos Casos de Uso
Ação do Ator
1 - Este caso de uso começa 
quando um Cliente chega 
no caixa com itens para 
comprar. 
2 - O Operador registra o 
identificador de cada item. 
Se há mais de um do 
mesmo item, o Operador 
também pode informar a 
quantidade. 
Resposta do Sistema
3 - Determina o preço do 
item e adiciona informação 
sobre o item à transação de 
venda em andamento. 
Mostra a descrição e o 
preço do item corrente.
Identificando Entidades a partir dos Casos de Uso
Ação do Ator
1 - Este caso de uso começa 
quando um Cliente chega 
no caixa com itens para 
comprar. 
2 - O Operador registra o 
identificador de cada item. 
Se há mais de um do 
mesmo item, o Operador
também pode informar a 
quantidade. 
Resposta do Sistema
3 - Determina o preço do 
item e adiciona informação
sobre o item à transação de 
venda em andamento. 
Mostra a descrição e o 
preço do item corrente.
DIAGRAMA DE CLASSE
Passos para desenvolvimento
1º Passo – Buscar no escopo do projeto os conjuntos de 
objetos que tenham identificação própria. (Analisar os casos 
de uso de cadastro, por exemplo);
2º Passo – Analisar os atributos das classes para identificar 
aqueles que indicam outras classes. Esta identificação gera 
a associação entre as classes;
3º Passo – Buscar conjuntos de objetos inseridos no 
contexto do estudo que servem para controlar e 
acompanhar as atividades do projeto;
DIAGRAMA DE CLASSE
Passos para desenvolvimento
4º Passo – Relacionar atributos destas classes;
5º Passo – Criar novas classes e associações 
considerando as formas normais:
Primeira Forma Normal: Uma relação está na primeira 
forma normal se todos os seus atributos são 
monovalorados.
Segunda Forma Normal: a relação estiver na primeira forma 
normal; e todos os atributos primos dependerem 
funcionalmente de toda a chave primária. 
Terceira Forma Normal: a relação estiver na segunda forma 
normal; e todos os atributos primos dependerem não 
transitivamente de toda a chave primária.
DIAGRAMA DE CLASSE
Passos para desenvolvimento
6º Passo – Criar novas classes e associações identificando 
atributos que definem vários objetos da classe.
7º Passo – Definir as multiplicidades;
8º Passo – É sabido que o diagrama de classe deve dar 
suporte à realização dos casos de uso. Verificar se o 
diagrama de classe possui atributos para atender a todos 
os procedimentos. Se não estiver, complementar o 
diagrama de classe.
9º Passo – O caso de uso também deverá criar e manter as 
informações do diagrama de classe. Verificar se todas as 
classes e atributos estão sendo contemplados na realização 
dos casos de uso. Se não estiver, complementar o 
diagrama de caso de uso.
Primeira forma normal:
Cliente: Nome, cpf, telefone1, telefone2, ..., telefone 
n. (se a informação varia para o mesmo objeto deve ir 
para outra classe)
Segunda forma normal:
Pedido: número do pedido, data_pedido, código do 
produto, código do fornecedor, nome do fornecedor 
(primos dependentes da chave primária)
“nome do fornecedor” está ligado a código do 
fornecedor e a número do pedido
Terceira forma normal:
Fornecedor: (cod_fornecedor, nome_fornecedor)
Sobre as formas normais:
Sistema de Gestão de Hotel Estacio
O cadastro do hóspede (nome, procedência, 
endereço, contato, previsão de permanência) é
realizado pelo setor de recepção que também 
controla a alocação de quarto/apartamento (número 
do quarto ou apartamento) e abertura de uma conta 
corrente para o hóspede (senha, número da conta, 
nome do hóspede).
APLICAÇÃO PRÁTICA: CLASSE
Sistema de Gestão de Hotel Estacio
...
Ao setor de serviço de copa cabe a responsabilidade 
pelos lançamentos, na conta do hóspede, das 
despesas que o mesmo efetuar com bebidas e 
comidas (data, tipo da despesa e valor). A atendente 
de telefonia é responsável pelo lançamento, na conta 
do cliente, das chamadas interurbanas que o mesmo 
venha a fazer (data, local chamado, duração e tarifa). 
As chamadas locais não são computadas. O setor de 
lavanderia é responsável pelos lançamentos, na conta 
do hóspede, dos serviços que o mesmo venha a 
solicitar àquele setor (data, tipo de serviço, valor).
APLICAÇÃO PRÁTICA: CLASSE
Sistema de Gestão de Hotel Estacio...
A gerência pode, a qualquer instante, ter acesso às 
informações de cadastro e gastos realizados pelo 
hospede. A gerência é responsável pelo cadastro e 
atualização das tabelas de serviços, menus e diárias.
APLICAÇÃO PRÁTICA: CLASSE
Sistema de Gestão de Hotel Estacio
...
O hóspede pode a qualquer instante consultar o saldo 
de sua conta. 
O setor de recepção é responsável pela extração do 
extrato final da conta e fechamento da mesma quando 
o hóspede finaliza sua estadia. 
APLICAÇÃO PRÁTICA: CLASSE
APLICAÇÃO PRÁTICA: CLASSE
APLICAÇÃO PRÁTICA: CLASSE

Continue navegando