Théorie 2.1: notion de modèle #
Notion de modèle #
-
Un modèle est une classe qui représente des données importantes pour un programme
-
Prenons par exemple un petit tableau de cartes issu de l’atelier 1.1:
-
Le modèle est la classe
MonTriLibre
-
Il faut aussi les objets
Carte
pour bien représenter les données -
Les classes complémentaires comme
Carte
sont parfois appelées des valeurs (ou des sous-modèles)
Un modèle a des comportements (méthodes) #
-
Comme
MonTriLibre
est une classe, le modèle contient aussi des méthodes -
Par exemple:
boolean isSorted
pour déterminer si les cartes sont triéesint testCaseSize
qui retourne la taille de l’exemple (le nombre de cartes)
-
La valeur
Carte
contient aussi des méthodes, par exemple:int compareTo
pour indiquer si la carte est plus petite qu’une autre carteboolean isNullCard
pour indier s’il s’agit vraiment d’une carte ou d’une case vide
-
On va voir à la session suivante qu’une application graphique est souvent divisée en trois parties:
- le modèle: contient les données et les méthodes pour manipuler les données
- la vue: contient le code pour afficher les données
- le contrôleur: contient le code pour créer les vues et les modèles et autres tâches
-
(C’est le populaire patron MVC: modèle-vue-contrôleur)
Une application a souvent plusieurs modèles #
-
Par exemple, l’outil de validation a un modèle a trois modèles
- un modèle pour les cartes et un pour les cas de tests
- un modèle pour des paramètres
Modèle en JSON #
-
JSON n’a pas de notion de classe
-
Dans ce cours, on va utiliser la clé spéciale
_C
pour identifier la classe -
On a donc la représentation JSON suivante pour un 4♧:
{ "_C": "Carte", "numero": 4, "sorte": "TREFLE" }
-
Et le JSON suivant pour une liste de trois cartes
[ { "_C": "Carte", "numero": 5, "sorte": "CARREAU" }, { "_C": "Carte", "numero": 4, "sorte": "TREFLE" }, { "_C": "Carte", "numero": 6, "sorte": "CARREAU" } ]
-
Et finalement le JSON suivant pour le modèle
MonTriLibre
{
"_C": "MonTriLibre",
"cartes":
[
{
"_C": "Carte",
"numero": 5,
"sorte": "CARREAU"
},
{
"_C": "Carte",
"numero": 4,
"sorte": "TREFLE"
},
{
"_C": "Carte",
"numero": 6,
"sorte": "CARREAU"
}
],
"siTrie": false
}