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"
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?