Lista de Exercícios
Curso de Pós - Graduação em Engenharia de Software
Exercícios Projeto de Software Orientado a Objetos
USC 2015
Exercício 01
Considere os diagramas de classes de análise fornecidos nos itens (a) e (b) abaixo, ambos de acordo com a notação da UML. Esses diagramas desejam representar o fato de que uma conta bancária pode estar associada a uma pessoa, que pode ser ou uma pessoa física (representada pela classe <<Indivíduo>>), ou uma pessoa jurídica (representada pala classe <<Corporacao>>). Uma dessas duas soluções é melhor que a outra? Se sim, qual delas e em que sentido? Justifique sua resposta considerando alguns dos padrões GRASP.
Uma dessas duas soluções é melhor que a outra? Se sim, qual delas e em que sentido? Justifique sua resposta considerando alguns dos padrões GRASP.
A solução A não está totalmente incorreta, porém, considerando a descrição da situação problema, a alternativa B apresenta a solução mais adequada.
Neste caso, a classe conta bancária está associada ao cliente, que pode ser pessoa física (Indivíduo) ou pessoa jurídica (Corporação). A classe Cliente possui as informações genéricas, comuns à pessoa física e à pessoa jurídica, enquanto as classes Corporação e Indivíduo são contém as informações específicas para cada tipo de cliente. Desta forma, atribuímos a responsabilidade ao especialista mediante utilização do padrão Information Expert. Também é possível justificar a escolha através do padrão Indirection, que utiliza um objeto intermediário, responsável pela mediação entre os demais.
Exercício 02
Qual alternativa apresenta somente GRASP Patterns?
A ( ) Coesão alta, polimorfismo, visitor
B ( ) Coesão alta, controlador, strategy
C ( ) Controlador, polimorfismo e Memento
D ( x ) Coesão alta, controlador e polimorfismo
E ( ) Observer, visitor, strategy
Exercício 03
A definição “É responsável por selecionar quais responsabilidades devem estar em quais classes”, diz