Modelagem de classes

Possuo o seguinte caso: Tenho um sistema que possui tarefas. Essas tarefas podem ter várias sub-tarefas. Além disso, cada tarefa pode ter um vinculo paralelo, que permite que ela seja executada ao mesmo tempo que outras tarefas, ou sequencial, que obriga que a tarefa anterior seja concluida antes do inicio.

Pensei em dois modelos:

a) Classe Task, que contem uma conjunto de objetos dela mesmo, para representar as sub-tarefas. Parece interessante, mas não pensei em uma boa forma de fazer o controle de tarefas sequenciais e paralelas.

b) Interface Task, que implementa SequentialTask e ParallelTask. Isso ajudaria a montar o esquema de paralelo e sequencial, pois poderia passar a SequentialTask qual tarefa vem antes dela e lançar execção ao tentar fechar a tarefa atual sem ter fechado a precedente. Porém, não vejo com muita clareza como ficaria a questão das sub-tarefas.

Bom, acho que ambas as ideias tem problemas. Alguém teria uma terceira opinião?

Se eu entendi bem acho que o caminho é este mesmo que vc descreveu.

Teremos tarefas que irão possuir agregações de tarefas que serão estruturalmente identicas. Só acho que precisa incluir nesta arquitetura a idéia de dependencia para os casos que vc chamou de sequenciais. Ou seja, no momento de conectar os objetos teria que adicionar as dependencias em termos de execução.

Quando uma determinada tarefa fosse iniciar a execução a primeira coisa a ser feita seria verificar a lista de dependencias (tarefas relacionadas) para ver se a execução seria possível.

Dá uma olhada no livro “Padrão de Projetos”, acho que tem um ou dois padrões que se parecem com isto que você precisa.

flws

Grato por responder, fantomas.

Saberias quais seriam esses padrões? É que isso é trabalho de aula e terei um mês pra fazer hehe, não terei tempo de ler todo o livro para identificar o mais adequado.