Actividade

  1. Resolução do enunciado da aula.
  2. Apoio ao projecto

Objectivo

  1. Utilização de um padrão de desenho determinado para aumentar a funcionalidade de uma aplicação.

Enunciado da Aula

Considere o seguinte domínio.
Uma empresa de consultoria na área de desenvolvimento de software realiza assistência a projectos de desenvolvimento de software . A empresa de consultoria tem empregados: gestores, programadores normais e programadores peritos. Cada empregado realiza um tipo de trabalho específico, o gestor gere um projecto, o programador normal programa e o programador perigo programa muito. Adicionalmente, cada tipo de trabalhador tem um custo distinto: o gestor custa 1000 euros, o programador normal custa 1500 euros e o programador perito custa 10000 euros. 
No contexto de um projecto, a empresa de consultoria pode atribuir o projecto a um dos seus empregados ou pode constituir uma equipa com vários dos seus empregados (podendo ainda agrupar os empregados em sub-equipas) e atribuir a equipa ao projecto. O custo do projecto depende do custo dos empregados atribuídos ao projecto:
  • No caso em que o projeto está atribuído a um único empregado, o custo do projecto é igual ao custo deste empregado.
  • No caso em que o projecto está atribuído a uma equipa, o custo do projecto é igual ao custo dos vários empregados envolvidos na equipa.
O projecto deverá suportar a funcionalidade realizar trabalho que deverá corresponder a invocar a funcionalidade de trabalhar dos vários empregados envolvidos:
  • No caso em que o projeto está atribuído a um único empregado, apenas se considera o trabalho realizado por este empregado.
  • No caso em que o projecto está atribuído a uma equipa, então tem que se considerar o trabalho de todos os empregados envolvidos na equipa.
Tendo em conta os padrões de desenho já leccionados na aula teórica (Null Object, Singleton, Template Method e Composite) qual é que deve ser o padrão de desenho a aplicar neste caso por forma a que o código da entidade projecto não necessita de distinguir se está atribuído a um empregado individual ou a uma equipa?

Aplique o padrão escolhido neste caso.