Buscar

3 UML DiagramasClasses[1 60]

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UML – Unified Modeling Language
Diagramas de Classes
José Correia, Abril 2006
(http://paginas.ispgaya.pt/~jcorreia/)
José Correia UML – Diagramas de Classes 2
Questões
? Qual a finalidade dos diagramas de classes UML?
? Que elementos constituem os diagramas de classes?
? O que é uma Associação?
? O que significa a multiplicidade das associações? E a navegabilidade?
? O que é uma Classe-Associação?
? O que é uma Agregação?
? Qual a diferença entre uma Associação e uma Agregação?
? Para que serve a Generalização?
? O que são super-classes e subclasses?
? Qual a diferença entre agregações e generalizações?
? O que são métodos?
? etc.
José Correia UML – Diagramas de Classes 3
Afinal, o que é um objecto?
? “Um objecto é uma pessoa, uma coisa, ou um lugar”
- “Inside Taligent Technology”, Sean Cotter, Mike Potel, Addison Wesley, 1995
? Para quem já conhece o modelo Entidade-Associação, pode dizer-se 
que um objecto é uma instância de uma entidade, não só com dados, 
mas também com comportamento
? Os objectos (que constituem um modelo) colaboram entre si para 
fornecerem as funcionalidades pretendidas
• Exemplo: Numa sala de aula, um PROFESSOR ensina os ALUNOS, cada 
um dos quais sentado na sua CADEIRA e usando uma MESA
• os objectos colaboram para realizar a tarefa para a qual foram criados
José Correia UML – Diagramas de Classes 4
Noção de objecto
Um objecto é algo (coisa concreta ou conceito)...
… que faz sentido num determinado contexto
… com fronteiras bem definidas
… relevante para o problema em causa
… com identidade própria
• os objectos são distinguíveis uns dos outros apesar de poderem ter o 
mesmo valor em todos os seus atributos
… com estado, comportamento e identidade
• tem identidade pelo simples facto de
existir
José Correia UML – Diagramas de Classes 5
Objectos: Atributos e Estado
? Um objecto que represente uma cara tem como atributos dois olhos 
(um esquerdo e um direito), um nariz, duas orelhas (uma esquerda e 
outra direita), uma boca, etc.
? O estado desse objecto
corresponde ao conjunto
de valores dos seus
atributos
• Exemplos: estados “feliz”
ou “com fortes dores”
José Correia UML – Diagramas de Classes 6
Objectos: Comportamento
? O comportamento permitido a um objecto é o conjunto dos estados 
possíveis para esse objecto
? O comportamento que determinado objecto pode assumir fica 
definido pelo conjunto das operações que podem ser executadas 
sobre esse objecto
? Os atributos do objecto e, consequentemente, todas as alterações ao 
seu estado, apenas deverão estar acessíveis através das operações 
sobre os objectos
• No exemplo anterior, podemos admitir as seguintes operações: ‘mostra 
muita dor’, ‘mostra desconforto’, ‘mostra alegria’ e ‘mostra desconfiança’.
- exemplo extraído de “Quadrinhos e arte sequencial”, Eisner, 1985
José Correia UML – Diagramas de Classes 7
Objecto: Estado, Identidade e Comportamento
? Estado: valores de atributos (tamanho, forma, peso, etc.) e ligações 
com outros objectos
? Identidade no espaço: é possível distinguir dois objectos mesmo que 
o seu estado seja idêntico
• exemplo: podemos distinguir duas folhas de papel A4, mesmo que tenham 
os mesmos valores dos atributos
? Identidade no tempo: é possível saber que se trata do mesmo 
objecto mesmo que o seu estado mude
• exemplo: se pintarmos um folha de papel A4 de amarelo, continua a ser a
mesma folha de papel
? Comportamento: um objecto exibe comportamentos invocáveis (por 
resposta a mensagens) ou reactivos (por resposta a eventos)
José Correia UML – Diagramas de Classes 8
Objectos do mundo real e computacionais
? No desenvolvimento de software orientado por objectos, procura-se 
imitar no computador o mundo real visto como um conjunto de 
objectos que interagem entre si
? Alguns objectos computacionais são imagens de objectos do mundo 
real
• Exemplos de objectos do mundo real: 
- o José
- o carro com matrícula ZE-03-06
- a aula de ASI no dia 27/03/2006 às 18h00
• Exemplos de objectos computacionais: 
- o registo que descreve o José (imagem de objecto do mundo real)
? Dependendo do contexto (análise ou projecto) podemos estar a falar 
em objectos do mundo real, em objectos computacionais ou nas duas 
coisas em simultâneo
José Correia UML – Diagramas de Classes 9
Objectos e Classes
? Há objectos que são muito parecidos
• por exemplo, todas as pessoas têm um nome e data de nascimento, 
quase todas têm uma morada, a maioria terá telefone, etc.
• Todos os objectos que modelizam o conceito “pessoa” partilham estas 
características, ou atributos, embora cada uma delas possa ter valores 
distintos para esses atributos
? Diz-se que estes objectos muito parecidos são todos de um mesmo 
tipo, ou classe
• uma classe pode ser vista como uma “fábrica dos objectos” dessa classe
? “Uma classe é uma descrição de um grupo de objectos, todos com os 
mesmos atributos, comportamentos e associações com outros 
objectos” -- Terry Quatrani
José Correia UML – Diagramas de Classes 10
Noção de classe
? Uma classe de objectos é um agrupamento de objectos com...
… as mesmas propriedades (atributos)
… igual comportamento (operações)
… idênticas relações com outros objectos
… a mesma semântica
José Correia UML – Diagramas de Classes 11
Noção de classe (cont.)
? Em Matemática, uma classe é um conjunto de “objectos” com uma 
propriedade em comum, podendo ser definida em compreensão...
C = {x ∈|N : x mod 3 = 2}
... ou em extensão
C = {2, 5, 8, 11, 14, ...}
? Um objecto de uma classe é uma instância da classe
? A extensão de uma classe é o conjunto de instâncias da classe
? Classes de objectos estão para os objectos da mesma forma que 
tipos de dados estão para as variáveis (no âmbito de uma linguagem 
de programação)
José Correia UML – Diagramas de Classes 12
Noção de classe (cont.)
? O conjunto de todos os objectos num determinado 
contexto/domínio/aplicação forma um universo
? As classes (em extensão) são subconjuntos do UoD (Universe of
Discourse)
UoD
x José
x Sofia
x Claudia
Aluno Curso
x Electrotecnia
x Informática
objecto x Dª Rita
x Sr. Silva
Funcionário
classe
José Correia UML – Diagramas de Classes 13
Noção de classe (cont.)
? Exemplos de classes:
• Coisas concretas: Pessoa, Turma, Carro, Imóvel, Factura, Livro
• Papéis: Aluno, Professor, Piloto
• Eventos: Curso, Aula, Acidente
• Tipos de dados: Data, Intervalo de Tempo, Número Complexo, Vector
? Para se precisar o significado pretendido para uma classe, deve-se 
explicar o que é (e não é ...) uma instância da classe
• Exemplo: “Um aluno é uma pessoa que está inscrita num curso 
ministrado numa escola. Uma pessoa que esteve no passado inscrita num 
curso, mas não está presentemente inscrita em nenhum curso, não é um 
aluno.”
• o nome da classe pode não ser suficiente para se compreender o 
significado da classe
José Correia UML – Diagramas de Classes 14
Diagramas de Classes
? Em UML, um diagrama de classes serve para capturar e modelar o 
vocabulário de um sistema, do ponto de vista do utilizador/problema 
ou do implementador/solução
• ponto de vista do utilizador/problema – na fase de captura e análise de 
requisitos, em paralelo com a identificação dos casos de uso
• vocabulário do implementador/solução – na fase de projecto (design)
José Correia UML – Diagramas de Classes 15
Representação de Classes
? Nos diagramas (de classes), uma classe é representada por um 
rectângulo com o nome da classe
? Em UML, é habitual escrever os nomes das classes no singular (nome 
de uma instância da classe), com a primeira letra em maiúscula
Aluno Professor Curso
José Correia UML – Diagramas de Classes 16
Representação de Objectos
? Nos diagramas (de objectos),um objecto é representado por um 
rectângulo com o nome sublinhado
José : Professor
nome do 
objecto
separador nome da 
classe
ou : Professor
objecto 
anónimo
ou José:
classe não 
especificada
José Correia UML – Diagramas de Classes 17
Noção de atributo
? Um atributo é uma propriedade, com nome, de uma classe que 
descreve uma gama de valores que as instâncias da propriedade 
podem tomar
? Exemplos:
• atributos de Pessoa: nome, data de nascimento, peso, etc.
• atributos de Carro: matrícula, ano, peso, etc.
? Um atributo de uma classe tem um valor (possivelmente diferente) em 
cada instância (objecto) da classe
• Exemplo: José é uma pessoa com nome “José Silva”, data de nascimento 
“18/3/1973” e peso “70 Kg”
José Correia UML – Diagramas de Classes 18
Noção de atributo (cont.)
? Todos os objectos de uma classe são caracterizados pelos mesmos 
atributos
? Uma classe não pode ter dois atributos com o mesmo nome
? Podem existir atributos com o mesmo nome em classes diferentes 
(ver atributo peso definido nas classes Pessoa e Carro)
? O valor de um atributo de um objecto pode mudar ao longo do tempo
• o estado de um objecto num dado momento é dado (em parte) pelos 
valores dos seus atributos (outra parte é dada pelas ligações que tem com 
outros objectos)
José Correia UML – Diagramas de Classes 19
Representação de atributos e valores
? Os atributos são listados num compartimento de atributos (opcional) a 
seguir ao compartimento com o nome da classe
? A seguir ao nome de um atributo pode (deve!) indicar-se o tipo de 
dados (domínio do atributo) e o valor por defeito
? Os nomes dos tipos não estão pré-definidos em UML, podendo 
(devendo!) usar-se os da linguagem de implementação alvo
Pessoa
nome: string
data de nascimento: date
peso: inteiro = 75 kg
compartimento 
de atributos
valor inicial por omissão
José: Pessoa
nome = “José Silva”
data de nascimento = 18/3/1973
peso = 70 kg
classe objecto
José Correia UML – Diagramas de Classes 20
Noção de operação
? Uma operação é uma função ou transformação que pode ser aplicada 
a objectos (por ele próprio, ou por objectos de outras classes)
• Por exemplo, ligar e desligar constituem duas operações da classe 
Aparelho
• Estas operações podem ser invocadas, por exemplo, por objectos das 
classes Pessoa e Controlador
? Uma operação…
… é algo que se pode (mandar) fazer a um objecto de uma classe
… é um serviço oferecido pelos objectos de uma classe
… tem sempre como destino um objecto
… independentemente de ser invocada por um objecto, é aplicada a um 
objecto
José Correia UML – Diagramas de Classes 21
Noção de operação (cont.)
? Todos os objectos da classe partilham as mesmas operações
? A mesma operação pode ser aplicada a classes diferentes
• É a propriedade de polimorfismo: uma dada operação assume diferentes 
formas em classes diferentes
? As operações são representadas num compartimento de operações, a 
seguir ao compartimento de atributos
? Para cada operação pode-se indicar o nome, lista de argumentos e 
tipo de retorno
Pessoa
nome: string
morada: string
mudar-morada(nova-morada:string): bool
José Correia UML – Diagramas de Classes 22
Métodos
? O método é a implementação de uma operação para determinada 
classe
? Os métodos de uma operação devem ter a mesma assinatura: nº de 
argumentos, tipo de argumentos, tipo de resultado
? Uma operação polimórfica é uma operação que apresenta diversas 
implementações, cada implementação para cada tipo de objectos para 
os quais a operação é submetida
? Exemplo de uma operação polimórfica:
• A operação print pode ser aplicada a ficheiros,
tabelas de BD, écrans, etc.
? Para cada classe de objectos é definido o
método apropriado à implementação
da operação
Ficheiro
nome: string
tamanho: integer
data_criação: data
print(impressora:string)
remover_conteudo()
renomear(nome:string)
José Correia UML – Diagramas de Classes 23
Tipos de Operações
? Operações com efeitos laterais
• modificam o estado do objecto
• modificam os seus atributos e relações em que o objecto participa
? As perguntas (queries) são funções que calculam valores sem alterar 
o estado do objecto
? Atributos derivados
• Propriedades de um objecto que
podem ser calculadas a partir de
outras propriedades.
• Exemplo: as dimensões de um
rectângulo são calculadas a partir
dos seus vértices superior
esquerdo e inferior direito.
Rectângulo
vertice_sup_esq: ponto
vertice_inf_dir: ponto
rodar(angulo: real)
mover(vertice_sup_esq: ponto)
aumentar(factor: real)
José Correia UML – Diagramas de Classes 24
Ligações e Associações
? Conforme já foi dito, os objectos podem ter de colaborar entre si para 
levar a cabo determinada tarefa
? Esta necessidade de colaboração é modelizada por uma ligação
entre os objectos
? Quando dois objectos estão ligados, também estão as respectivas 
classes
? Diz-se, então, que as classes estão associadas e representa-se esta 
associação por uma linha a unir as duas classes
• a classe Professor está associada à classe Aluno pela associação ensina
Professor
ensina Aluno
José Correia UML – Diagramas de Classes 25
Participante-1 Participante-2
Nome da associação
Ligações e Associações (cont.)
? Uma associação é uma relação estrutural entre objectos das classes 
participantes (um objecto de cada classe em cada ligação)
? Uma associação descreve um grupo de ligações com estrutura e 
semântica comuns:
• Pessoa trabalha-para Empresa
• Pessoa é-descendente-directo-de Pessoa
? Uma associação não gera novos objectos
Pessoa
trabalha-para Empresa
José Correia UML – Diagramas de Classes 26
Ligações e Associações (cont.)
? As associações são bidireccionais por natureza
? Pode haver mais do que uma associação (com nomes diferentes) 
entre o mesmo par de classes
? Assim como um objecto é uma instância duma classe, uma ligação é
uma instância duma associação
• José Silva trabalha-para a empresa Zacarias & Zacarias Lda.
• José Silva é-filho-de José Silva Sénior e Maria da Fonte Silva
? As ligações da mesma associação relacionam objectos das mesmas 
classes
José Correia UML – Diagramas de Classes 27
Ligações e Associações (cont.)
? As associações descrevem conjuntos de ligações potenciais, da 
mesma forma que as classes descrevem conjuntos de objectos 
potenciais
? Associações e ligações correspondem normalmente a verbos
existentes na formulação do problema
? Matematicamente, uma associação binária é uma relação binária, i.e., 
um subconjunto do produto cartesiano das extensões das classes 
participantes
? Do ponto de vista formal e matemático uma ligação é um tuplo: 
sequência de instâncias de objectos
José Correia UML – Diagramas de Classes 28
Características das Associações
? As associações podem ser binárias (caso normal), ternárias (caso não 
muito frequente) ou de ordem superior (caso muito raro)
? Associações ternárias ou de ordem superior devem, sempre que 
possível, ser transformadas em associações binárias
? Exemplo de uma associação ternária:
• as pessoas envolvidas no desenvolvimento de um projecto utilizam 
determinadas linguagens de programação na sua implementação
Projecto Linguagem deprogramação
Pessoa
José Correia UML – Diagramas de Classes 29
Papéis
? O papel que os objectos desempenham numa associação pode 
necessitar de identificação explícita
? Exemplo:
? Os papeis aparecem normalmente como substantivos na 
especificação do problema
Participante-1 Participante-2
Nome da associação
papel-1 papel-2
Empresa Pessoaempregador empregado
Emprega
José Correia UML – Diagramas de Classes 30
Auto-associação
? Pode-se associar uma classe com ela própria (em papéis diferentes)
? Associações entre objectosda mesma classe necessitam, 
obrigatoriamente, de identificação explícita dos papeis 
desempenhados por cada objecto
? Quando objectos da mesma classe se associam, diz-se que existe 
uma auto-associação
• Exemplos:
- pessoa É CASADA COM pessoa;
- empregado É RESPONSÁVEL POR empregado
Pessoa
Paternidade
pai
filho filho
mãe
Maternidade
José Correia UML – Diagramas de Classes 31
Multiplicidade das Associações
? O número de objectos de cada lado das associações entre as 
respectivas classes, designa-se por aridade (ou multiplicidade) da 
associação
• Exemplo: Podemos dizer que um Aluno tem mais do que um Professor e 
um Professor ensina a mais do que um Aluno
? Notação (exemplos):
• * - zero ou mais
• 1 - exactamente um
• 0..1 - zero ou um
• 1..* - um ou mais
• 1, 3..5 - um ou três a 5
Professor
ensina Aluno
1..* 1..*
José Correia UML – Diagramas de Classes 32
Multiplicidade das Associações (cont.)
? muitos-para-muitos
? muitos-para-um
? um-para-um
x
x
x
x
x
x
Partic. 1 Partic. 2* *
x
x
x
x
x
x
Partic. 1 Partic. 2* 1
x
x
x
x
x
x
Partic. 1 Partic. 21 1
José Correia UML – Diagramas de Classes 33
Multiplicidade das Associações (cont.)
? A multiplicidade de uma associação define o nº de objectos de uma 
classe que se relacionam com um único objecto de outra classe
? Alguns exemplos:
• Um para Um
• Um para Muitos
• Muitos para Muitos
• Um para Dois ou Quatro
País Cidadetem-como-capital
1 1
Segmento 
de recta
Ponto
cruza2..* *
José Correia UML – Diagramas de Classes 34
Multiplicidade das Associações (cont.)
? A multiplicidade deve ser a última coisa a determinar depois dos 
objectos, classes, atributos e associações
? Muitas das vezes a multiplicidade expõe pressupostos escondidos no 
modelo
=> A relação ‘trabalha-para’, entre Pessoa e Empresa, tem multiplicidade 
N para 1 ou N para M?
• tudo depende do contexto que se está a analisar
José Correia UML – Diagramas de Classes 35
Associações n-árias
? Notação
? Multiplicidade
• A cada par de objectos das restantes classes (1 e 2), correspondem 0 ou 
1 objectos da classe 3
Nome da Associação
Classe-1 Classe-2
Classe-3
0..1
Classe-1 Classe-2
Classe-3
papel-3
papel-2papel-1
José Correia UML – Diagramas de Classes 36
Navegabilidade de Associações
? As associações são classificadas quanto à navegabilidade em:
• bidireccionais
(normal)
• unidirecionais
um objecto da classe 1 tem a responsabilidade de dar o(s) objecto(s) 
correspondente(s) da classe 2 (nível de especificação) 
ou
um objecto da classe 1 tem apontador(es) para o(s) objecto(s) 
correspondente(s) da classe 2 (nível de implementação)
? Pode-se indicar o sentido em que se lê o nome de uma associação
Classe-1 Classe-2
Empresa Pessoa
Trabalha-para
Emprega
Classe-1 Classe-2
empregador empregado
José Correia UML – Diagramas de Classes 37
Generalização
? A generalização constitui uma abstracção através da qual as 
semelhanças entre classes são partilhadas, sendo no entanto 
preservadas as suas diferenças
? Generalização representa um relacionamento entre uma classe (a 
super-classe) e uma ou mais versões refinadas (as sub-classes) de 
si própria
• por exemplo, Equipamento é a super-classe de Bomba e Tanque
Super-classe
Sub-classe
generalização especialização
Pessoa
Aluno
José Correia UML – Diagramas de Classes 38
Generalização (cont.)
? A generalização é muitas vezes conhecida como uma “is-a
relationship” (“é um” / “é uma”)
• por exemplo, um Aluno é uma Pessoa
• a generalização também é encarada como uma “a-kind-of relationship”
- as sub-classes constituem determinadas espécies da super-classe
• cada instância de uma sub-classe também é uma instância da super-
classe (e de todas as classes ascendentes)
• todas as operações das classes ascendentes são aplicáveis às classes 
descendentes
• o estado de um objecto inclui o valor dos seus atributos específicos e o 
valor de todos os atributos das classes ascendentes
UoD
super-classe
sub-classe
x xx
x
x objecto
José Correia UML – Diagramas de Classes 39
Pessoa
nome : st ring
dataNascimento : Data
Pessoa(st ring, Data)
ge tNome() : st ring
ge tDat aNascimento() : Data
ge t Idade () : int
se tNome(st ring) : vo id
se tDataNasc imento(Data) : vo id
imprime () : vo id
A luno
curso : str ing
A luno(s t ring nm, Data , str ing c rs)
ge tCurso() : st ring
se t Curso(s tr ing ) : v o id
imprime() : vo id
Pro fessor
cat egoria : st ring
Pro fe ssor(st ring nm, Data, st ring ct g)
ge tCat egoria() : st ring
se tCategoria(st ring) : vo id
imprime () : vo id
A lunoDo utoram ento
Hierarquias de classes
? Em geral, pode-se ter uma
hierarquia de classes
relacionadas por herança /
generalização
• Em cada classe da hierarquia
colocam-se as propriedades
que são comuns a todas as
suas subclasses 
⇒ Evita-se a
redundância,
promove-se a
reutilização!
José Correia UML – Diagramas de Classes 40
Exemplo de Generalização em C++
class Pessoa {
private:
string nome; 
Data dataNascimento;
public:
Pessoa(string, Data);
string getNome() const;
Data getDataNascimento() const;
int getIdade() const;
void setNome(string);
void setDataNascimento(Data); 
void imprime() const;
};
class Aluno : public Pessoa {
private: 
string curso;
public:
Aluno(string nm, Data, string crs);
string getCurso() const;
void setCurso(string);
void imprime() const;
};
Pe sso a
no m e : st rin g
dat aNasc im e n t o : Dat a
Pe sso a(st ring , Dat a)
ge t Nom e () : st ring
ge t Dat aNasc im e n t o () : Dat a
ge t Id ade () : in t
se t Nom e (st rin g ) : vo id
se t Dat aNasc im e n t o (Dat a) : vo id
im p rim e () : vo id
A luno
cu rso : st rin g
A luno (st rin g nm , Dat a, st rin g c rs)
g e t Cu rso () : st ring
se t Cu rso (st ring ) : vo id
im p rim e () : vo id
José Correia UML – Diagramas de Classes 41
Uso da Generalização
? Relação de herança nas propriedades
• A sub-classe herda as propriedades (atributos, operações e relações) da 
super-classe, podendo acrescentar outras
? A generalização é uma construção de bastante utilidade, não somente 
para a modelação de conceitos, mas também para a implementação 
de programas
• as classes são estruturadas de forma a identificar as suas semelhanças e 
diferenças
• a herança de operações é uma forma óptima de se reutilizar código
? A generalização torna evidentes as propriedades (atributos e 
operações) que são comuns e distintas
José Correia UML – Diagramas de Classes 42
Uso da Generalização (cont.)
? Generalização, Especialização e Herança referem a mesma ideia:
• Generalização refere o seguinte relacionamento entre classes: a super-
classe generaliza as subclasses
• Especialização é o inverso de generalização; refere a relação entre as 
classes, mas do ponto de vista da subclasse: as subclasses constituem 
uma especialização da super-classe
• Herança refere o mecanismo de partilha de atributos e operações através 
da relação de generalização
José Correia UML – Diagramas de Classes 43
Generalização: Exemplo
Figura 
Cor
Posição do centro
Mover
Seleccionar
Figura unidimensional 
Orientação
Alterar Escala
Figura bidimensional 
Orientação
Tipo de preenchimento
Alterar Escala
Preencher interior
Linha 
Pontos extremos
Desenhar
Arco 
Raio
Ângulo inicial
Ângulo final
Desenhar
Polígono
Nº Vértices
Desenhar
Circulo 
Diâmetro
Desenhar
Rodar
José Correia UML – Diagramas de Classes 44
Agregação
? A agregação é uma forma especial de associação entre objectos, 
representando o seguinte tipo de relacionamento entre objectos:
• A é parte de B
• Um objecto do tipo B é constituído
por objectos do tipoA
? A é um componente de B
? B representa a agregação (o agregado, a montagem, a 
“assemblagem”)
B (classe de agregados)
A (classe de componentes)
José Correia UML – Diagramas de Classes 45
Agregação (cont.)
? Exemplo:
• um texto contém 0 ou mais parágrafos
• um parágrafo faz parte de um texto
• um parágrafo contém 0 ou mais palavras
• uma palavra faz parte de um parágrafo
? A agregação obedece a algumas propriedades suplementares:
• a agregação é transitiva
- se A é parte de B e B é parte de C, então A é parte de C
• a agregação é anti-simétrica
- se A é parte de B, B não é parte de A
• algumas das propriedades do agregado propagam-se para as suas partes 
constituintes, possivelmente com algumas modificações
Texto
Parágrafo
*
1
Palavra
*
1
José Correia UML – Diagramas de Classes 46
Computador 
pessoal
Monitor
0..1
“Caixa” Rato Teclado
Motherboard
0..1
Sistema 
arrefecimento
Floppy 
drive
CD-
ROM
Fonte 
alimentação
Bus
CPU RAM
Agregação: Exemplo
=>Diagrama das componentes de um ‘Computador pessoal’, usando 
agregações
José Correia UML – Diagramas de Classes 47
Agregação (cont.)
? Uma agregação...
... é uma relação semântica do tipo “part of”
... traduz a criação de objectos mais complexos a partir de objectos mais 
simples
? A existência dos componentes pode depender da existência do 
agregado de que fazem parte
• ver exemplo do ‘Texto’!
José Correia UML – Diagramas de Classes 48
Agregação: Propagação das Operações
? Num agregado de objectos, a movimentação do agregado implica a 
movimentação de cada um dos seus componentes
? Exemplo:
• a operação copiar, quando aplicada a um documento, propaga-se a 
todos os seus parágrafos e depois a todos os seus períodos
• a operação não se propaga no sentido inverso
? A propagação de operações é um dos indicadores típicos de uma 
associação do tipo agregação
• a propagação refere o disparo automático de uma operação a uma rede 
de objectos quando determinada operação é aplicada a um dado objecto
Parágrafo 
copiar
Documento 
copiar
copiar
Palavra
copiar
copiar
* *
José Correia UML – Diagramas de Classes 49
Agregação vs. Generalização
? Uma agregação relaciona objectos distintos (um deles é parte de 
outro) ...
... enquanto a generalização relaciona classes semelhantes (a 
generalização constitui uma forma de estruturar a descrição dos 
objectos)
? Através da generalização, um objecto é simultaneamente uma 
instância da sub-classe e uma instância da sua super-classe
? A agregação é muitas vezes denominada de “a-part-of relantionship”
? A generalização é muitas vezes conhecida sob o termo “is-a
relantionship”
José Correia UML – Diagramas de Classes 50
Agregação vs. Generalização: Exemplo
• Um candeeiro é composto por uma base e uma tampa e uma lâmpada e
um interruptor e fios (“and relationship”)
• Uma lâmpada é incandescente ou fluorescente (“or relationship”)
Candeeiro de mesa
Base Tampa Interruptor Fios
Lâmpada 
fluorescente
Lâmpada 
incandescente
Balastro Arrancador Encaixe
Lâmpada
José Correia UML – Diagramas de Classes 51
Exemplo: Recibo
? Um recibo tem um número, uma data de emissão, o nome e o número 
de contribuinte da empresa que passa o recibo e do cliente, um 
subtotal, um total de IVA, um total e um conjunto variável de linhas.
? Cada linha do recibo refere um só produto (podendo cada um destes 
ser referido por mais do que uma linha de recibo) e contém a 
quantidade do produto comprado, a sua descrição, a taxa de IVA (em 
percentagem) paga por esse produto, o seu preço unitário e o preço a 
pagar tendo em conta a quantidade comprada.
? Um recibo é passado por uma e uma só Empresa a um Cliente (que 
pode ter muitos recibos da mesma empresa passados em seu nome).
? A Empresa é identificada por um número de contribuinte, tem um 
nome, um endereço, um número de telefone e um número de fax.
? O recibo deve poder ser impresso.
José Correia UML – Diagramas de Classes 52
Pessoa
nome
numeroBI
numeroTelefone
morada
numeroCartaConducao
dataNascimento
numeroContribuinte
Cliente
Produto
descricao : String
precoUnitario : Currency
IVA : Byte = 17%
LinhasRecibo
quantidade
calculaPreco()
0..*
11
0..*
Recibo
numero : Integer
dataEmissao : Date
imprime()
calculaTotal()
calculaSubTotal()
calculaTotalIVA()
1..*1 1..*1
contém
*
1
*
1o Cliente
em nome de
Empresa
nome
endereco
numeroContribuinte
numeroTelefone
numeroFax
1
*
1
*é passado por
a Empresa
refere
Recibo:
possível solução...
José Correia UML – Diagramas de Classes 53
Agregação vs. Associação
? Dois objectos que, habitualmente, são considerados independentes, 
devem ser ligados por uma associação e não por uma agregação
? Quando em dúvida, levantar as seguintes questões:
1) A expressão “parte de” faz algum sentido?
2) Operações aplicadas ao todo são também automaticamente aplicadas 
aos seus membros constituintes?
3) Valores de atributos para o todo são propagados para os seus membros 
constituintes?
4) Existe alguma assimetria na relação, sendo uma das classes subordinada 
da outra?
José Correia UML – Diagramas de Classes 54
Agregação vs. Associação: Exemplo
=> Uma empresa é um agregado de pessoas e/ou um agregado de 
departamentos?
• uma empresa não deve ser vista como um agregado de pessoas
• empresas e pessoas são objectos independentes de igual importância
? A decisão agregação versus associação é sempre matéria de 
discernimento do analista ou projectista
Empresa Pessoa
tem-como-empregado
1..*
*
Departamento
José Correia UML – Diagramas de Classes 55
Multiplicidade da Agregação
? As partes (componentes) podem ser / são:
partilhadas ou exclusivas
repetidas ou únicas
obrigatórias ou opcionais
..* ..1
..* ..1
1.. 0..
José Correia UML – Diagramas de Classes 56
Tipos de Agregados
? Agregado fixo: tem uma estrutura fixa
• o número e tipo de cada componente está pré-definido (exemplo: caso do 
candeeiro)
? Agregado variável: tem um número finito de níveis, mas o número de 
partes varia
• Exemplo: uma empresa tem várias divisões e cada divisão tem vários 
departamentos
? Agregado recursivo: o agregado contém,
directa ou indirectamente, uma instância
do mesmo tipo da agregação
• o número potencial de níveis é infinito
Programa de 
Computador
Bloco
Instrução 
Composta
Instrução 
Simples
*
*
José Correia UML – Diagramas de Classes 57
Relação de Composição
? A composição, ou agregação composta, é uma variante à
agregação simples
? É uma forma mais forte de agregação aplicável quando:
• existe um forte grau de pertença das “partes” ao “todo”
• as “partes” não podem existir sem o “todo”
• o “todo” e as “partes” têm tempo de vida coincidente ou, pelo menos, as 
partes nascem e morrem dentro de um todo
• a eliminação do todo propaga-se para as partes, em cascata
? Notação: losango cheio
• “um Departamento não existe fora do contexto de uma Empresa”
Empresa Departamento
*1
“o todo” “a parte”
José Correia UML – Diagramas de Classes 58
Exemplo de Agregação e Composição
? Este diagrama mostra que uma Bilheteira (BoxOffice) pertence a 
exactamente um Cinema (MovieTheater)
• destruindo o Cinema e Bilheteira também é destruída
? A colecção de Filmes (Movies) não está tão ligada ao Cinema
José Correia UML – Diagramas de Classes 59
Associação como Classe
? Exemplo:
• um utilizador pode estar
autorizado a usar vários
computadores
• cada autorização caracteriza a
prioridade e privilégios de acesso
de um utilizador a um computador
? É conveniente (ou necessário!) modelar uma associação por meio de 
uma classe – Classe-Associação – quando:
• a associaçãotem os seus próprios atributos (e, eventualmente, 
operações)
• se pretende que a associação participe em associações com outros 
objectos
• as ligações entre objectos passam a ser instâncias da classe-associação
Utilizador Computador
Autorização 
prioridade
privilégios
iniciar sessão
autorizado-a-usar* ** *
José Correia UML – Diagramas de Classes 60
Classe-Associação (cont.)
? uma classe-associação reúne as propriedades de associação e classe
? Notação:
• uma classe-associação é representada como qualquer classe, mas tem 
uma linha a tracejado a ligá-la à associação.
• o nome pode ser colocado num sítio ou noutro, conforme interessa realçar 
a natureza de associação ou de classe, mas a semântica é a mesma
- o nome também pode ser colocado nos dois sítios.
Pessoa Empresa
Tarefa 
Descrição
Data de início
...
Tarefa *
empregadorempregado
1..*

Outros materiais