1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.
Transcript of 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.
![Page 1: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/1.jpg)
1
Princípios de Análise e Princípios de Análise e Projeto Orientados a Projeto Orientados a Objetos com UMLObjetos com UML
Eduardo Bezerra
Editora CAMPUS
![Page 2: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/2.jpg)
2
Capítulo 9 Generalização
Se eu vi mais longe que outros, é porque eu me apoiei nos ombros de gigantes.
Isaac Newton
![Page 3: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/3.jpg)
3
Introdução
O modelo de classes também pode representar relacionamentos entre classes.
Esses denotam relações de generalidade ou especificidade entre as classes envolvidas. o conceito mamífero é mais genérico que o
conceito ser humano. o conceito carro é mais específico que o conceito
veículo. Chamado de relacionamento de
generalização.
![Page 4: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/4.jpg)
4
Introdução
Também pode ser chamado de relacionamento de especialização, pois a generalização e a especialização são dois pontos de vista do mesmo relacionamento.
O termo herança também é comumente utilizado como sinônimo do relacionamento de generalização. (implementação)
A generalização pode ser utilizada tanto no modelo de classes de domínio quanto no de especificação.
![Page 5: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/5.jpg)
5
Introdução
![Page 6: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/6.jpg)
6
Semântica de uma generalização,
.
![Page 7: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/7.jpg)
7
Terminologia
subclasse X superclasse. supertipo X subtipo. classe base X classe herdeira. classe de especialização X classe de
generalização. ancestral e descendente (generalização em
vários níveis)
![Page 8: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/8.jpg)
8
Notação para generalização
Superclasse
Subclasse2Subclasse1 SubclasseN...
Superclasse
Subclasse2Subclasse1 SubclasseN...
![Page 9: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/9.jpg)
9
Generalização X Associação
Importante: a generalização difere da associação (agregação, composição ) porque a primeira se trata de um relacionamento entre classes. “Gerentes são tipos especiais de funcionários”. “Gerentes chefiam departamentos”.
Na associação, objetos específicos de uma classe se associam entre si ou com objetos específicos de outras classes.
![Page 10: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/10.jpg)
10
Herança de associações
Atributos e operações e associações são herdados pelas subclasses.
ClientePessoaFísica ClientePessoaJurídica
Cliente Pedido
1 *
Realiza
![Page 11: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/11.jpg)
11
Hierarquias de generalização
![Page 12: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/12.jpg)
12
Hierarquias de generalização
A generalização pode ser aplicada em vários níveis (hierarquia de generalização). uma classe que herda propriedades de uma outra
classe pode ela própria servir como superclasse. Características importantes:
Transitividade: uma classe em uma hierarquia herda propriedades e relacionamentos de todos os seus ancestrais..
Assimetria: dadas duas classes A e B, se A for uma generalização de B, então B não pode ser uma generalização de A. Ou seja, não pode haver ciclos em uma hierarquia de generalização.
![Page 13: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/13.jpg)
13
Hierarquias de generalização
-nome-dataNascimento-endereco
Pessoa
-statusCliente
-matrícula-dataContratação
Empregado
O atributo status define se ocliente é comum ou especial. -taxaComissão
Vendedor
![Page 14: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/14.jpg)
14
Herança múltipla
![Page 15: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/15.jpg)
15
Herança múltipla
Herança múltipla: Uma classe pode ter mais de uma superclasse. Tal classe herda de todas a suas superclasses.
O uso de herança múltipla deve ser evitado. Esse tipo de herança é difícil de entender. Algumas LPs não dão suporte à implementação
desse tipo de herança (Java e Smalltalk).
![Page 16: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/16.jpg)
16
Exemplo (Herança múltipla)
Carro Barco
CarroAnfíbio
![Page 17: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/17.jpg)
17
Classes abstratas
![Page 18: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/18.jpg)
18
Relacionamentos de dependência
Usualmente, a existência de uma classe se justifica pelo fato de haver a possibilidade de gerar instâncias (classes concretas).
No entanto, podem existir classes que não geram instâncias diretas: classes abstratas.
Utilizadas para organizar e simplificar uma hierarquia de generalização. Propriedades comuns a diversas classes podem
ser organizadas e definidas em uma classe abstrata a partir da qual as primeiras herdam.
Subclasses de uma classe abstrata também podem ser abstratas, mas a hierarquia deve terminar em uma ou mais classes concretas.
![Page 19: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/19.jpg)
19
Notação para classes abstratas
ContaCorrente ContaPoupança
ContaBancária
Na UML, uma classe abstrata é representada com o seu nome em itálico.
![Page 20: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/20.jpg)
20
Definição de restrições sobre uma generalização
![Page 21: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/21.jpg)
21
Restrições sobre generalizações
Restrições sobre generalizações são representadas (entre chaves) no diagrama de classes próximas à linha do relacionamento.
Restrições predefinidas pela UML: Sobreposta Disjunta Completa Incompleta
![Page 22: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/22.jpg)
22
Exemplos (Restrições sobre generalizações)
Caminhão Trator
Veículo
{incompleta}
Elipse Quadrado
FiguraGeométrica
{incompleta, disjunta}
Círculo
Homem Mulher
Indivíduo
{completa, disjunta}
Nadador Corredor
Atleta
{incompleta, sobreposta}
![Page 23: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/23.jpg)
23
Refinando o modelo de classes com generalização
![Page 24: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/24.jpg)
24
Refinando o modelo de classes com generalização A generalização permite refinar o modelo de
classes. Idéia básica: identificar abstrações mais genéricas
ou mais específicas que outras. Refinamentos podem seguir segundo duas
estratégias alternativas e complementares: Generalização: criar uma classe mais genérica, e
definir as classes semelhantes como subclasses. Especialização: criar classes mais específicas a
partir de uma classe preexistente.
![Page 25: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/25.jpg)
25
Refinando o modelo de classes com generalização O seguinte teste pode ser realizado para
identificar se duas classes X e Y se relacionam por generalização:
Regra da substituição: seja a classe A uma generalização de outra B. Não pode haver diferenças entre utilizar instâncias de B ou de A, do ponto de vista dos usuários de A. Ou seja, é inadequado o uso de generalização
onde nem todas as propriedades da superclasse fazem sentido para a subclasse.
X é um tipo de Y?
![Page 26: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/26.jpg)
26
Conformidade das subclasses à superclasse
-limiteSaqueContaCorrente
-dataAniversário-rendimento
ContaPoupança
+debitar()+creditar()
-número-dataAbertura-saldo
ContaBancária
HistóricoTransações
1 *
Cliente
* *
![Page 27: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/27.jpg)
27
Dicas
Deve-se evitar a construção de hierarquias de generalização muito profundas (com mais de três níveis) dificultam a leitura do diagrama.
Papéis e subclasses não devem ser confundidos. Um papel corresponde ao uso de uma certa
classe em uma associação.Uma classe pode assumir vários papéis.
O modelador deve evitar a criação de subclasses em situações que podem ser resolvidas através da utilização de papéis.
![Page 28: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/28.jpg)
28
Papel X Subclasse
Pessoa
Morador Edifício
EdifícioPessoa
* *
morador
* *
Inadequado Adequado
![Page 29: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/29.jpg)
29
Herança de operações e polimorfismo
![Page 30: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/30.jpg)
30
Herança de operações e polimorfismo
Uma subclasse herda todas as propriedades de sua superclasse que tenham visibilidade pública ou protegida.
Entretanto, pode ser que o comportamento de alguma operação herdada seja diferente para a subclasse. Nesse caso, a subclasse deve redefinir o
comportamento da operação. A assinatura da operação pode ser reutilizada. A implementação da operação (método) é
diferente.
![Page 31: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/31.jpg)
31
Operações polimórficas
Operações polimórficas são operações de mesma assinatura definidas em diversos níveis de uma hierarquia de generalização e que possuem comportamento diferente. assinatura é repetida na(s) subclasse(s) para
enfatizar a redefinição de implementação. Operações polimórficas implementam o
princípio do polimorfismo no qual duas ou mais classes respondem a mesma mensagem de formas diferentes.
Objetivo: garantir que as subclasses tenham uma interface em comum.
![Page 32: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/32.jpg)
32
Operações polimórficas
Operações polimórficas facilitam a implementação. Se duas ou mais subclasses implementam a
mesma operação polimórfica, a mensagem a ser passada é a mesma para todas elas.
O remetente da mensagem não precisa saber qual a verdadeira classe de cada objeto, pois eles aceitam a mesma mensagem.
A diferença é que o método que implementa a operação é diferente em cada classe.
![Page 33: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/33.jpg)
33
Exemplo (Operações polimórficas)
+obterPagamento() : Moeda-comissão : Porcentagem
Vendedor
+obterPagamento() : Moeda+definirSalárioBase(in umSalario : Moeda)+obterSalárioBase() : Moeda
-salárioBase : MoedaFuncionário
return comissão * obterSalárioBase();
return salárioBase;
![Page 34: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/34.jpg)
34
Operações abstratas e polimorfismo
Em termos de operações, uma classe é abstrata quando ela possui pelo menos uma operação abstrata.
Uma operação abstrata não possui implementação. Uma classe pode possuir tanto operações
abstratas quanto operações concretas. Uma classe que possui pelo menos uma operação
abstrata é abstrata. Uma subclasse que herda uma operação
abstrata e não fornece uma implementação é ela própria abstrata.
![Page 35: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/35.jpg)
35
Operações abstratas e polimorfismo
+desenhar()Quadrado
+desenhar()Círculo
+desenhar()FiguraGeométrica
Operação abstrata. Subclassesdevem implementar ocomportamento desta operação.
As classes Círculo e Quadrado são concretas, pois fornecem implementação para a operação abstrata herdada.
![Page 36: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/36.jpg)
36
Operações abstratas e polimorfismo
+aplicarJuros(in umaTaxa : Porcentagem)
ContaCorrente
+aplicarJuros(in umaTaxa : Porcentagem)
ContaPoupança
+aplicarJuros(in umaTaxa : Porcentagem)+debitar(in umaQuantia : Moeda)+creditar(in umaQuantia : Moeda)
-saldo : MoedaContaBancária
Classes ContaCorrente e ContaPoupança redefinem a operação aplicarJuros.
![Page 37: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/37.jpg)
37
Reuso através de delegação
![Page 38: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/38.jpg)
38
Reuso por generalização
O reuso por generalização se baseia na noção de subclasses herdando comportamento de sua superclasse. Exemplo: um objeto ContaCorrente não tem como
atender à mensagem para executar a operação debitar só com os recursos de sua classe. Ele, então, utiliza a operação herdada da superclasse.
Vantagem: fácil de implementar. Desvantagem:
Exposição dos detalhes da superclasse às subclasses (Princípio do encapsulamento).
Possível violaçào do Princípio de Liskov (regra da substituição).
![Page 39: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/39.jpg)
39
Reuso por delegação
A delegação é outra forma de realizar o reuso.
“Sempre que um objeto não pode realizar uma operação por si próprio, ele delega uma parte dela para outro(s) objeto(s)”.
A delegação é mais genérica que a generalização. um objeto pode reutilizar o comportamento de
outro sem que o primeiro precise ser uma subclasse do segundo.
![Page 40: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/40.jpg)
40
Reuso por delegação
O compartilhamento de comportamento e o reuso podem ser realizados em tempo de execução.
Desvantagens: desempenho (implica em cruzar a fronteira de um
objeto a outro para enviar uma mensagem). não pode ser utilizada quando uma classe
parcialmente abstrata está envolvida.
![Page 41: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/41.jpg)
41
Generalização X Delegação
+empilhar()+desempilhar()
Pilha
+adicionar()+remover()+obter()
Vetor
+empilhar()+desempilhar()
Pilha
+adicionar()+remover()+obter()
Vetor
1
1
topo := topo + 1vetor.adicionar(topo, objeto)
return vetor.obter(topo)topo := topo - 1
adicionar(objeto, topo)topo := topo + 1
remover(objeto)topo := topo - 1
![Page 42: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/42.jpg)
42
Generalização X Delegação
Há vantagens e desvantagens tanto na generalização quanto na delegação.
De forma geral, não é recomendado utilizar generalização nas seguintes situações: Para representar papeis de uma superclasse. Quando a subclasse herda propriedades que não
se aplicam a ela. Quando um objeto de uma subclasse pode se
transformar em um objeto de outra subclasse. Por exemplo, um objeto Cliente se transforma em um
objeto Funcionário (vide a seguir).
![Page 43: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/43.jpg)
43
Classificação dinâmica
![Page 44: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/44.jpg)
44
Classificação dinâmica
Problema na especificação e implementação de uma generalização. Um mesmo objeto pode pertencer a múltiplas
classes simultaneamente, ou passar de uma classe para outra.
Considere uma empresa em que há empregados e clientes. Pode ser que uma pessoa, em um determinado
momento, seja apenas cliente; depois pode ser que ela passe a ser também um
empregado da empresa. A seguir essa pessoa é desligada da empresa,
continuando a ser cliente.
![Page 45: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/45.jpg)
45
Classificação dinâmica
As principais LPOO (C++, Java, Smalltalk) não dão suporte direto à implementação da classificação dinâmica. se um objeto é instanciado como sendo de uma
classe, ele não pode pertencer posteriormente a uma outra classe.
Solução parcial: definir todas as possíveis subclasses em uma determinada situação. Exemplo (para a situação descrita há pouco): as
classes Empregado, Cliente e EmpregadoCliente seriam criadas.
![Page 46: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/46.jpg)
46
Classificação dinâmica
Não resolve o problema todo: Pode ser que um objeto mude de classe!
(metamorfose) A adição de novas classes à hierarquia torna o
modelo ainda mais complexo. Uma melhor solução: utilizar a delegação.
Uma generalização entre cada subclasse e a superclasse é substituída por uma composição.
Exemplo no próximo slide.
![Page 47: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/47.jpg)
47
Classificação dinâmica
EmpregadoCliente
1
0..1
Pessoa EmpregadoCliente
Pessoa
1
0..1
![Page 48: 1 Princípios de Análise e Projeto Orientados a Objetos com UML Eduardo Bezerra Editora CAMPUS.](https://reader035.fdocumentos.tips/reader035/viewer/2022062303/552fc15f497959413d8e78d3/html5/thumbnails/48.jpg)
48
Classificação dinâmica
Comentário final: nada impede que haja uma hierarquia de classes em um modelo de domínio onde um objeto possa pertencer a mais de uma subclasse, ou possa mudar de subclasse.
No modelo de especificação é que o modelador deve considerar a reestruturação da hierarquia de classes para resolver o problema.