Você está na página 1de 20

UML: classe e relacionamentos

Prof.: Clarindo Isaías Pereira da Silva e Pádua

Synergia / Gestus

Departamento de Ciência da Computação - UFMG

UML: classes e relacionamentos

UML: visão geral


Bibliografia
• Rumbaugh, J.; Jacobson, I.; Booch, G., The Unified Modeling z Classe
Language Reference Manual, Addison Wesley, 2nd edition,
2004.
z Regras
• Booch, G.; Rumbaugh, J.; Jacobson, I., "Unified Modeling z Mecanismos comuns
Language User Guide
Guide",, 2nd Edition, Addison Wesley, 2005.
• Eriksson, H-E, Penker, M. Lyons, B., Fado, D. UML 2 Toolkit,
z Arquitetura
Wiley, 2004

3 4

1
UML: classe e relacionamento UML: classe e relacionamento > Classe

Classe z Representam um conceito dentro do sistema que

z Classe é o descritor de um conjunto


j de está sendo modelado.

objetos que compartilham os mesmos z Formam o vocabulário do sistema.


z Dependendo do modelo, o conceito pode ser relativo a
atributos, operações, métodos e
coisas do mundo real ou envolver algoritmos ou
comportamento.
implementação em computador.
z Uma classe e outros elementos da UML que z Exemplo: Parede, Janela, Porta,etc podem ser exemplos
d
descrevem conjuntos
j t de d instâncias
i tâ i sãoã classes de um modelo que representa um edíficio.
considerados descritores.

5 6

UML: classe e relacionamento > Classe


UML: classe e relacionamento > Classe

Reificação z O nome de uma classe é um string textual, constituidos


z Uma classe pode também representar conceitos abstratos de letras, números e outros caracteres especiais exceto
(não material)
material). Neste caso
caso, usa-se reificação,
reificação isto é,
é tratar o alguns utilizados na linguagem como “ :”
conceito abstrato como coisa.
z Na prática, devem ser nomes ou frases curtas que
z A reificação é uma instrumento muito utilizado pelo ser humano,
funcionam como nomes, trazidos do vocabulário do
por exemplo, na literatura e filosofia.
domínio.
z Ex.: Tupã, deus do trovão em tupi.
z Um nome é a reificação de uma coisa e um verbo é a z As letras iniciais de cada palavra devem ser maiúsculas.
reificação de uma ação z Ex. SensorTemperatura
z A reificação
ifi ã é também
t bé muito
it utilizada
tili d em modelagem.
d l
z O nome pode ser um caminho (path).
z Por exemplo, pode-se criar uma classe Sonho que vai
descrever as propriedades de um sonho. z java::awt::Rectangle

7 8

2
UML: classe e relacionamento > Classe UML: classe e relacionamento > Classe > Responsabilidade

Responsabilidade z Responsabilidades são descritas como frases ou parágrafos


curtos em formato textual livre.
z Uma responsabilidade é um contrato ou obrigação de uma
z P d
Podem ser documentadas
d d em um compartimento
i específico,
ífi
classe.
como parte da descrição da classe ou como uma nota
z Responsabilidades representam os conhecimentos e as ações
estereotipada como <<responsabilidade>> ligada a classe.
que possibilitam a uma classe cumprir seu papel.
z Exemplo:
z Os atributos e operações podem ser vistos como aspectos ou
caracteríticas através das quais as responsabilidades são <<Responsabilidade>>
. Determina o risco de
cumpridas
cumpridas.
Agente de Fraude uma ordem do cliente
z Um bom ponto de partida para a definição de uma classe é . Gerencia critérios de
fraude específicos de
a definição de suas responsabilidades. cliente

9 10

UML: classe e relacionamento > Classe UML: classe e relacionamento > Classe > Atributo

Atributo z Os nomes de atributos são semelhantes aos nomes de


classe, só que a primeira letra costuma ser minúscula.
z Atributo é um propriedade, com nome, de
uma classe
l que descreve
d um conjunto
j t de
d z Pode se especificar a classe (tipo) a que pertence um atributo
Pode-se
valores que instâncias da propriedade podem e um valor inicial.
ter. z Exemplo:

z Uma classe pode ter nenhum ou vários Parede


Cl iente
atributos.
nome identificação : Integer
z A cada momento
momento, os objetos de uma classe endereço altura : Float
vão ter valores específicos para cada um de dataNascimento espessura : Float
seus atributos. suporta Viga : Boolean = 0

11 12

3
UML: classe e relacionamento > Classe UML: classe e relacionamento > Classe

Operação Técnicas de modelagem


z Uma operação é a especificação de uma transformação ou
consulta que um objeto pode ser solicitado a executar
executar. z Classes são usadas p
para modelar abstrações
ç
z Em geral, a invocação de uma operação de um objeto oriundas do problema a resolver ou da solução a
resulta na alteração de seu estado.
ser desenhada.
z O nome de uma operação costuma ser verbo ou frase curta
que representa um comportamento. z Essas abstrações são parte do vocabulário do domínio;
z Exemplo:classe de java::awt
Rectangle z Juntas, representam
p as coisas que
q são importantes
p

add() para usuários e/ou implementadores.


grow()
move()
isEmpty()

13 14

UML: classe e relacionamento > Classe > Técnicas UML: classe e relacionamento > Classe > Técnicas
de modelagem de modelagem

z Uma classe bem estruturada: z Quando mostrar uma classe em um diagrama,


z provê uma abstração clara de alguma coisa trazida do z mostre somente as propriedades importantes para o
domínio do problema ou da solução; entendimento da abstração em seu contexto;
z compreende um conjunto pequeno, bem definido de z organize listas longas de atributos e operações usando
responsabilidades e as realiza bem; agrupamentos;
z permite uma clara separação entre sua especificação e z mostre classes relacionadas entre si no mesmo diagrama de
sua implementação. classe
classe.
z é simples e inteligível mas ao mesmo tempo extensível
e adaptável.

15 16

4
UML: classe e relacionamento > Classe > Técnicas UML: classe e relacionamento > Classe > Técnicas
de modelagem de modelagem

z Para modelar o vocabulário de um sistema: z Para modelar o vocabulário de um sistema:


z Identifique as coisas (substantivos) que os usuários ou z Estabeleça uma distribuição balanceada de
implementadores usam para descrever o problema ou responsabilidades entre as classes.
uma solução.
z Identifique as classes que colaboram com as
z Essas coisas são classes ou candidatas a classes.
classes identificadas.
z Para cada abstração, identifique um conjunto de
z Proveja os atributos e operações necessários
responsabilidades.
para executar as responsabilidades das
z As responsabilidades precisam estar bem definidas
classes.
e entendidas por todos.

17 18

UML: classe e relacionamento > Classe > Técnicas UML: classe e relacionamento > Classe > Técnicas
de modelagem de modelagem > Cartões CRC

Cartões CRC z Exemplo de cartão CRC:


z No trabalho de modelagem, cartões CRC (Classes,
Responsabilidade Colaborações) podem ser usados em na etapa
Responsabilidade, Nome da Venda
inicial de identificação de classes ou de candidatos a classe. classe
Responsabilidades Colaborações
z Cartões CRC são cartões (fichas de papel), cada ficha
corresponde a uma classe. Cada ficha contém o nome da classe e Inserir/excluir item de Item de venda
venda
2 colunas com descrição de suas responsabilidades e
Editar item de venda Estoque
colaborações.
z Colaborações apresentam outras classes que interagem com a Calcular impostos Mercadoria
classe descrita para o cumprimento de suas responsabilidades.
Totalizar venda

Registrar data e hora

19 20

5
UML: classe e relacionamento > Classe > Técnicas UML: classe e relacionamento > Classe > Técnicas de
de modelagem modelagem > Exemplo de modelagem de vocabulário

Exemplo de modelagem de vocabulário z Solução:


z Descrever tarefas realizadas no negócio.
z Modelar o vocabulário de uma empresa que fornece
z Identificar os substantivos ou locuções (conjunto de duas ou
equipamentos para clientes.
mais palavras que funcionam como uma unidade) que
z Cenário: um cliente faz pedidos de compras de aparecem nas descrições.

produtos. Uma transação comercial é realizada. A z Os substantivos ( ou locuções) são candidatos a classe.

z Mas podem também ser atributos,


atributos operações ou
empresa localiza
l li os produtos
d t e faz
f um carregamento
t
conceitos fora do domínio de interesse da modelagem.
que é enviado ao cliente.

21 22

UML: classe e relacionamento > Classe > Técnicas de UML: classe e relacionamento > Classe > Técnicas de
modelagem > Exemplo de modelagem de vocabulário modelagem > Exemplo de modelagem de vocabulário

z Solução: Nome da classe Cliente

z A empresa armazena seus produtos em vários


Responsabilidades Colaborações
armazéns.
Descrever dados de um cliente Fatura
z O cliente envia uma solicitação de orçamento.
z O orçamento é enviado ao cliente. Criar um novo cliente Pedido

z O cliente envia um pedido de compra.


Excluir cliente
z Os itens do pedido são localizados nos armazéns
Alterar dados do cliente
e embarcados.

23 24

6
UML: classe e relacionamento > Classe > Técnicas de UML: classe e relacionamento > Classe > Técnicas de
modelagem > Exemplo de modelagem de vocabulário modelagem > Exemplo de modelagem de vocabulário

Nome da classe Armazenagem Nome da classe Produto

Responsabilidades Colaborações Responsabilidades Colaborações

Descrever a localização de um Produto Descrever um produto Armazenagem


produto antes do carregamento
Criar, editar e excluir um produto Fatura
Fatura
do cadastro da empresa
Localizar um produto Pedido
Carregamento

25 26

UML: classe e relacionamento > Classe > Técnicas de UML: classe e relacionamento > Classe > Técnicas de
modelagem > Exemplo de modelagem de vocabulário modelagem > Exemplo de modelagem de vocabulário

Nome da classe Pedido Nome da classe Transação

Responsabilidades Colaborações Responsabilidades Colaborações

Identificar um pedido de Produto Descrever o estado da transação Pedido


fornecimento de um cliente comercial envolvendo o
fornecimento.
Fatura
Carregamento

Carregamento
Cliente

Cli t
Cliente Fatura

27 28

7
UML: classe e relacionamento > Classe > Técnicas de UML: classe e relacionamento > Classe > Técnicas de
modelagem > Exemplo de modelagem de vocabulário modelagem > Exemplo de modelagem de vocabulário

Nome da classe Carregamento Cliente Armazenagem Produto


nome Iden ti fi cação
endereço nome
Responsabilidades Colaborações dataNascimento quantida de
q
locali zação
Manter informação sobre Pedido
produtos embarcados em
comparação com pedidos Pedido Fatura

Cliente item
quantidade

Armazenagem
Transa ção Carregamento
Produto ações

comprometer()
recuar()
teve Sucesso()

29 30

UML: classe e relacionamento > Classe > Técnicas de UML: classe e relacionamento > Classe > Técnicas de
modelagem modelagem

Exemplo de distribuição de responsabilidades


z Em uma modelagem, não é interessante ter z Para se distribuir responsabilidades:

classes com poucas responsabilidades (muito z identifique as classes que trabalham em conjunto para executar

simples) nem classes muito complexas


complexas. um comportamento;
t t

z Classes com muitas responsabilidades são z identifique o conjunto de responsabilidades de cada classe;

z difíceis de usar z analise o conjunto de classes como um todo. Parta classes

z não muito re-utilizáveis. muito complexas em classes menores, junte classes muito
simples em classes maiores e re-aloque suas responsabilidades.
z Classes muito simplificadas:
z Considere o modo como as classes interagem e redistribua suas
z levam a uma fragmentação do modelo
responsabilidades de modo que nenhuma classe faça muito ou
z modelo fica difícil de gerenciar e de se entender.
muito pouco.

31 32

8
UML: classe e relacionamento > Classe > Técnicas de UML: classe e relacionamento > Classe
modelagem

z Exemplo de distribuição balanceada de


responsabilidades (do Smalltalk):
Modelagem em outros domínios
z Para utilizar a UML em modelagem de processos de
negócio ou outras aplicações que não envolvam software:
<<Responsabilidade>> z Modele suas abstrações como classes.
Modelo .gerenciar o estado do Visào
modelo z Pode-se usar mecanismos de extensão da UML para criar
estereótipos e outros elementos de modelagem específicos do
<<Responsabilidade>> domínio que lhe interessa.
.representar o modelo na tela
.gerenciar movimentos e z Pode-se modelar coisas envolvendo hardware que podem
C t l d
Controlador <<Responsabilidade>> redimensionamentos da vista
.sincronizar mudanças no .interceptar eventos do usuário
conter software como nodos, de modo a permitir detalhar sua
modelo e em suas vistas estrutura.

33 34

UML: classe e relacionamento > Classe > Modelagem em UML: classe e relacionamento > Classe
outros domínios

z Exemplo. Modelagem de tipos primitivos


z No outro extremo, as vezes é interessante modelar
Robô <<equipamento>> tipos primitivos que vêm de linguagens de
Lin ha de montag em
programação, ex.: inteiros, enumeração, etc.
z Para isso:
z modele a abstração como datatype ou enumeration,
<<hu mano>> usando classes estereotipadas.
estereotipadas
Controlador do Robô
z Use restrições da UML (constraints) se for necessário
especificar um intervalo de valores.

35 36

9
UML: classe e relacionamento > Classe > Modelagem de tipos UML: classe e relacionamento > Classe
primitivos

z Exemplos: Visibilidade
z É uma enumeração cujos valores {public, protected,
<<datatype>> <<enumeration>>
Int Boolean private} indicam se o elemento de modelagem ao qual
{valores no intervalo -2**31 a +2**31}
false
se referem podem ser vistos fora de seu espaço de
true
nome.
<<enumeration>> z Espaço de nome é a parte do modelo na qual o nome
Estado
pode ser definido ou usado. Dentro de um espaço
p p ç de
desocupado
trabalhando nome, o nome tem um significado único.
erro

37 38

UML: classe e relacionamento > Classe > Visibilidade UML: classe e relacionamento > Classe > Visibilidade

z A visibilidade de um elemento de modelo define se ele poderá z A UML define 3 níveis de visibilidade:
ser referenciado por um elemento fora de seu espaço de
z Público: um elemento que possa ver o contêiner de um
nome
nome.
elemento indicado na visibilidade pode também vê-lo.
z Visto de outra maneira, a visibilidade é parte da relação entre um
elemento e seu Contêiner. z Protegido: somente um elemento dentro de um contêiner
z O Contêiner de um elemento pode ser uma classe, um pacote ou ou o descendente de um contêiner pode ver o elemento
algum outro espaço de nome.
indicado.
z Visibilidade pode ser aplicada a atributos e operações em
z Privado: somente um elemento dentro do contêiner pode
relação a uma classe ou entre classes e o pacote onde ela foi
ver o elemento.
definida (seu Contêiner), por exemplo.

39 40

10
UML: classe e relacionamento > Classe > Visibilidade UML: classe e relacionamento > Classe

z A visibilidade é usada para realizar o encapsulamento Escopo


de uma abstração, ou seja, expor somente as features
z Feature: nome que se dá a uma propriedade como atributo
que são
ã necessárias
á i para a cumprimento
i t das
d
ou operação que é encapsulada em um elemento de
responsabilidades de um elemento de modelagem.
modelagem como um classificador.
z Isso é essencial para se construir sistemas sólidos e
resilientes, facilitando o entendimento, a modularização, a z O escopo indica o contexto que dá significado a um nome.

manutenção, etc. Define se uma feature de uma classe representa um valor


em cada
d instância
i tâ i dad classe
l ou se representa
t um valor
l
compartilhado por todas as instâncias da classe.

41 42

UML: classe e relacionamento > Classe > Escopo UML: classe e relacionamento > Classe

z Há 2 tipos de escopo na UML:


z instance: cada instância do classificador tem seu próprio valor para Classe abstrata
a feature;
z Uma classe abstrata é aquela usada somente na
z classe ou classifier (estático): só há um único valor para a feature
para todas as instâncias do classificador.
construção de uma hierarquia de relacionamentos de

z Notação: um escopo de classificador é denotado por sublinhado no generalização – não pode ter nenhuma instância direta.
nome do atributo ou operação z É utilizada para definir operações e atributos comuns a um
conjunto de classes filho.
Relógio
z O oposto, aquela
l que gera objetos
bj como instâncias,
i â i é
marca
tipo chamado classe concreta.
horário
data
identificadorCAtegoria

43 44

11
UML: classe e relacionamento > Classe > Classe abstrata UML: classe e relacionamento > Classe

z Uma classe folha é aquela que não pode gerar um filho Polimorfismo
z Em UML, pode-se usar a propriedade {leaf} para z Operações
p ç têm algumas
g propriedades
p p similares a classes.
especificar uma classe folha. Uma operação abstrata é aquela que não tem um método

z Uma classe raiz é aquela que não pode ter pais. definido.
z Uma implementação para a operação tem que ser suprida em
z Em UML, pode-se usar a propriedade {root} para
algum de seus descendentes concretos.
especificar uma classe raiz.
z Um elemento abstrato é denotado p
pelo nome em itálico.
z O oposto de abstrato é concreto

45 46

UML: classe e relacionamento > Classe > Polimorfismo UML: classe e relacionamento > Classe > Polimorfismo

z Uma operação normalmente é considerada polimórfica,


z Exemplo a seguir:
isto é, sua implementação (seu método) pode ser suprida
ou sobrescrita por uma classe descendente. z as classes Icon,
Icon Rectangular Icon e Arbitrary
z Um descendente pode definir ou sobrescrever um método de
uma operação polimórfica. Icon são abstratas;
z O oposto de polimórfica é uma operação dita folha (leaf).
z display e isInside são operações polimórficas;
z Neste caso, um método tem que ser definido para a
operação.
z Icon::display() é uma operação abstrata;
z Uma operação não declarada folha é considerada
polimórfica. z Icon::getID() é uma operação folha e concreta.

47 48

12
UML: classe e relacionamento > Classe > Polimorfismo UML: classe e relacionamento > Classe

Icon
origin : Point {ro ot} Atributo
display()
getId() {leaf}
z Atributo é uma propriedade de uma classe que
descreve um conjunto de valores que instâncias da
Rectangular Icon Arb itrary Icon propriedade podem ter.
height : Integer edge : LineCollection
width : Integer
isInside(p : Point) : Bolean
z A sintaxe completa da definição de um atributo é:
[visibility] nome [mutiplicity] [:type] [= initial-value]
[{property-string}].
Button
Ex : apelido [0:5]: string
Ex.:
display()
+ id : Integer {frozen}
OKButton {leaf}

display()

49 50

UML: classe e relacionamento > Classe > Atributo UML: classe e relacionamento > Classe

z Há 3 propriedades de atributos definidas na UML: Operação


z Changeable: não há restrições quanto a se modificar o z Operação é a especificação de uma transformação ou
valor do elemento (default). consulta que um objeto pode ser solicitado a executar.
z addOnly: para atributos com multiplicidade maior que z A sintaxe completa de uma operação é:
1, novos valores podem ser adicionados ao conjunto de [visibility] nome [(parameter-list)] [:return type] [{property-
valores para um atributo mas, uma vez criados, um valor string}].
não pode ser removido ou alterado. Ex.: - rearranja
z frozen: o valor do atributo não pode ser alterado conjunto (n : Name, s : string)
depois que o elemento é inicializado. restart () {guarded}

51 52

13
UML: classe e relacionamento > Classe > Operação UML: classe e relacionamento > Classe > Operação

z O nome da operação mais seus parâmetros e tipo de


Propriedades de operações
retorno é chamado de Assinatura da operação.
z Cada parâmetro é da forma: z Há 5 propriedades de operações definidas na UML:
[direction] name : type [= default-value] leaf folha, indica que a operação não é
z Direction pode ter um dos valores: polimórfica e não se pode sobrescrever.
in parâmetro de entrada, não pode ser modificado;
isQuery a execução da operação não altera o estado
out parâmetro de saída, pode ser alterado para
do sistema, isto é, é uma função de consulta sem
comunicar informação ao chamador;
inout combinação dos anteriores, pode ser alterado. efeitos colaterais.

53 54

UML: classe e relacionamento > Classe > Operação >


Propriedades de operações UML: classe e relacionamento > Classe

Classe template
z sequential: os chamadores devem coordenar a execução da
operação de fora, de modo que somente um fluxo de execução z Classe template, também chamada classe parametrizada, é um
exista no objeto em um tempo
tempo. Caso contrário,
contrário a semântica e elemento parametrizado, usado para a geração de novas classes a
integridade do objeto não pode ser garantida. partir de um gabarito.

z guarded: a semântica e integridade do objeto é garantida na z Exemplo:


presença de múltiplos fluxos de controle através da Item
Value
sequencialização das chamadas para todas as operações Bucket
Map
guardadas do objeto.
bin d(i : Item, v : Value ) : Boole an
z concurrent : a semântica e integridade da operação é garantida na isBou nd(i : Item) : Boolean

presença de múltiplos fluxos de controle tratando a operação como


atômica, ou seja, ou seja, vários fluxos de controle podem se
ativados concorrentemente sem problemas. Mapf

55 56

14
UML: classe e relacionamento > Classe > Modelagem de
UML: classe e relacionamento > Classe
semântica de uma classe

Modelagem de semântica de uma classe Possibilidades para especificação da


z A UML permite várias possibilidades para semântica
especificação da semântica de uma classe, z Especificar as responsabilidades da classe.
variando de mais informal, como responsabilidade, z Especificar a semântica da classe como um todo usando
a mais formal, como OCL (Object constraint um texto estruturado em uma Nota ligada à classe.
language). z Especificar o corpo de cada método usando um texto
z Menos formal significa
g menos completo
p ou detalhado,, g g
estruturado ou linguagem de programação.
p g ç
não significa menos preciso. z Para isso pode ser utilizado uma Nota associada à operação.

57 58

UML: classe e relacionamento > Classe > Modelagem de semântica UML: classe e relacionamento > Classe > Modelagem de semântica
de uma classe > Possibilidades para especificação da semântica de uma classe > Possibilidades para especificação da semântica

z Especificar uma Colaboração que representa a classe.


z Especificar pré e pós condições de cada
z Uma Colaboração dá nome a uma sociedade de papéis e
operação e o invariante de uma classe, outros elementos que trabalham juntos para prover um
comportamento cooperativo que é maior que a soma de
utilizando Notas associadas às operações ou a todos os elementos.
classe. z Uma Colaboração tem uma parte estrutural e uma parte
dinâmica, pode sr usada para especificar todas as
z Especificar uma Máquina de Estados para a dimensões da semântica de uma classe.

classe. z Especificar pré e pós condições de cada operação e o


invariante de uma classe utilizando uma linguagem formal
z A máquina de estados é um comportamento que especifica a
como OCL.
seqüencia de estados que um objeto assume durante seu
ciclo de vida em resposta a eventos.

59 60

15
UML: classe e relacionamento > Classe > Modelagem de semântica UML: classe e relacionamento
de uma classe > Possibilidades para especificação da semântica

Observações Interface

z Interface é uma declaração de um conjunto coerente de características e


z Pode se combinar as várias possibilidades apresentadas
Pode-se apresentadas.
obrigações, como um contrato que um classificador se propõe a cumprir.
z Ter em mente os objetivos da especificação da semântica. z Descreve o comportamento visível externo de um elemento

z Pode-se especificar o que uma classe faz (visão externa) ou z Pode representar um comportamento completo ou parte dele.

como ela faz (visão interna), ou ambas. z Uma interface descreve a especificação das operações (assinaturas) mas

z A visão externa é mais voltada para os usuários/clientes, a não as implementações das operações.

visão interna é mais voltada para os implementadores. z Uma interface pode ser associada a uma classe ou a um componente que a

realiza.

61 62

UML: classe e relacionamento UML: classe e relacionamento > Relacionamento

Relacionamento Dependência
z Relacionamentos são denotados por linhas conectando elementos z Dependência é uma conexão semântica entre duas Coisas na qual uma
de modelagem.
modelagem alteração em uma delas (a dependente) pode afetar a semântica da outra
z Modelam conexões semânticas entre elementos. Coisa.
z Um modelo forma uma teia de relacionamentos. Cuidado ao z Pode ser considerada um relacionamento de uso, onde uma Coisa necessita

modelar: utilizar outra Coisa.

z o abuso da utilização de relacionamentos em um modelo dificulta sua z Graficamente, é representada como uma seta com linha pontilhada, dirigida
compreensão – vira uma bagunça; no sentido da Coisa de que se depende.
z O oposto,
p pode
p significar
g uma perda
p da riqueza
q que
q está associada ao z Pode-se
Pode se dar um nome a uma dependência, mas mais comum é se usar
modo como as coisas colaboram entre si em um sistema.
estereótipos para definir tipo de dependência.

63 64

16
UML: classe e relacionamento > Relacionamento >
UML: classe e relacionamento > Relacionamento
Dependência

Generalização
z Exemplo: dependência é utilizada com freqüência Generalização
para indicar que uma classe usa outra classe como z É uma relação taxonômica (de classificação) entre um elemento
mais
i gerall e um elemento
l t mais
i específico.
ífi
argumento na assinatura de uma operação.
z Um relacionamento de especialização/generalização indica que
objetos do elemento especializado (ou filho) podem substituir
Clipe de Filme
os objetos do elemento generalizado (ou pai).
nome
z O filho tem todos os atributos e operações dos pais mas pode ter

ExibeEm(canal : Canal) Can al outros atributos e operações


começar() z Uma generalização pode ter nome mas raramente é utilizado.
parar()
reiniciar(c : Canal)

65 66

UML: classe e relacionamento > Relacionamento >


UML: classe e relacionamento > Relacionamento
Associação

Associação Navegação
z Descreve um conjunto de ligações, sendo uma ligação uma z Uma associação, por default, indica uma navegação bidirecional.
conexão
ã semântica
â ti entre
t objetos.
bj t z N entanto, pode-se
No d i di
indicar uma sentido
id de
d navegação:
ã
z Muito utilizada para indicar possibilidade de navegação entre z uma seta em um dos lados da associação indica o sentido de

objetos. navegação;
z isso indica o sentido em que a navegação é mais eficiente mas não
z Uma associação pode ter nome e indicação de direção de
exclui navegação no outro sentido.
leitura:

Trabalha para Usuário S enha


Empresa Pessoa

67 68

17
UML: classe e relacionamento > Relacionamento > UML: classe e relacionamento > Relacionamento >
Associação Associação

Nome de papel Multiplicidade


z Oficialmente, na UML 2.0 chama-se nome de extremidade de z Multiplicidade pode ser associado a um lado de uma
associação. associação
i ã para iindicar
di quantos
t objetos
bj t da
d classe
l pode
d ser
associado a objetos da classe do lado oposto.
z É utilizado em um dos lados de uma associação para indicar
o papel com que a classe a seu lado apresenta-se para a z Multiplicidade pode ser considerada como uma restrição à
classe do lado oposto. cardinalidade de um conjunto.

Cliente de +Seguradora Empresa Profissional


Pessoa +Cli ente Banco
0..1 1..n

69 70

UML: classe e relacionamento > Relacionamento > UML: classe e relacionamento > Relacionamento >
Associação Associação > Visibilidade

Visibilidade z A visibilidade pública é default.


z Em uma associação, a visibilidade, usada em um de seus z A visibilidade privada indica que objetos de um lado
lados, indica se objetos de uma classe podem ver ou não são acessíveis a nenhum objeto fora da
navegar para objetos do outro lado. associação.
z Exemplo: no exemplo, a senha somente pode ser acessado
z A visibilidade protegida indica que objetos de um lado
por objetos da classe usuário. não são acessíveis a nenhum objeto fora da

-chave associação exceto para filhos no outro lado.


associação,
Grupo de Usuário +usu ário Usuário Senha
+proprietário

71 72

18
UML: classe e relacionamento > Relacionamento > UML: classe e relacionamento > Relacionamento >
Associação Associação

Qualificador Classe de associação


z Descreve um atributo ou lista de atributos associada a um dos lados de
z É utilizada para se definir propriedades de uma associação.
uma associação,
ç , onde os valores desses atributos selecionam um sub-
conjunto (geralmente um) de objetos da classe do outro lado. z Exemplo:
z Exemplo:
Empresa Pessoa
1..n 1..n

Emprego
Oficina de Reparo Item de Conserto
identiificador:: Integer
identiificador descrição
d i ã
0..1 data Admissão
salário

73 74

UML: classe e relacionamento > Relacionamento > UML: classe e relacionamento > Relacionamento >
Associação Associação

Restrições Agregação e composição


z Além das propriedades mostradas acima, outras z Agregação é um tipo especial de associação que indica uma
relação todo/parte.
todo/parte
restrições
t i õ (constraints)
( t i t ) podem
d ser aplicadas
li d a
z Composição é uma forma de agregação com posse forte e
associações.
tempo de vida idêntico.
z Algumas restrições são definidas na UML: z Um objeto só pode participar de uma composição.
z ordered: especifica que o conjunto de objetos naquele z A relação de agregação ou composição é independente da
lado da associação é ordenado. direção de navegação.
z xor: especifica
ifi que, em um conjunto
j t ded associações,
i õ
somente uma se manifesta para cada objeto associado. Departamento Empresa

0..n 1

75 76

19
UML: classe e relacionamento > Relacionamento >
UML: classe e relacionamento > Relacionamento
Associação

Exemplo de modelo Realização


Tem z É uma relação semântica entre classificadores onde um
Escola Departa me nto 0 1
0..1
classificador especifica um contrato que o outro
1..n
1
1..n 1..n
1..n Lotado em
classificador garante cumprir.

z A realização é utilizada entre interfaces e as classes ou


Membro
+Chefe componentes que as realizam e entre casos de uso e as
1..n 1..n 1..n 1
Faz Ensina colaborações que os realizam
realizam.
Estudante Disciplina Professor
1 0..n 1..n 0 .. n 1..n

77 78

20