UML:
Diagrama de Classes
Professora: Aline Vasconcelos
IFFluminense
SAEG
O que é Classe?
Abstração sobre um grupo de objetos com mesmas
propriedades (atributos), comportamento (operações),
relacionamentos e semântica.
As Classes representam o bloco de construção mais importante
de qualquer sistema OO.
Pessoa
Classe
nome: string
dtNascimento:date
Atributos
mostrarIdade()
mostrarPrimNome()
Operações
2
O que é Classe?
Classes são utilizadas para capturar o vocabulário do
sistema que está sendo desenvolvido.
Classes podem incluir abstrações que são parte do
domínio do problema ou tipos de objetos que
retratam a implementação do sistema.
Classes devem possuir responsabilidades bem
definidas, onde responsabilidade representa um
contrato ou obrigações da Classe.
3
Classe x Tipo:
Classes podem ser vistas como implementação de tipos
de objetos uma vez que elas determinam as operações
aplicáveis a um conjunto de instâncias.
Pessoa
nome: string
dtNascimento:date
verificarIdade()
listarNomes()
Objetos do Tipo Pessoa
Atributos
Sintaxe:
visibilidade nome: tipo = valor inicial
Visibilidade:
+ público;
# protegido;
- privado.
Detalhes sobre tipos de atributos não são
especificados pela UML.
O tipo do atributo depende da linguagem de
programação na qual o sistema será
implementado.
5
Operações x Métodos
Operações x Métodos: métodos representam
a implementação da operação.
Operações são as assinaturas dos métodos,
as quais estão representadas nas Classes.
Uma operação representa um serviço que
uma instância da classe pode ser solicitada a
realizar.
6
Operações
Sintaxe:
visibilidade nome (lista de parâmetros) : tipo do valor de retorno
Sintaxe para os parâmetros:
nome : tipo = valor default
Exemplos:
+ totalPedidoPeríodo (dtInício: Date, dtFim: Date): Real
– Calcula o valor total em Pedidos no Período especificado. Método
de Classe.
+totalPedido(): Real
Escopo de Atributos e Operações
Atributos e Operações podem ser de Classe ou de
Instância.
Atributos cujo valor é o mesmo para todos os objetos
da Classe se aplicam à Classe.
Operações não direcionadas a uma instância
específica, também são tidas como operações de
Classe.
São declarados como Static no JAVA.
A UML sublinha atributos e operações de Classe.
8
Exemplo de Atributo e Operação de Classe
Título
nom e
núm e ro
lo caliza r()
Livro Revis ta
autor per iodicidade
$ pra zoEm pré s ti mo = 7 d ia s $ prazoEm prés tim o = 1 0 dias
9
Classes e Operações Abstratas
Operações abstratas são operações para as quais a
Classe não provê um método (ou seja, a Classe não
implementa a operação).
A operação deve ser sinalizada com uma restrição
{abstract} ou deve ter seu nome em itálico.
Classes abstratas são aquelas que não apresentam
instâncias diretas, mas definem um modelo (ou
interface) para que outras Classes possam herdar (ou
fazer uso).
10
Associações entre Classes:
Associação Simples;
Agregação;
Composição.
11
Associações Simples:
Associações são relacionamentos
estruturais entre classes estabelecendo
conexões entre seus objetos.
Pessoa Empresa
nome: string CGC: string
1..* *
dtNascimento:date endereço: string
mostrarIdade() obterCGC()
verificarPrimNome() atualizarEndereço()
Associações: Principais Propriedades
Multiplicidade: cardinalidade da
associação;
Nome;
Papéis.
Trabalha
1..*
Pessoa *
empregador
Empresa
funcionário
13
Agregação x Composição:
São associações conhecidas como
“todo/parte”. Agregação é somente
conceitual.
Projeto * 1..*
Funcionário
14
Agregação x Composição:
Composição apresenta valor semântico.
Determina dependência do ciclo de vida das
partes em relação ao todo.
Pedido 1 * Item de Pedido
15
Restrições em Composições:
Multiplicidade no lado da composição
deve ser 1;
Se a mesma classe participar como
“parte” em mais de uma composição,
então a multiplicidade das composições
deve ser 0..1;
16
Generalização e Herança
Uma classe mais genérica
(superclasse) é especializada em
outras mais específicas (subclasses).
Subclasses herdam a estrutura,
comportamento e participação em
relacionamentos da superclasse.
17
Generalização e Herança
Pessoa
Relacionamento:
nome: string
dtNascimento: date
“é-um-tipo-de”.
mostrarIdade()
verificarPrimNome()
Aluno Professor
matrícula: integer salário: real
numCarteira: integer formação: string
matricular() reajustarSalário()
18
Generalização e Herança:
Sobreposição e Polimorfismo
Subclasses podem ainda adicionar
nova estrutura e/ou comportamento, ou
modificar comportamento em relação à
super classe.
19
Polimorfismo - Exemplo
A luno {ab stract}
m atric ula
nomeA luno
geraNu mMatr()
A luno Transferido
A luno Ves tibular
univers i da deO ri gem
c oloc acaoVest periodo
curs oO rigem
geraNum M atr()
gera N um Matr()
20
Diagrama de Classes:
Conceitos Avançados
Estereótipo
Mecanismo de extensão da UML.
Amplia as possibilidades de Modelagem, permitindo estender a
semântica de construções (elementos de modelagem) de UML
existentes.
EXEMPLO: INTERFACE
– A Interface em UML é uma Classe que possui somente operações
públicas, sem métodos nem atributos.
– Correspondente a Interfaces em JAVA, CORBA e COM.
– Tipo especial de Classe, definido como um estereótipo de Classe.
São mostrados em texto entre os símbolos: «»
22
Exemplos de uso de Estereótipos
(1)
(2)
Classes de Associação
Classes de Associação (ou classes associativas)
devem ser utilizadas quando uma Associação
apresenta atributos.
Permitem que você acrescente atributos, operações
e outras características de Classe às associações.
As propriedades da Classe de Associação
(Association Class) se aplicam a um par de objetos
nas extremidades das associações.
24
Exemplo de Classe de Associação:
* empregador
Pessoa Empresa
0..1
Cargo
função
dtContrato
salário
25
Relacionamentos de Dependência
Uma DEPENDÊNCIA indica a ocorrência de
um relacionamento semântico entre dois ou
mais elementos de modelo onde uma classe
Cliente é dependente de alguns serviços da
classe fornecedora, mas não tem uma
dependência estrutural interna com esse
fornecedor.
Indica uma situação na qual uma mudança
em um elemento (elemento independente,
fornecedor) pode afetar outro elemento da
dependência (elemento dependente – cliente).
26
Representação:
CLASSE A CLASSE B
FORNECEDOR CLIENTE
27
Restrições (Constraints)
Uma restrição é alguma condição imposta a
elementos do modelo que deve ser satisfeita
para que o sistema encontre-se em estado
de consistência.
São representadas entre chaves.
A UML apresenta algumas restrições pré-
definidas, podendo restrições específicas do
Domínio serem definidas pelo
Desenvolvedor.
28
Exemplos de uso de Constraints:
Pessoa
Conta {XOR}
Empresa
29
V enda Cliente
num V enda nom e
dataV enda endereço
valorTotal 1..* telefone
P ess oa Jurídica
P ess oa Física
CGC
rz S ocial dtNasc im ento
CP F
identidade
1..* P roduto
It em Ven da cod Prod
des crição
qtde preço
0..* es toque
Item
Título
num Item có pia de nome
localizarpeloTítulo()
0..* cri ar()
localizarpeloN úm ero()
ver ific aD is pon ível()
criar ()
refere-se a Livro Revis ta
0..*
autor periodicidade
E m présti m o $ pra zoEm prés ti mo = 7 dias $ prazoEm prés tim o = 10 dias
dtEm prés tim o
dtD evoluçãoPrev criar() criar ()
dtD evoluçãoR eal
des ti na-s e a Us uário
criar()
0..* nome
confirm aEm prés tim o()
m atricula
confirm aD evolução()
cri ar()
li sta rD ados ()