Atividade de Projeto Design
O Que é Projeto OO? É desvendar a caixa-preta de um objeto :Sistema Como o objeto complexo :Sistema deveria ser definido? Com base nas Operações dos atores do sistema Contratos De acordo com Modelo Conceitual do Sistema Conceitos Atributos Relacionamentos Artefato a gerar Diagrama de classes de software
Diagrama de Classes Derivado do Modelo Conceitual Classe de Software Cada conceito é transformado em uma classe de software Classe de Software Atributos Relacionamentos com outras classes, ou com a própria classe Métodos Visibilidade Grau de acoplamento com outras classes
Métodos de Classe São determinados via Diagramas de Colaboração entre Objetos Um Diagrama de Colaboração entre Objetos especifica como objetos do domínio devem colaborar, ou trocar mensagens, para resolver Operações Cada mensagem que chega a um objeto do domínio torna-se um método da correspondente classe de software
Geração do Diagrama de Classes
Adição da direção dos relacionamentos Em relação ao Modelo Conceitual, um Diagrama de Colaboração entre Objetos Contém a Mais Adição dos métodos Adição da direção dos relacionamentos Visibilidade de classes Possível detalhamento dos atributos e relacionamentos Possível alteração na estrutura das classes e relacionamentos Possível criação de atributos privados ou protegidos
Diagramas de Colaboração entre Objetos Motivação
Exemplo de uma classe concentradora O que se quer evitar
Avaliação da Classe VideoLocadora Segundo a moderna engenharia de software Segundo o modelo conceitual, a classe VideoLocadora só deveria ‘ver’ as classes Fita e Cliente Pela ‘solução’ apresentada, há um alto acoplamento de VideoLocadora com outras classes Emprestimo ItemDeEmprestimo Também, baixa coesão O método emprestaFita() faz muita coisa, ou está muito carregado O que se quer é o contrário Classes com Baixo acoplamento Alta coesão (coesão)
Como se Chega a Classes com Baixo Acoplamento e Coesas? O Caminho Passa pelo Exame do Modelo Conceitual
Modelo Conceitual
Lições do Modelo Conceitual Pelo Modelo Conceitual, objetos Emprestimo e ItemDeEmprestimo deviam ser invisíveis a objetos VideoLocadora Desta forma, objetos VideoLocadora não ficam sobrecarregados Outra maneira de dizer Objetos VideoLocadora, Cliente, Fita, Emprestimo e ItemDeEmprestimo devem cooperar para realizar o contrato da operação de sistema emprestaFita() Um diagrama de colaboração entre objetos, baseado no Modelo Conceitual, nos contratos, e em certos padrões de software, deve colocar as coisas desta forma
Uma diagrama de colaboração para o método emprestaFita()
Métodos das Classes Cliente, Emprestimo, ItemDeEmprestimo (Parcial) VideoLocadora Cliente emprestaFita(fCodigo) empresta(fita) Emprestimo ItemDeEmprestimo adiciona(fita) associaItem() associaFita()
Resulta em Classes com Baixo Acoplamento e Coesas