Instancier des pancakes

Résumé Support

Dans cette nouvelle vidéo je vous propose de découvrir ensemble comment instancier des pancakes.

Construisons notre classe

La première étape consiste à définir notre classe et les propriétés dont nous allons avoir besoin pour la suite de l'éxécution de notre script.

class Pancake { public static farine = new Farine(150 * GRAMME) public static levure = new Levure(CUILLERE_CAFE, {type: 'chimique'}) public static sucre = new Sucre(CUILLERE_SOUPE * 2, {type: 'vanillé'}) public static sel = new Sel(1 * PINCEE) public static oeufs = [new Oeuf(), new Oeuf()] public static lait = new Farine(200 * ML) }

Afin de bien séparer les choses nous allons créer une méthode pour obtenir la pâte qui nous servira par la suite.

class Pancake { // ... public static function async makePate(): PateInterface { const {jaune, blanc} = OeufSeparator.separate(this.oeufs) const recipient = new Recipient(this.farine, this.levure, this.sucre, this.sel, jaune, lait) const neige = await blanc.battre() await recipient.melanger() await recipient.ajouterEnMelangeant(neige) return recipient.getContent() } }

Maintenant nous allons pouvoir utiliser cette méthode pour la méthode qui nous servira de factory pour nos pancakes.

class Pancake { // ... public function async make(): Pancake[] { const pate = await this.makePate() const pancakes = [] const poele = new Poele(); while (pate.length > 0) { let pancake = new Pancake(pate) await poele.cuire(pancake) pancakes.push(pancake) } return pancakes } }

Et voila nous avons maintenant tous les éléments pour instancier les pancakes.

Récapitulatif

Voila ce que donne maintenant notre classe finale.

class Pancake implements PoelableInterface { public static farine = new Farine(150 * GRAMME) public static levure = new Levure(CUILLERE_CAFE, {type: 'chimique'}) public static sucre = new Sucre(CUILLERE_SOUPE * 2, {type: 'vanillé'}) public static sel = new Sel(1 * PINCEE) public static oeufs = [new Oeuf(), new Oeuf()] public static lait = new Farine(200 * ML) public estCuit = false public pate: Pate public static function async makePate(): PateInterface { const {jaune, blanc} = OeufSeparator.separate(oeufs) const recipient = new Recipient(this.farine, this.levure, this.sucre, this.sel, jaune, lait) const neige = await blanc.battre() await recipient.melanger() recipient.add(neige) await recipient.melanger() return recipient.getContent() } public function async make(): Pancake[] { const pate = await this.makePate() const pancakes = [] const poele = new Poele(); while (pate.length > 0) { let pancake = new Pancake(pate) await poele.cuire(pancake) pancakes.push(pancake) } return pancakes } public function constructor (pate: Pate) { this.pate = pate.getLouche() } }

Améliorations

La plupart de nos étapes s'exécutent les unes à la suite des autres. Il serait possible d'optimiser les opérations en parallélisant certaines opérations mais cela nécessiterait plusieurs corps.