1. Engenharia de Software
Aula 7 – Diagrama de Classes
Profa. Dra. Judith Pavón
Universidade Salvador – UNIFACS
2012
2. Objetivo da aula
O objetivo desta aula é apresentar os
conceitos de diagrama de classes.
2
3. Conteúdo
• Introdução
• Classe
• Atributos
• Métodos
• Ligação e Associação
• Papel do objeto
• Multiplicidade
• Agregação/Composição
• Generalização/Especialização
3
4. Introdução
Geralmente é utilizada a linguagem UML,
especificamente o diagrama de classes.
Notação que permite descrever:
• classes
• atributos e métodos
• relacionamentos
• detalhes de implementação (código)
Pode ser usada em vários níveis de abstração
(conceitual, lógico e físico).
4
5. Classe
Classe: descrição de uma coleção de objetos
que possuem propriedades semelhantes
(atributos, métodos, associações).
Produto
códigoProduto
descrição
CalcularPreço( )
CalcularImpostos( )
5
6. Atributo
Informação associada a um objeto. Cada objeto da
classe possui um valor em cada atributo definido pela
classe.
Na prática, somente aparecem no diagrama os atributos
mais relevantes, pois a lista completa dos atributos e
seus domínios estão no dicionário de dados (DD)
separado.
Produto
códigoProduto: Atributos
Integer
descrição: String
CalcularPreço( )
CalcularImpostos( ) 6
7. Métodos
São as operações que podem ser executadas sobre um
objeto. Definida para cada objeto da classe.
Representar no diagrama somente os métodos importantes
para a compreensão.
DIFERENÇAS ENTRE MÉTODO DO OBJETO E MÉTODO DAS
CLASSES
Método do objeto (instância): atua sobre um objeto
Método da classe: atua sobre a classe (o conjunto de
objetos)
• Ex.: métodos que procuram determinados objetos na classe.
7
8. Método da classe – Diagrama de classe
Funcionario Projeto
1..* 1
nome: Integer trabalha Descrição: Integer
cargo: String inicio: String
1 0..1
Salario:real gerencia fim:real
obterCargo( ) Custo: real
Métodos $CalcularMediaSalario( ) CalcularValorProjeto( )
Método da classe (indicado pelo
prefixo $)
FuncionarioContratado FuncionarioTerceirizado
carteiraProfissional:string inicioContrato:date
dataAdmissão:date terminoContrato:date
taxaAdministração
8
9. Ligação e Associação
Uma ligação é um relacionamento entre objetos,
que se deseja conhecer no sistema.
• Ex.: a ligação entre o objeto Projeto e o objeto
FuncionarioTerceirizado.
Uma associação é a descrição de uma coleção de
ligações que, para fins de projeto , possuem
propriedades semelhantes (classes envolvidas,
atributos, métodos).
• Ex.: a associação entre a classe Funcionario e a classe
Projeto.
9
10. Papel do objeto
Um objeto cumpre um papel dentro de uma associação.
esposa - Ser marido ou esposa é
casamento o papel exercido por um
Pessoa objeto Pessoa dentro de
marido código uma associação
nome casamento.
sexo
nome do associação endereço
papel
10
11. Multiplicidade
Existem situações em que é necessário restringir o
número de objetos associados através de uma
associação a um objeto determinado (restringir a
cardinalidade).
• Ex.: um homem não deve possuir mais de uma esposa.
As multiplicidades são classificadas de acordo a sua
cardinalidade máxima:
0..1 (valor opcional)
1.. 1 ou 1 (exatamente um)
0..* ou * (qualquer valor inteiro não-negativo)
1..* (qualquer valor inteiro positivo)
11
12. Associação 1:1
esposa 0.. 1
casamento
Pessoa
código 0.. 1
nome
sexo marido
endereço
12
13. Atributos de Associações
Uma associação pode ser tratada como uma classe,
que possui atributos, relacionamentos e métodos. Neste
caso é denominada classe associativa .
• Ex.: como toda venda não é financiada, então os atributos e
métodos da financiamento devem aparecer no relacionamento.
0..1 0..* Venda
Financeira
número
código data
nome Financiamento ItemdeVenda
dataAprovação
autoriza( )
13
14. Exemplo de Classe
Associativa
Produto 0..* 0..* Venda
código número
nome data
CalcPreço( ) ItemVenda
CalcImposto( ) quantidade
CalcTotal( )
14
15. Transformação de Classes
Associativas
Produto 1 0..* 1..* 1 Venda
ItemVenda
código quantidade número
nome CalcTotal( ) data
CalcPreço( )
CalcImposto( )
Ainda falta refinar este diagrama!!
15
16. Associação ternária
Cidade Distribuidor
Distribuição
código 1 1
número
nome 0..* 0..*
nome
0..*
1
TipoProduto
Distribuição é um
codprod relacionamento que
nome associa estas três
classes.
16
17. Agregação
A agregação corresponde a um caso particular de
associação, utilizada para expressar um relacionamento
“todo-parte”.
A agregação representa uma propriedade fraca, pois
uma classe “parte” pode estar contida em várias classes
“todo”.
PaginaWeb Imagem Diretorio
0..* 1..*
“todo” “parte” “todo”
17
18. Composição
A composição é uma variação da agregação simples. A
diferença com a agregação simples, consiste no fato de que
a classe parte pertence somente à classe todo.
Exemplo: uma venda é composta de vários detalhes (itens),
quando a venda é criada os itens de venda também o são, e
quando a venda é eliminada também serão eliminados os itens.
Produto ItemVenda Venda
1 0..* 1..*
códigoProduto quantidade número
descrição CalcTotal( ) data
CalcPreço( ) CalcImp( )
CalcImp( )
18
19. Generalização/Especialização
Pessoa física/jurídica são especializações de cliente.
Cliente é uma generalização de pessoa física/pessoa
jurídica.
Cliente
1 0..* Venda
código
nome
PessoaFísica PessoaJurídica
documentoId CGC
datanasc nomeInstituição
19
20. Herança e Agregação
Herança e agregação são conceitos diversos.
Herança é um relacionamento chamado de “é-um”
• pessoa física é um cliente
Agregação é chamada de “é-parte-de”
• item de venda é parte de uma venda
Herança não é seletiva
• Todas as propriedades da classe genérica são
herdadas
20
21. Combinando generalização e
agregação
Um documento pode ser composto de vários componentes.
Um componente é uma figura, uma tabela ou texto.
Componente
1..* Documento
Texto Tabela
Figura
21