POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
-
Upload
marcello-thiry -
Category
Education
-
view
222 -
download
5
description
Transcript of POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
![Page 1: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/1.jpg)
Prof. Marcello Thiry <[email protected]>
PROGRAMAÇÃO ORIENTADA A OBJETOS
Unidade 2 (parte 1)
3º período
![Page 3: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/3.jpg)
UML3
Linguagem de Modelagem Unificada
Padrão OMG (Object Management Group) desde 1997
http://www.uml.org/
http://www.omg.org/spec/UML/2.5/Beta2/PDF/
![Page 4: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/4.jpg)
Diagramas UML4
14 diagramas
7 diagramas estruturais
Visão estática
7 diagramas comportamentais
Visão dinâmica
![Page 6: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/6.jpg)
Diagramas UML6
14 diagramas
Mas, iremos trabalhar nesta disciplina com apenas 2 diagramas
![Page 8: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/8.jpg)
Diagrama de classe
Descreve a estrutura de um sistema
Um diagrama de classe permite visualizar:
classes do sistema, seus atributos e operações
relacionamentos entre as classes
relacionamentos entre classes e interfaces
8
![Page 9: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/9.jpg)
Principais relacionamentos
Generalização / Especialização (herança)
Associação
Agregação e Composição
9
Já trabalhamos com herança na Unidade 1
![Page 10: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/10.jpg)
Associação
Relação entre ocorrências (objetos) das classes
Indica que objetos “Professor” estarão associados com objetos “Aluno”
10
![Page 11: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/11.jpg)
11
Professores Alunos
marcello
alessandro
fabiane
anita
joao
maria
pedro
jose
objetos com objetos
![Page 28: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/28.jpg)
UM aluno é orientado por UM professor
Mas,
Regras de negócio:
Todo e qualquer aluno precisa ter um orientadorNem todo professor precisa orientar um aluno
![Page 29: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/29.jpg)
UM professor coordena VÁRIOS alunos
UM aluno é coordenado por UM professor
Pegou a ideia?
![Page 30: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/30.jpg)
Multiplicidade
Define quantos objetos participam em um relacionamento
O número de objetos de uma classe relacionada a UMobjeto da outra classe
Deve ser especificada em cada lado da associação
30
![Page 31: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/31.jpg)
Multiplicidade x Cardinalidade
Cardinalidade
Número de elementos em um conjunto
Multiplicidade
A especificação do intervalo de valores de cardinalidade permitidas – o tamanho – que um conjunto pode assumir
31
(Booch, Rumbaugh e Jacobson, 1999)
![Page 32: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/32.jpg)
Indicadores de multiplicidade32
Vários/Muitos/Zero, um ou mais:
Um ou mais:
Zero ou um:
Exatamente um:
Exatamente três:
Faixa especificada:
Múltiplas faixas:
**1..
0..1
1
3
2..4
2..4, 6..8
![Page 34: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/34.jpg)
34
Professores Alunos
marcello
alessandro
fabiane
anita
joao
maria
pedro
jose
1 para 1
![Page 35: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/35.jpg)
35
Professores Alunos
marcello
alessandro
fabiane
anita
joao
maria
pedro
jose
1 para *
![Page 36: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/36.jpg)
36
Professores Alunos
marcello
alessandro
fabiane
anita
joao
maria
pedro
jose
para **
![Page 38: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/38.jpg)
1 1
Um objeto Professor aponta para um objeto Aluno
O objeto Professor precisa de um ponteiro (objeto)
![Page 39: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/39.jpg)
1 1
A classe Aluno é independente da classe Professor
A classe Professor depende da classe Aluno
![Page 40: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/40.jpg)
0..1 *
Agora, as regras de negócio espelham melhor a realidade: Nem todo professor precisa ter um orientando ( = 0, 1 ou +)
Um professor pode ter vários orientandos ( = 0, 1 ou +)
Um aluno pode ter ou não um professor orientador, mas nunca mais do que um orientador (0..1)
*
*
![Page 41: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/41.jpg)
Alguma ideia para tratar este lado da associação?
Como um objeto Professor poderá apontar para vários objetos Aluno?
![Page 46: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/46.jpg)
Navegabilidade
Os dados podem fluir em uma ou em ambas as direções através da associação
Canal de comunicação pelo qual, os objetos conversam entre si (trocam mensagens)
Uma mensagem pode ser uma requisição por informação ou uma requisição para executar uma ação
Uma mensagem é trocada quando um objeto “chamador” invoca uma operação de um objeto “receptor”
46
![Page 47: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/47.jpg)
47Se utilizarmos uma associação bidirecional no nosso exemplo, o nome da associação valerá apenas para uma das direções!
![Page 48: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/48.jpg)
48Mas, quando pensamos na implementação, precisamos considerar um atributo para cada lado, certo?!
Papel (role) assumido pelos objetos Aluno nesta associação
Papel (role) assumido pelo objeto Professor
nesta associação
![Page 49: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/49.jpg)
Nomeando uma associação com nomes de papel (role names)
Note que, se utilizarmos nomes de papel, é uma boa prática evitar o nome da associação (poderia deixar o diagrama “poluído”)
![Page 50: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/50.jpg)
Implementando a partir dos nomes dos papéis interpretados pelas classes
Papel do Professor
Papel do Aluno
![Page 52: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/52.jpg)
Nomeando uma associação com nomes de papel (role names)
Representa o modificador de visibilidade “privado”
![Page 54: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/54.jpg)
Haveria duplicação de atributos com o mesmo nome!
Se você utilizou uma associação, não coloque sua implementação nas classes do diagrama
![Page 56: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/56.jpg)
Vamos considerar um cenário, onde temos um Professor chamado “marcello” que orienta dois Alunos chamados “joao” e “pedro”
Vamos criar primeiro o objeto Professor:
Professor marcello = new Professor (“Marcello”);
Observe que se Professor fosse obrigado a ter um orientando, teríamos uma situação inconsistente
Poderíamos criar o objeto Aluno antes e repassá-lo ao Professor no momento da instanciação
Mas, se um Aluno também tivesse que ter obrigatoriamente um orientador?
![Page 57: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/57.jpg)
joao.setOrientador(marcello);
pedro.setOrientador(marcello);
Cenário onde temos um objeto Professor chamado “marcello” e dois objetos Aluno chamados “joao” e “pedro”:
Como seria a implementação da operação “setOrientador”?
![Page 59: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/59.jpg)
Se houver um orientador, então precisamos sincronizar antes...
E garantir que o novo orientador também conhecerá o novo orientando
Operação “Atômica” (indivisível)
![Page 60: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/60.jpg)
Outra forma, caso não seja implementada a operação “delOrientando” na classe Professor
Retornaria a lista de orientandos ArrayList<Aluno>
![Page 63: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/63.jpg)
Você precisa garantir as regras:
Um aluno não pode ficar sem coordenadorUm coordenador precisa ter, pelo menos, um aluno ...
![Page 64: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/64.jpg)
Para considerar:
Associações bidirecionais...
... aumentam o acoplamento (dependência entre classes), reduzindo a reusabilidade
... aumentam a complexidade da implementação, poisexigem que o sincronismo seja mantido nos dois lados da associação
... quando definidas como vários para vários, aumentam ainda mais a complexidade da implementação
![Page 65: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/65.jpg)
65Para exercitar!
Modele um diagrama UML a partir dos seguintes conceitos:
Aluno, Professor, Turma, Disciplina, Curso
Pense na sua realidade dentro da universidade
![Page 66: POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)](https://reader031.fdocument.pub/reader031/viewer/2022013121/54969ea5ac7959412e8b50fa/html5/thumbnails/66.jpg)
Referências66
Grady Booch, James Rumbaugh, and Ivar Jacobson. The Unified Modeling Language User Guide. 2nd ed. Addison-Wesley, 2005.
Ricardo Pereira e Silva. UML 2 em Modelagem Orientada a Objetos. Visual Books, 2007.
OMG (Object Management Group), OMG Unified ModelingLanguage v2.5, 2013. http://www.omg.org/spec/UML/2.5/Beta2/PDF/