classDiagram
Legume <|-- Courges
Legume <|-- Choux
Legume <|-- Ombelliferes
Courges <|-- Courgette
Courges <|-- Potimarron
Choux <|-- Frise
Choux <|-- Cabu
Ombelliferes <|-- Carotte
Ombelliferes <|-- Celeri
class Legume {
}
class Courges {
}
class Choux {
}
class Ombelliferes {
}
class Courgette {
}
class Potimarron {
}
class Frise {
}
class Cabu {
}
class Carotte {
}
class Celeri {
}
// GÉNÉRAL
// paramètres => int poids, etat, tempsCuisson
// poids => inf à 100 alors égal à 100
// poids => si pas multiple de 50, alors arrondi au multiple le plus proche
// instanciation => uniquement des légume entiers et crus
// etat => 0 = entier, 1 = morceu, 2 = purée
public class Legume {
public Legume(int poids) {
this.poids = (poids < 100) ? 100 : Math.round(poids / 50.0f) * 50;
this.etat = 0;
this.tempCuisson = 0;
}
}
public class Choux extends Legume {
public Choux(int poids) {
super(poids);
}
}
public class Courgette extends Courges {
public Courgette(int poids) {
super(poids);
}
}
Il faut définir la fonction getMorceau(int poidsMorceau) dans la classe Legume en abstract et la définir dans toutes les classes filles (et petites filles).
// On le met dans les classes filles de Legume la fonction getMorceau
// Par exemple pour Courgette
@Override
public Legume getMorceau(int poidsMorceau) {
Legume l = new Courgette(poidsMorceau);
l.etat = 1;
this.poids -= poidsMorceau;
if(this.poids < poidsMorceau) this.etat = 1;
return l;
}
Oui cela modifie le code aux questions 4 et 5 car cela permet de faire des clones sur les bonnes instances sans avoir à redéfinir dans toutes les méthodes getMorceau dans les classes.
Il faut pouvoir identifié les classes avec une variable distincte, par exemple un entier unique pour chaque classe (pour une approche POO).