Lista de Exercícios básicos de UML
Para que a semântica da associação fique completa, qual adorno está faltando:
Atributo qualificador
Indicar as Cardinalidades
Indicar as multiplicidades
Indicar o sentido de leitura
Indicar a navegabilidade
Um analista de sistemas deparou-se com a seguinte situação destacada num círculo vermelho no diagrama de classes ilustrada na figura abaixo:
No domínio do problema, a comanda é impressa e é entregue ao cozinheiro para que ele possa preparar a refeição descrita em cada pedido realizado pelo cliente. A duvida do analista de sistemas está em criar ou não uma classe derivada, Comanda, tendo como a classe base a classe Pedido, já que as informações de uma comanda são todas as que estão em pedido.
Ajude o analista tomar a decisão correta apresentando uma justificativa, também, correta:
A classe Comanda nem deveria existir, pois ela representa algo que será impresso e não é uma informação mantida pelo sistema. Mesmo que fosse, semanticamente falando, não faz sentido dizer que Comanda é um Pedido!
A classe Comando nem deveria existir, pois ela representa algo que será impresso e não mantida pelo sistema; embora a ideia de criar a generalização para utilizar a herança tenha sido muito boa!
A classe Comando não deve ser criada (comanda não existe!). Deve ser criada a classe Comando como classe derivada de Pedido, pois essa classe deve representar um comando para o cozinheiro produzir a refeição!
A classe Comanda deve sim ser criada como derivada de Pedido. É melhor utilizar a herança, pois não seria cabível repetir todas as informações do Pedido em Comanda!
A classe Comanda deve sim ser criada, mas não faz a menor diferença se a classe será derivada de Pedido ou se ele irá replicar todas as informações existentes em Pedido. O princípio do Pragmatismo da Orientação a Objetos diz que o mais importante é que o programa funcione uma vez. Evite a Paralisia de Análise! O projeto pode ser melhorado posteriormente