View
222
Download
5
Category
Preview:
DESCRIPTION
Material utilizado na disciplina de Programação Orientada a Objetos (animações e outros efeitos foram perdidos no carregamento). Ciência da Computação (3o período). Universidade do Vale do Itajaí - Campus Kobrasol.
Citation preview
Prof. Marcello Thiry <marcello.thiry@gmail.com>
PROGRAMAÇÃO ORIENTADA A OBJETOS
Unidade 2 (parte 1)
3º período
marcello.thiry@gmail.com
2
marcello.thiry@gmail.com
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/
marcello.thiry@gmail.com
Diagramas UML4
14 diagramas
7 diagramas estruturais
Visão estática
7 diagramas comportamentais
Visão dinâmica
marcello.thiry@gmail.com
5
UML 2.5 (beta 2), pg. 718
marcello.thiry@gmail.com
Diagramas UML6
14 diagramas
Mas, iremos trabalhar nesta disciplina com apenas 2 diagramas
marcello.thiry@gmail.com
7
Visão estática
Visão dinâmica
marcello.thiry@gmail.com
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
marcello.thiry@gmail.com
Principais relacionamentos
Generalização / Especialização (herança)
Associação
Agregação e Composição
9
Já trabalhamos com herança na Unidade 1
marcello.thiry@gmail.com
Associação
Relação entre ocorrências (objetos) das classes
Indica que objetos “Professor” estarão associados com objetos “Aluno”
10
marcello.thiry@gmail.com
11
Professores Alunos
marcello
alessandro
fabiane
anita
joao
maria
pedro
jose
objetos com objetos
marcello.thiry@gmail.com
Associação
Mas, qual é a relação entre Professor e Aluno?
12
marcello.thiry@gmail.com
Associação13
marcello.thiry@gmail.com
14
Nome da associação(indica a semântica da conexão entre os objetos)
marcello.thiry@gmail.com
15
Note que a semântica é diferente nas duas
associações
marcello.thiry@gmail.com
16O nome da associação devesempre ser uma frase verbal
marcello.thiry@gmail.com
A semântica aqui é diferente?São mesmo duas associações
diferentes?
marcello.thiry@gmail.com
Se a semântica é a mesma, então é a mesma associação
marcello.thiry@gmail.com
19
Mas, como devemos ler a associação?
quem orienta quem? quem coordena quem?
marcello.thiry@gmail.com
20Sem conhecer o negócio, a leitura destas associações é ambígua!
marcello.thiry@gmail.com
E agora? Facilitou o entendimento?
marcello.thiry@gmail.com
Indica a direção da associação (orienta a
leitura)
marcello.thiry@gmail.com
Lado da associação(uma associação possui
dois lados)
marcello.thiry@gmail.com
Lado da associação(uma associação possui dois lados)
marcello.thiry@gmail.com
Professor “orienta” AlunoProfessor “coordena” Aluno
marcello.thiry@gmail.com
Mas, um professor pode orientar quantos alunos?
marcello.thiry@gmail.com
UM professor orienta VÁRIOS alunos
VÁRIOS = = 0, 1 ou mais*
marcello.thiry@gmail.com
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
marcello.thiry@gmail.com
UM professor coordena VÁRIOS alunos
UM aluno é coordenado por UM professor
Pegou a ideia?
marcello.thiry@gmail.com
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
marcello.thiry@gmail.com
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)
marcello.thiry@gmail.com
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
marcello.thiry@gmail.com
Veja se você consegue ler....
marcello.thiry@gmail.com
34
Professores Alunos
marcello
alessandro
fabiane
anita
joao
maria
pedro
jose
1 para 1
marcello.thiry@gmail.com
35
Professores Alunos
marcello
alessandro
fabiane
anita
joao
maria
pedro
jose
1 para *
marcello.thiry@gmail.com
36
Professores Alunos
marcello
alessandro
fabiane
anita
joao
maria
pedro
jose
para **
marcello.thiry@gmail.com
1 1
marcello.thiry@gmail.com
1 1
Um objeto Professor aponta para um objeto Aluno
O objeto Professor precisa de um ponteiro (objeto)
marcello.thiry@gmail.com
1 1
A classe Aluno é independente da classe Professor
A classe Professor depende da classe Aluno
marcello.thiry@gmail.com
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)
*
*
marcello.thiry@gmail.com
Alguma ideia para tratar este lado da associação?
Como um objeto Professor poderá apontar para vários objetos Aluno?
marcello.thiry@gmail.com
0..1 *
marcello.thiry@gmail.com
*0..1
marcello.thiry@gmail.com
*
O que você acha? Faz mais sentido?
0..1
marcello.thiry@gmail.com
Navegabilidade45
Unidirecional
Bidirecional
Indefinida
marcello.thiry@gmail.com
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
marcello.thiry@gmail.com
47Se utilizarmos uma associação bidirecional no nosso exemplo, o nome da associação valerá apenas para uma das direções!
marcello.thiry@gmail.com
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
marcello.thiry@gmail.com
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”)
marcello.thiry@gmail.com
Implementando a partir dos nomes dos papéis interpretados pelas classes
Papel do Professor
Papel do Aluno
marcello.thiry@gmail.com
Nomeando uma associação com nomes de papel (role names)
Você notou o sinal?
marcello.thiry@gmail.com
Nomeando uma associação com nomes de papel (role names)
Representa o modificador de visibilidade “privado”
marcello.thiry@gmail.com
Tudo ok com esta representação?
O que deveríamos interpretar?
marcello.thiry@gmail.com
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
marcello.thiry@gmail.com
Mas, qual é o problema
que temos quando a
associação é bidirecional?
marcello.thiry@gmail.com
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?
marcello.thiry@gmail.com
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”?
marcello.thiry@gmail.com
marcello.thiry@gmail.com
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)
marcello.thiry@gmail.com
Outra forma, caso não seja implementada a operação “delOrientando” na classe Professor
Retornaria a lista de orientandos ArrayList<Aluno>
marcello.thiry@gmail.com
Lembre-se:
Semânticas diferentes, associações diferentes!
marcello.thiry@gmail.com
marcello.thiry@gmail.com
Você precisa garantir as regras:
Um aluno não pode ficar sem coordenadorUm coordenador precisa ter, pelo menos, um aluno ...
marcello.thiry@gmail.com
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
marcello.thiry@gmail.com
65Para exercitar!
Modele um diagrama UML a partir dos seguintes conceitos:
Aluno, Professor, Turma, Disciplina, Curso
Pense na sua realidade dentro da universidade
marcello.thiry@gmail.com
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/
marcello.thiry@gmail.com
marcello.thiry@gmail.com
Recommended