Diagramas de Colaboração
entre Objetos
Motivação
Exemplo de solução
concentradora (pseudo-código)
Classe VideoLocadora
fitas : Conjunto;
clienteCorrente : Cliente;
Método emprestaFita(fCodigo: String)
fita : Fita;
emprestimoCorrente : Emprestimo;
item : ItemDeEmprestimo;
fita := fitas.get(fCodigo);
emprestimoCorrente := clienteCorrente.getEmprestimoCorrente();
item := ItemDeEmprestimo.new();
item.associaFita(fita);
emprestimoCorrente.associaItem(item);
Fim Método;
Fim Classe.
Modelo Conceitual
Lições do Modelo Conceitual
Pelo Modelo Conceitual, objetos Emprestimo e
ItemDeEmprestimo deviam ser invisíveis ao objeto
VideoLocadora
Desta forma, objetos VideoLocadora não ficam
sobrecarregados
Outra maneira de dizer
• Objetos VideoLocadora, Cliente, Emprestimo e
ItemDeEmprestimo devem cooperar para realizar a operação de
sistema emprestafita()
 Um diagrama de colaboração entre objetos, baseado no Modelo
Conceitual e em certos padrões de software, deve colocar as
coisas desta forma
Uma diagrama de colaboração
para o mesmo problema
Resulta em código mais elegante
Classe VideoLocadora
fitas : Conjunto ;
clienteCorrente : Cliente;
Metodo emprestaFita(fCodigo : String);
fita : Fita;
fita := fitas.get(fCodigo);
clienteCorrente.empresta(fita)
Fim Metodo;
Fim Classe.
Classe Cliente
emprestimoCorrente : Emprestimo;
Metodo empresta(fita : Fita);
emprestimoCorrente.adiciona(fita);
Fim Metodo;
Fim Classe.
Classe Emprestimo
itens : Conjunto;
Metodo adiciona(fita : Fita);
item : ItemDeEmprestimo;
item := ItemDeEmprestimo.new();
self.associaItem(item);
item.associaFita(fita);
Fim Metodo;
Fim Classe.
Classe ItemDeEmprestimo
...
Metodo new();
Metodo associaFita();
...
Fim Classe.
Orientação a Objeto Não É
Apenas Diagrama de Classe
Quando uma ou duas classes fazem tudo, e
as outras são meras pacientes desse
processo, não existe propriamente
orientação a objeto, mas uma estrutura
concentradora
Seria preferível fazer um projeto estruturado
bem feito do que um projeto orientado a
objeto, desta forma
OO Não É Simulação
Muitos projetistas cometem o erro de acreditar que
um sistema orientado a objeto é uma simulação do
mundo real
Mas isso não é normalmente verdade
O sistema representa as informações do mundo
real e não as coisas propriamente ditas
Os métodos não correspondem a ações do mundo
real, mas sim à realização interna de contratos de
operações externas (ou operações de sistema)
Por este motivo é que os métodos internos são
citados apenas na fase de projeto e sequer
aparecem na fase de análise
Download

diagrama de colaboração entre objetos