Você está na página 1de 23

UML

Diagrama
de Classes
Introdução

• A modelagem de objetos incorpora a estrutura


estática de um sistema mostrando:
– os objetos pertencentes ao sistema
– os relacionamentos entre esses objetos
– os atributos de cada objeto
– as operações que caracterizam cada objeto
Introdução

• Existem dois tipos de diagramas para a modelagem


de objetos:
– Diagrama de Classes: é um esquema, um padrão ou um
modelo que descreve muitas instâncias de objetos.
– Diagrama de Objetos: descreve como os objetos de um
determinado grupo se relacionam entre si.
• serve para documentar casos de teste e exemplos para discussão.

• Ambos os diagramas oferecem uma notação gráfica


formal para a modelagem de objetos e seus
relacionamentos.
Classe

• Classe: refere-se a descrição de um conjunto de


objetos que compartilham os mesmos atributos,
operações, relações e semântica.
Funcionário
Nome da Classe
nome: string
data_admissão: data
CPF : string Atributos
salário_base: float = 0.0
calcula_salário
calcula_IR Operações

– outros compartimentos podem ser acrescentados


(responsabilidades, exceções, eventos, etc.)
Nome de classe

• O nome de uma classe distingue uma classe de outra


classe.
– nome simples: nome sozinho
– nome com caminho: o nome da classe é precedido pelo nome
do pacote em que a classe existe.

Cliente Sistema_vendas :: Cliente


Atributo

• Cada objeto de uma classe possui um estado,


representado pelos valores associados a cada um dos
atributos definidos para a classe
Sintaxe para atributos:
[visibilidade] nome [multiplicidade] [:tipo]
[= valor inicial] [{propriedades}]
* atributos de classe são sublinhados
Exemplos:
nome: string
endereço [0..2] : string
CPF : inteiro {frozen}
nro_correntistas: inteiro
Operação

• Uma operação é a implementação de um serviço que


pode ser requisitado a qualquer objeto da classe,
afetando o seu comportamento.
– A execução de uma operação por um objeto pode resultar na
alteração do valor de seus atributos.

• Distinção entre operações de classes e objetos:


– Operação de objeto: atua sobre um objeto (instância)
– Operação de classe: atua sobre a classe (conjunto de objetos)
• Exemplos: criação de um novo objeto da classe, pesquisa sobre
os objetos da classe, etc.
Operação

• Sintaxe para Operações:


[visibilidade] nome [(lista-de-parâmetros)] [:tipo-
retorno] {[propriedades]}
* operações de classe são sublinhadas.

Exemplos:
ler_temperatura( ) : numérico
calcula_area(lado: inteiro, altura: inteiro) : inteiro
valor_padrao( ): inteiro
Responsabilidade de classe

• Responsabilidade de uma classe diz respeito as suas


obrigações dentro do contexto do sistema.
– Ao refinar o modelo, as responsabilidades de uma classe são
traduzidas em um conjunto de atributos e operações que
melhor atendam as suas obrigações.

Sensor de Temperatura

reiniciar
iniciar_alarme
avaliar_temperatura

- Monitorar temperatura
- Disparar alarme quando a temperatura
atingir valores inadequados
Relacionamentos entre classes

• Os relacionamentos determinam conexões entre os


objetos.
• Fornecem um caminho para a comunicação entre os
objetos.

• Principais tipos de relacionamentos:


– Associação
– Generalização
– Dependência
Associação

• Uma associação é um relacionamento estrutural que


descreve um conjunto de ligações, onde uma ligação
é uma conexão entre objetos.

trabalha-para
Funcionário Empresa
0..* 1
Associação

• Multiplicidade
– (1-1): cliente tem sempre 1 (e somente 1) conta

CLIENTE CONTA
1
– (0-1): cliente pode ter 1 (e no máximo 1) conta
CLIENTE CONTA
0..1
– (1-N): cliente tem sempre 1 conta, podendo ter mais
CLIENTE CONTA
1..*
– (0-N): cliente pode ter 1 conta, podendo ter mais
CLIENTE CONTA
*
Associação

• Papel (opcional)

Funcionário Empresa
1..* trabalha-para *
nome nome
cartTrab empregado empregador endereço
datNasc

Esposa Casamento

Pessoa
nome
datNasc

Marido
Associação

• Navegação
– por definição, a navegação entre classes associadas é
bidirecional
– por conveniência, a navegação pode ser restringida a uma
única direção

Usuário 1 * Senha

proprietário

– não confundir com sentido para leitura de nome de associação!


Agregação

• Tipo especial de associação.


– Representa relacionamentos todo-parte, onde objetos
compostos por outros objetos são modelados como estando
associados com suas partes.

• Agregação é transitiva
– Se A faz parte de B, e B faz parte de C, então A faz parte de C.

• Agregação é não-simétrica
– Se A faz parte de B, então B não faz parte de A.
Agregação

Exemplo:
Microcomputador

0..1
Monitor Gabinete Teclado Mouse

0..1 1..*

Processador DriveCD Memória Fonte Drive Disquete


Agregação

• Agregação simples
– A existência de um objeto componente não depende da
existência do objeto agregado;
– Um objeto componente pode ser compartilhado com outro
objeto agregado.

EquipeProjeto

1..*
Multiplicidade da
extremidade do composto
1..* pode ser maior que 1
AnalistaSistemas
Agregação

• Agregação de composição
– Quando o todo é criado, as suas partes com multiplicidade não
fixa podem ser criadas posteriormente;
– Quando uma parte é criada, a sua existência deve ser
coincidente com a existência do todo, a não ser que seja
explicitamente removida antes da eliminação do todo;
– Quando o todo é eliminado, as suas partes também devem ser
eliminadas. Empresa
– Exemplo:
1 Multiplicidade da
extremidade do composto
1..*
deve ser igual a 1
Departamento
Generalização

• Abstrai classes genéricas, a partir de classes com


propriedades (atributos e operações) semelhantes.

• Generalização e herança são abstrações que


permitem modelar aspectos semelhantes entre
classes, preservando suas diferenças.

• Numa hierarquia de generalização, as subclasses


herdam todas as propriedades de sua superclasse.
Generalização - Especialização

Pessoa
nome
endereço
sexo
data_nascim
idade

Candidato Eleitor

numCandidato num_titulo
Generalização - Especialização

• Processo de generalização:

– Identificar classes com propriedades semelhantes.


– Definir uma nova classe com as propriedades comuns.
– As classes originais tornam-se subclasses da nova classe e
herdam as propriedades desta.
– As associações em comum passam para a superclasse e as
outras continuam nas subclasses.
Especialização - Generalização

• Processo de especialização:
– Definir uma ou mais subclasses a partir de uma classe
existente.
– Adicionar propriedades e associações específicas de cada nova
subclasse.
– Associações comuns ficam ligadas à superclasse.
– Pode existir mais de um tipo de especialização com base em
diferentes características.
• cada hierarquia de generalização/especialização deve abranger
uma única característica.
Processo de Generalização

Carro Fabricante Caminhão


1..* 1..*
numChassi nome numChassi
paísOrigem Carroceria
placa placa
tipo
cor numEixos
1..* 1..* fabricante
numPas Proprietário tonelagem
anoFabric nome ano
tipoComb ender
CgcCpf

Veículo
Proprietário 1..*
numChassi 1..*
nome placa Fabricante
anoFabric nome
ender
paísOrigem
CgcCpf

Carro Caminhão Carroceria


cor numEixos tipo
numPas tonelagem fabricante
tipoComb

Você também pode gostar