Generalização Associação Agregação UML Relações entre Classes · Classes e operações...
Transcript of Generalização Associação Agregação UML Relações entre Classes · Classes e operações...
12/03/16
UML Relações entre Classes
Generalização
Associação
Agregação
Composição
Dependência Prof.Dr. Enzo Seraphim
12/03/16
UML Relações entre Classes
Generalização
Associação
Agregação
Composição
Dependência Prof.Dr. Enzo Seraphim
Generalização
Pessoa
Aluno
generalização especialização
super-classe
sub-classe
Relação semântica “is a” (“é um” / “é uma”) – um aluno é uma pessoa
Relação de herança nas propriedades– A subclasse herda as propriedades (atributos,
operações e relações) da superclasse, podendo acrescentar outras
As três facetas da generalização Substitutabilidade
– onde se espera um objeto da superclasse podese passar um objeto duma subclasse
Herança de interface– a subclasse herda as assinaturas (e significados) das
operações da superclasse Herança ou overriding de implementação
– a subclasse pode herdar as implementações das operações da superclasse, mas também pode ter novas implementações de algumas dessas operações
– quando em UML se repete numa subclasse a assinatura de uma operação da superclasse, quer dizer que tem uma nova implementação na subclasse
Hierarquias de classes Na super classe da hierarquia colocamse as
propriedades que são comuns a todas as suas subclasses
Evitase redundância, promovese reutilização!
centroX: intcentroY: int
Triangulo Quadrado
Poligono
base: intaltura : int
lado: int
centroX: intcentroY: int
Triangulo Quadrado
Poligono
base: intaltura : int
lado: int
Subclasses disjunção / sobreposição
Disjunção quando um objeto da superclasse só pode pertencer a uma subclasse (situação por omissão)
Sobreposição quando um objeto da superclasse pode pertencer simultaneamente a mais do que uma subclasse
Funcionario
Mensal Diarista
disjunção
Conta
Corrente Poupanca
sobreposição
sobreposição
Subclasses completas / incompletas
Completa quando um objeto pertence a uma superclasse ou a uma subclasses (situação por omissão)
Incompleta quando um objeto da superclasse não pode pertencer a nenhuma das subclasses
Pessoa
Estudante Professor
completa
Automovel
Passeio Utilitario
incompleta
incompleta
Classes e operações abstratas / concretas Classe abstrata classe que não pode ter instâncias
diretas. As instâncias somente pelas subclasses concretas
Operação abstrata operação com implementação a definir nas subclasses. Uma classe com operações abstratas tem de ser abstrata
Notação : estereótipo<<abstract>> centroX: int
centroY: int
Triangulo Quadrado
<<abstract>>Poligono
base: intaltura : int
lado: int
area() : double
area() : doublearea() : double
Herança simples / múltipla
Herança Simples quando uma subclasse possui apenas uma superclasse
Herança Múltipla quando uma subclasse possui mais de uma superclasse
AlunoFuncionario
Aluno Funcionario
Múltipla
Pessoa
Estudante Professor
Simples
Classificação simples / múltipla
Classificação Simples quando um objeto em qualquer momento pertence a somente uma classe.
Classificação Múltipla quando um objeto em um dado momento pertence a várias classes, sem que exista uma subclasse que represente a intersecção dessas classes. Não suportado pelas linguagens de programação OO, mas pode então ser simulada por agregação.
exemplo de combinação : {Mulher, Paciente, Enfermeira}
Homem
MulherPessoa sexo
Paciente
paciente
funçãoMedico
Enfermeira
Fisioterapeuta
12/03/16
UML Relações entre Classes
Generalização
Associação
Agregação
Composição
Dependência Prof.Dr. Enzo Seraphim
Associações binárias
Uma associação é uma relação entre objetos das classes participantes (um objeto de cada classe em cada ligação)
Essa ligação é uma instância de uma associação Implementado através de uma referência entre os
objetos relacionados Pode haver mais do que uma associação (com
nomes diferentes) entre o mesmo par de classes Papéis nos extremos da associação podem ter
indicação de visibilidade (pública, privada, etc.)
Participante-1 Participante-2
Nome da associação
papel-1 papel-2cardinal-1 cardinal-2
Nome de associação
A indicação do nome é opcional O nome é indicado no meio da linha que une as classes
participantes Podese indicar o sentido em que se lê o nome da
associação
Empresa PessoaTrabalha-para
Empregaempregador empregado
Pessoa Carropessoa carros
1 *comprado
compra
Multiplicidade de associações binárias
Muitos-para-Muitos 1-para-1Muitos-para-1
Professor Curso Aluno Curso Aluno Historico* 1 11**
1 exatamente um0..1 zero ou um (zero a 1)* zero ou mais0..* zero ou mais1..* um ou mais1, 3..5 um ou três a 5
Acesso a Multiplicidade
Departamento
nome: stringsigla: string
1 *funcionariosdepartamento
getNome(): stringsetNome(v:string): voidgetSigla(): stringsetSigla(v:string): voidgetFuncionarios():List<Funcionario>setFuncionarios(l:List<Funcionario>)
Funcionario
nome: stringrg: stringgetNome(): stringsetNome(v:string): voidgetRg(): stringsetRg(v:string): voidgetDepartamento():DepartamentosetDepartamento(v:Departamento):void
Atributos versus Associações Uma propriedade que designa um objeto de uma classe
presente no modelo, deve ser modelada como uma associação e não como um atributo
Exemplo:
Aluno Curso
nome: string
curso: Curso
*
nome: stringalunos:List<Aluno>
1cursoalunos
Associação reflexiva Podese associar uma classe com ela própria (em papéis
diferentes)
Pessoapai
filho0..1
* filho
mãe1
*
Associações bidirecionais / unidirecional
As associações são classificadas quanto à navegabilidade em:
Bidirecional ambos objetos possuem referência.
Unidirecional classe que recebe a seta recebe também a referência.
Classe3 Classe4Classe1 Classe2
bidirecional unidirecional
Exemplo
Aluno Disciplina
nome: string
endereco: string
*
nome: stringsigla: string
*disciplinasalunos
Bidirecional
Cliente Fita
nome: string
endereco: string
titulo: stringgenero: string
*
fitas
Unidirecional
ClasseAssociação
Reúne as propriedades de associação e classeAs linguagens OO não podem repetir
combinações de objetos das classes participantes na associação
Classe-1 Classe-2
Nome da Associação
ref Classe-1ref Classe-2
operação...
Nome da Associação
Associações nárias
Notação
Multiplicidade
– a cada par de objetos das restantes classes (1 e 2), correspondem 0 ou 1 objetos da classe 3
Class-1 Class-2
Association Name
role-1 role-2
Class-3
role-3
Class-1 Class-2
Class-30..1
12/03/16
UML Relações entre Classes
Generalização
Associação
Agregação
Composição
Dependência Prof.Dr. Enzo Seraphim
Agregação
Associação com o significado contém (é constituído por) / faz parte de (part of)
Relação de inclusão nas instâncias das classesHierarquias de objetosExemplo:
Casa
Comodo*
1
Uma casa contém vários cômodos
Um cômodo faz parte de uma casa
Exemplo
Unidirecional / Bidirecional / Multiplicidades / Papeis
Instituto Departamento
nome:stringendereco:string
1
sigla: stringnome:string
*departamentosinstituto
Bidirecional
Legume
local:string nome:stringpeso:double
Unidirecional
*
legumesHorta
12/03/16
UML Relações entre Classes
Generalização
Associação
Agregação
Composição
Dependência Prof.Dr. Enzo Seraphim
Composição
Forma mais forte de agregação aplicável quando:– existe um forte grau de pertença das partes ao
todo– cada parte só pode fazer parte de um todo – o topo 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 propagase para as partes, em cascata
Notação: losango cheio ou notação encaixada
Exemplo
Carro Motor
placa: stringmodelo: string
1
serie: intpotencia:doubletotalCilindro:int
1motorcarro
Livro Capitulo
titulo: string titulo: stringgenero: string
Unidirecional
*
capitulos
Bidirecional
Unidirecional / Bidirecional / Multiplicidades / Papeis
12/03/16
UML Relações entre Classes
Generalização
Associação
Agregação
Composição
Dependência Prof.Dr. Enzo Seraphim
Relação de dependência
Relação de uso entre dois elementos (classes, componentes, etc.), em que uma mudança na especificação do elemento usado pode afectar o elemento utilizador
Exemplo típico: classe1 que depende de outra classe2 porque usa operações ou definições da classe2
Úteis para gestão de dependências
ClasseClasseDependente
Exemplo
Funcionario
rg:stringnome:string
carteiraTrabalho:String
Mensalista Diarista
Vinculo
salario:float diaria:float
SoftwareServidorSoftwareCliente
12/03/16
UML Relações UML Relações entre Classesentre Classes
Prof.Dr.Enzo Seraphim
[email protected]/UNIFEI