Exemple complet
Dans cette partie, nous allons créer un service permettant de gérer une machine à café qui s’inspire de l’exercice disponible sur le site https://simcap.github.io/coffeemachine. Le code est disponible dans les paquets services et modeles.
1. Définition du service
Le service propose plusieurs méthodes pour gérer la machine :
-
total pour récupérer le montant total d’argent récupéré.
-
acheterProduit pour acheter un produit.
-
produitsRestants pour récupérer les produits de type code restants.
-
ajouterProduit pour ajouter des produits de type code.
-
supprimerProduit pour supprimer les produits de type code.
2. Modèles
Un produit est défini par le trait Produit et chaque type de produit est défini par un case object. Il possède les attributs suivants : Trait
-
Un prix.
-
Un code.
-
Une quantité initiale.
On surcharge la méthode toString pour plus de praticité.
trait Produit {
override final def toString: String = code
def prix: Double
def code: String
def quantiteInitiale: Int
}
Le trait est étendu par trois traits scellés : Trait:scellé
-
Bouteille
-
Canette
-
Friandise
a. Friandise
Le trait scellé Friandise propose un prix et une quantité initiale par défaut.
sealed trait Friandise extends Produit { Héritage:extends
override val prix: Double = 1.0
override val quantiteInitiale:...