Partie A

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

Partie B

Question 1

public class Legume {
	public Legume(int poids) {
		this.poids = (poids < 100) ? 100 : Math.round(poids / 50.0f) * 50;
		this.etat = 0;
		this.tempCuisson = 0;
	}
}

Question 2

public class Choux extends Legume {
	public Choux(int poids) {
		super(poids);
	}
}

Question 3

public class Courgette extends Courges {
	public Courgette(int poids) {
		super(poids);
	}
}

Question 4

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).

Question 5

// 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;
	}

Question 6

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.

Question 7

Il faut pouvoir identifié les classes avec une variable distincte, par exemple un entier unique pour chaque classe (pour une approche POO).

Question 8