Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática
Fundamentos de
modelagem OO em UML
Diagrama de Classes
-básico
PUCRS - FACIN 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
PUCRS - FACIN Introdução
•
Existem dois tipos de diagramas UML 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 (classe) 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
PUCRS - FACIN Classe / objeto
anaFunc:Funcionario
Nome = ”Ana Souza” dataAdmissão = 12/01/95 cartIdent = 64736482847 salarioBase = 3.200,00
Nome do objeto
joseFunc:Funcionario
nome = ”José Silva”
dataAdmissão = 12/01/89 cartIdent = 83742348488 salárioBase = 3.000,00
Funcionario
- nome: String
- dataAdmissao: Date - cartIdent : String
- salarioBase: Currency + calcularSalario()
+ calcularIrFonte()
<<instanceOf>> <<instanceOf>>
Nome da classe
Relação de Dependência
Classe
PUCRS - FACIN Diagramas de Classes
• Diagramas de Classes são utilizados para modelagem estática. A modelagem estática deve dar suporte as necessidades
funcionais do sistema, isto é, os serviços que o sistema deve providenciar aos seus usuário finais.
• Os Diagramas de Classes são utilizados para modelar:
– o vocabulário do sistema que especifica as abstrações que estão contidas dentro do domínio do sistema, identificando suas responsabilidades.
– a colaboração que envolve trabalho conjunto entre objetos do sistema visando um comportamento cooperativo. Esta
cooperação traduz-se no diagrama de classes através das relações existente entre as classes identificadas.
PUCRS - FACIN
•
Classe
: refere-se a descrição de um conjunto de
objetos que compartilham os mesmos atributos,
operações, relacionamentos e semântica.
– outros compartimentos podem ser acrescentados
(responsabilidades, exceções, eventos, etc.)
Classe
Nome da Classe Funcionário
- nome: string
- data_admissão: data - CPF : string
- salárioBase: float = 0.0
+ calculaSalario()
+ calculaIR() Operações
PUCRS - FACIN Nome da 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 (subsistema) em que a classe existe.
Sistema_vendas :: Cliente Cliente
PUCRS - FACIN Atributo
•
Cada objeto de uma classe possui um estado,
representado pelos valores associados a cada um dos
atributos definidos.
•
Sintaxe para atributos:
[visibilidade] nome [multiplicidade] [: tipo] [= valor inicial] [{propriedades}]
* atributos de classe são sublinhados
•
Exemplos:
idade
- endereço [0..2] : String + CPF : inteiro {frozen}
PUCRS - FACIN Atributo
•
Visibilidade
– público (+) : o que pode ser visto pelas operações de outras classes
– protegido (#) : o que pode ser visto apenas pelas operações da própria classe e por suas classes herdeiras
– privado (-) : o que pode ser visto apenas pelas operações da própria classe
•
Propriedades
– changeable: não há restrições quanto a modificação do valor do atributo (default)
– frozen: o valor do atributo não pode ser alterado depois que for definido.
PUCRS - FACIN Operação
•
Uma
operação
é um serviço que pode ser requisitado
a qualquer objeto da classe, afetando o seu estado.
– 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)
PUCRS - FACIN Operação
•
Sintaxe para Operações
:
[visibilidade] nome [(lista-de-parâmetros)] [:tipo-retorno] [{propriedades}]
* operações de classe são sublinhadas.
Exemplos:
imprimirTemperatura
PUCRS - FACIN
•
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
+ iniciarAlarme
+ avaliarTemperatura
Monitorar temperatura
Disparar alarme quando a temperatura atingir valores inadequados
PUCRS - FACIN Relacionamentos entre classes
•
Os
relacionamentos
determinam as ligações entre os
objetos.
•
Fornecem um caminho para a comunicação entre os
objetos.
•
Principais tipos de relacionamentos:
– Associação
PUCRS - FACIN
•
Uma
associação
é um relacionamento estrutural que
descreve um conjunto de ligações, onde uma ligação é
uma conexão entre objetos.
Funcionário Empresa
1 0..*
trabalha-para
0..* 1
PUCRS - FACIN Associação - adornos
•
Multiplicidade
especifica quantas instâncias de uma
classe se relacionam a uma única instância da outra
classe.
– Número fixo: estabelece o número exato de objetos relacionados
• Ex.: 2
– Intervalo de Valores: define a multiplicidade mínima e máxima
• Ex.: 1..5
– Multiplicidade Máxima Ilimitada :
PUCRS - FACIN
•
Multiplicidade
– (1-1): cliente tem uma e somente uma conta
– (0-1): cliente pode ter uma conta
– (1-N): cliente tem no mínimo um conta, mas pode ter mais
– (0-N): cliente pode ter várias contas
1
CLIENTE CONTA
0..1 CLIENTE
1..*
CLIENTE CONTA
*
CLIENTE CONTA
Associação - adornos
PUCRS - FACIN
•
Papel
(opcional)
Associação - adornos
Pessoa
nome datNasc
Marido
Esposa Casamento
trabalha-para Empresa
nome endereço
empregado empregador
Funcionário
nome cartTrab datNasc
1..* *
Direção de leitura
0..1
PUCRS - FACIN
•
Navegabilidade
:
– por definição, a navegação entre classes associadas é bidirecional (segmento de reta)
– por conveniência, a navegação pode ser restringida a uma única direção (vetor)
– não confundir com sentido para leitura de nome de associação!
Usuário 1 * Senha
PUCRS - FACIN Agregação
•
Agregação
é um 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
PUCRS - FACIN Agregação Monitor Teclado Microcomputador Mouse 0..1 0..1
Processador DriveCD Memória Fonte Gabinete 0..1 1..* DriveDisquete 0..1 1..* Exemplo: 1 1 1
1 1 1
1
1 1 1 1 1
1 0..* 1..*
PUCRS - FACIN
•
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.
Agregação
EquipeProjeto
AnalistaSistemas
1..* 1..* 1..*
1..*
Multiplicidade da extremidade do composto
PUCRS - FACIN
• 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.
– Exemplo:
Agregação
Empresa
1..* 1
1..*
1 Multiplicidade da extremidade do composto
deve ser igual a 1
PUCRS - FACIN Generalização
•
A
generalização
é o compartilhamento de atributos,
operações e relacionamentos entre classes com base
em um relacionamento hierárquico.
– possibilita a derivação de tipos mais específicos a partir de um tipo mais genérico
– uma classe pode ser definida de forma abrangente e depois ser refinada em sucessivas subclasses.
PUCRS - FACIN Generalizaçã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.
PUCRS - FACIN Especializaçã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.
PUCRS - FACIN Processo de especialização
Pagamento
Pagamento em Dinheiro
Pagamento com Cartao
Pagamento com Cheque
Cartao de Crédito
0..*
PUCRS - FACIN Processo Unificado - Análise
•
No Processo Unificado as classes são inicialmente
identificadas na atividade de
Análise
e fazem parte do
Modelo de Análise
.
Iteração(ões) Preliminar(es) Iter. #1 Fases Iterações Iter. #2 Iter. #n Iter. #n+1 Iter. #n+2 Iter. #m Iter. #m+1 Implementação Teste Análise
Workflow do Processo
Requisitos
Elaboração Transição Concepção Construção
PUCRS - FACIN Processo Unificado - Análise
Incluindo subsistemas e pacotes Modelo de
Casos de Uso
Modelo de Análise Modelo de Projeto Modelo de Implantação Modelo de Implementação Modelo de Teste Diagramas de Casos de Uso
PUCRS - FACIN Classes no Modelo de Análise
•
Características:
– têm como foco a representação dos requisitos funcionais do sistema: representação de conceitos do domínio de problema – raramente definem sua interface em termos de suas operações
e assinaturas
– definem atributos, porém sem o compromisso com detalhamento
– estabelecem suas relações com outras classes
– podem ser enquadradas em três estereótipos básicos:
PUCRS - FACIN Estereótipos de Classes de Análise
•
Classe
Entidade
:
– utilizada para modelar informações que tem vida longa no sistema e que freqüentemente são persistentes;
– modela informações e comportamentos associados a conceitos do sistema.
<<entity>>
PUCRS - FACIN
•
Classe
Fronteira
:
– usada para modelar a interação entre o sistema e seus atores; – a interação envolve o recebimento, apresentação e requisição
de informações entre o sistema e seus usuários ou sistemas externos;
– uma mudança em uma interface de usuário ou em uma
interface de comunicação é usualmente isolada em uma ou mais classes de fronteira;
– cada classe de fronteira deve estar relacionada a pelo menos um ator e vice-versa.
Estereótipos de Classes de Análise
<<boundary>>
PUCRS - FACIN Estereótipos de Classes de Análise
•
Classe de
Controle
:
– representam coordenação, sequenciamento, transações e controle de outros objetos;
– freqüentemente utilizada para encapsular controle relacionado e a um caso de uso específico;
– utilizada para representar processamento complexo (tal como cálculos envolvidos na lógica de um processo de negócio) que não seja apropriado a uma classe entidade em particular;
<<control>>
PUCRS - FACIN Processo Unificado - Análise
•
Tarefas básicas:
– Analisar a arquitetura:
• Identificar de pacotes de análise
• Identificar classes <<entity>> óbvias • Identificar requisitos especiais
– Analisar um caso de uso:
• identificar classes de análise do sistema
– Analisar uma classe:
• identificar responsabilidades, atributos, relacionamentos
PUCRS - FACIN Diagrama de Classes de Análise
Cliente
Sacar dinheiro no terminal MODELO DE CASOS DE USO:
MODELO DE ANÁLISE:
Cliente
Sacar dinheiro no terminal
<<trace>>
PUCRS - FACIN Diagrama de Classes de Análise
•
Estratégias de descoberta de classes de análise:
– Encontrando conceitos através de uma lista de categorias de conceitos: relacione os conceitos candidatos do domínio do problema que pertecem à lista de categorias de conceitos
(objetos físicos, transações, linhas de itens de transações, papéis desempenhados por pessoas, containers de coisas, eventos, etc.).
– Encontrando conceitos com a identificação de
substantivos: identificar os substantivos e frases que podem estar no lugar de um substantivo nas descrições do domínio do problema e considerá-los como candidatos a conceitos ou
atributos para o modelo conceitual.
PUCRS - FACIN Diagrama de Classes de Análise
Cliente
Sacar dinheiro no terminal MODELO DE ANÁLISE:
Conta Retirada
PUCRS - FACIN Diagrama de Classes de Análise
• Diagrama de classes de análise (ícones):
Cliente
Conta Retirada
Terminal
Gaveta de dinheiro
saldo senha
acessa solicita retirada
PUCRS - FACIN Estereótipos de Classes de Análise
Cliente
Terminal <<boundary>>
Conta <<entity>> Retirada
<<control>> solicita retirada
acessa
Gaveta de dinheiro<<boundary>>
libera dinheiro
saldo senha
PUCRS - FACIN Diagramas de Classes de Análise
•
Reuso de classes de análise:
Sacar dinheiro no terminal
Depositar dinheiro Transferir dinheiro Cliente
Lançamento Terminal
Retirada
Conta
Modelo de
Casos de Uso
Modelo de
Análise
Transferência
Depósito Cliente
PUCRS - FACIN
• No Rational Rose os diagramas de classes de análise são
criados no
Logical View
. Especificamente no framework
RUP, no pacote
Analysis Model
.
PUCRS - FACIN Diagrama de Classes
•
Exercício:
– acesse a homepage do curso, link Atividades, Diagrama de Casos de Uso
– estude a descrição textual