Você está na página 1de 3

Lista de Exerccios Padres de Software

Prof. Eduardo Bezerra


(1) Considere os diagramas de classes de anlise fornecidos nos itens (a) e (b) abaixo, ambos de acordo

com a notao da UML. Esses diagramas desejam representar o fato de que uma conta bancria pode
estar associada a uma pessoa, que pode ser ou uma pessoa fsica (representada pela classe Indivduo),
ou uma pessoa jurdica (representada pala classe Corporao). Uma dessas duas solues melhor
que a outra? Se sim, qual delas e em que sentido? Justifique sua resposta considerando alguns dos
padres GRASP.

(a)

(b)

(2) Considere uma aplicao para um bar-caf. Nessa aplicao, considere a existncia de uma classe

que representa um comestvel qualquer vendido pelo bar-caf: Comida. Considere ainda duas outras
classes nessa aplicao, Cozinha e CaixaRegistradora. A classe cozinha manipula objeto da classe
Comida para montar pratos. J a classe CaixaRegistradora manipula objeto comida para registrar a
venda dos mesmos e cobrar por eles. Portanto, essas duas classes dependem dos servios fornecidos
pela classe Comida. Em um primeiro modelo dessa aplicao, o modelador fez com que as classes
Cozinha e CaixaRegistradora dependessem diretamente da classe Comida, conforme a Figura 2a. No
entanto, conforme o desenvolvimento foi se evoluindo, o modelador identificou um novo requisito na
aplicao: agora era preciso registrar a venda de coisas no comestveis. Por exemplo: o caf-bar
passou a vender jornais dirios. Para atender ao novo requisito, o modelador criou duas novas
interfaces, Vendvel e Comestvel, conforme est na Figura 2b. Discuta detalhadamente a deciso de
projeto do modelador. Voc achou a deciso adequada? Que princpios de projeto levaram o modelador
a tomar tal deciso?

(3) Os principais ambientes de desenvolvimento integrado (integrated development environment, IDE)

modernos tm a capacidade de fornecer ao desenvolvedor o recurso da compilao incremental. Nesse


recurso, medida que o programador codifica sua aplicao, a IDE se encarrega de apontar erros de
sintaxe nas linhas de cdigo. Isso permite que esse programador corrija possveis erros de sintaxe
gradativamente, sem precisar identific-los e corrigi-los apenas aps a compilao explcita do cdigo
fonte. Para prover esse recurso, a IDE deve tratar pequenos ou grandes trechos de um programa como
unidades compilveis. Dessa forma, uma linha de instruo, uma classe inteira (com diversos mtodos)
e uma aplicao (com diversas classes) devem ser consideradas indistintamente para fins de
compilao pela IDE. O NetBeans (Sun), o Eclipse (Open Source) e o Visual Studio (Microsoft) so
exemplos de IDEs que do fornecem esse recurso. Se voc fosse o implementador desse recurso em
uma dessas IDE, que padro de projeto GoF poderia ser utilizado para facilitar sua tarefa? Explique sua
resposta, fornecendo um diagrama de classes que resume a estrutura de classes de sua soluo.
(4) Voc est desenvolvendo uma aplicao para uma empresa que vende componentes de computador.
Atualmente, voc est construindo uma hierarquia de classes para representar os diferentes tipos de
componentes (voc nomeou essas classes como Processador, DiscoRgido e CDROM). Essa
hierarquia contm tambm uma superclasse abstrata denominada Componente, da qual so derivadas
as demais classes. Por outro lado, um amigo seu j desenvolveu um sistema semelhante e lhe passou
classes para representar discos rgidos e CPUs (as classes dele so denominadas HardDisk e CPU
respectivamente). De que maneira voc pode construir sua hierarquia de classes aproveitando
(reutilizando) as classes fornecidas pelo seu amigo, sem precisar modific-las? Que padro de software
poderia ser empregado para auxiliar na definio da estrutura de classes para representar a situao
discutida acima? Utilizando esse padro, fornea um fragmento de diagrama de classes que represente
a situao acima.
(5) Imagine uma classe que representa imagens, Imagem. Imagine um componente que apresenta uma
imagem. Ento esse componente recebe uma instncia de uma classe que subclasse de Imagem. Mas
a classe Imagem uma classe abstrata e de acordo com o tipo de imagem que o usurio selecionar para
visualizar, a subclasse ImagemJPEG ou ImagemGIF ser instanciada. Sendo assim, o objeto Imagem
ser instanciado a partir da classe necessria para tratar o tipo de imagem que for selecionada pelo

usurio. Que padro de projeto pode ser utilizado nessa situao? Esboce a soluo com o uso desse
padro.