[UML, Interface] Duvida sobre comunicação entre classe generalizada e outras classes [Resolvido]


Olá! Eu gostaria de saber se, da forma como mostra no diagrama, é possível a classe Cliente conter uma variável do tipo ‘Animal’ e instanciá-la como, por exemplo, gato (Animal gato= new gato()) ou isso é feito de outra forma

1 - Por que a interface IAnimal?
2 - Por que Animal implementa IAnimal?
3 - A relação entre Cliente e Animal é agregação (tem um)? Se sim, a seta está errada (deveria ser aquela com losango na extremidade).
4 - Cada Cliente possui um único Animal ou pode possuir mais de um (creio que que sim).

1- A principio a interface IAnimal estava no alugar de animal e animal não existia. Dai eu vi que interface não pode ter atributo. Realmente não faz sentido ter uma interface IAnimal ali
2- ‘1’
3- cliente não é formado por animais, então creio que não
4- Cada cliente pode possuir 0, 1 ou mais animais

Isso mesmo, não faz sentido.
Você usa interfaces para determinar comportamentos (ou operações) que precisam ser seguidos por quem as implementa. Não parece ser o caso no problema proposto.

Então é uma relação do tipo agregação, tem que ajustar a seta como o @darlan_machado citou .

Eu também renomearia esses enums para Plano e Porte (no singular e sem o sufixo Enum) que é exatamente o que as instâncias deles vão representar.
Qual das frases abaixo você usaria no mundo real?

1 "Meu cachorro tem um porte grande"
2 "Meu cachorro tem um portes enum grande"

:wink:

1 curtida

Sim, e por isso eu não comentei sobre composição. Falei sobre agregação.
Mas, você está modelando o que? Algo como um pet shop? Clínica veterinária? Se sim, como pretende cadastrar os animais? Eu entendo que você vai cadastrar o “tutor” (cliente) e, depois, vai cadastrar os animais sob tutoria dele, não? Assim sendo, podemos entender que

Cliente TEM UM (ou mais) animais

Logo, esta relação é uma agregação. Obviamente, cliente não é feito de animais.
Porém, você não vai criar a classe Animal definindo que ela possui um Cliente, não é mesmo?

1 curtida

Sim, estou modelando algo relacionado a um petshop, um sistema de agendamentos pra ser mais preciso (projeto com o fim de aprender sobre uml e data/hora)


Agradeço pela ajuda!