Salut !
Tout d'abord je pense que ta classe Fruit doit etre une classe abstract et non pas une interface. La relation Pomme/Fruit repond a la regle "Une pomme EST UN fruit".
Tes implementations de ton interface FruitQuantity doit venir en remplacement de ta list de fruit que tu as cree dans ta classe.
Ta classe contiendrait alors une map du genre :
Map<FruitType, FruitQuantity> = new EnumMap(FruitType.class)
si tu souhaites travailler avec un enum en tant que key de ta map ou bien
Map<String, FruitQuantity> = new Hashmap<>()
si tu souhaites travailler avec le nom du fruit en tant que key ta map par example.
Tes instances de FruitQuantity serait instancier au moment de l'appelle de la fonction add(Fruit fruit) de ta classe Basket.
Si le fruit n'est pas deja present dans ta map, tu instancies alors une implementation de FruitQuantity selon le fruit a rajouter. Ton FruitQuantity aurait alors sont compteur egale a 1.
Si le fruit est deja present dans ta map, tu auras juste a incrementer le compteur de ton implementation FruitQuantity correspondante.
Ta fonction total() de Basket consisterait alors a parcourir toutes les valeurs de ta map via Map.values() puis de faire la somme de tous les compteurs internes de tes implementations FruitQuantity.
Partager