Classes et objets dans dart
Sommaire
- 1- Présentation
- 2- Déclarer et instancier une classe dans dart
- 2.1- Structure générale d'une classe Dart
- 2.2- Déclarer une classe dans dart
- 2.2.1- Syntaxe -1-
- 2.2.2- Syntaxe -2-
- 2.2.3- Explication
- 2.3- Création d'instances de classes dans dart
- 3- Exemples
- 3.1.1- Exemple -1-
- 3.1.2- Exemple -2-
- 3.1.3- Explication
- 4- Applications
- 4.1- App01
- 4.1.1- Cours Flutter
-
Présentation
- Les classes et les objets Dart sont les concepts fondamentaux du langage de programmation orienté objet.
- Une classe est un plan ou un prototype défini par l’utilisateur qui est utilisé pour créer des objets.
- Un objet représente des entités de la vie réelle. Les objets déterminent le comportement d’une classe.
-
Déclarer et instancier une classe dans dart
-
Structure générale d’une classe Dart
-
Déclarer une classe dans dart
- Les classes dans Dart sont déclarées à l’aide du mot-clé class :
- La déclaration de classe comprend le nom de la classe, l’en-tête de la classe (spécifiant ses paramètres de type, le constructeur principal, etc.) et le corps de la classe, entourés d’accolades.
- L’en-tête et le corps sont facultatifs : si la classe n’a pas de corps, les accolades peuvent être omises. personne de classe ;
- Une définition de classe commence par le mot clé
class
suivi dunom
de la classe ; et le corps de la classe entouré d’une paire d’accolades. -
Syntaxe -1-
-
Syntaxe -2-
-
Explication
- Champs(<fields>) – Un champ est une variable déclarée dans une classe. Les champs représentent des données relatives aux objets.
- Setters et Getters – Permet au programme d’initialiser et de récupérer les valeurs des champs d’une classe. Un getter/setter par défaut est associé à chaque classe. Cependant, ceux par défaut peuvent être remplacés en définissant explicitement un setter/getter.
- Constructeurs (<constructors>) – responsables de l’allocation de mémoire pour les objets de la classe.
- Fonctions (<functions>)– Les fonctions représentent les actions qu’un objet peut entreprendre. Ils sont aussi parfois appelés méthodes
-
Création d’instances de classes dans dart
- Après avoir créé la classe, nous pouvons créer une instance ou un objet de cette classe dont nous voulons accéder à ses champs et fonctions.
var p1 = Personne();
var p2 = Personne();
- Le code suivant a le même effet, mais utilise le mot clé facultatif
new
avant le nom du constructeur : var p1 = nouvelle Personne();
var p2 = nouvelle Personne();
-
Exemples
-
Exemple -1-
-
Exemple -2-
-
Explication
- Dans le deuxième exemple, nous avons créé la classe Etudiant dans Dart avec le mot-clé “class” suivi du nom de la classe.
- Ensuite, à l’intérieur de cette classe, nous avons défini trois variables membres, c’est-à-dire name, age et roll_num.
- Nous avons également créé une fonction membre de cette classe nommée displayStudentInfo(). Cette fonction n’a pas de type de retour et n’accepte aucun paramètre.
- Dans cette fonction, nous affichons simplement les valeurs des variables membres sur le terminal. Maintenant, pour accéder aux variables membres et à la fonction membre de la classe Etudiant, nous avons créé un objet de cette classe, “S1“, dans notre fonction “main()” en utilisant le mot-clé “new“.
- Ensuite, nous avons voulu initialiser toutes les variables membres de cette classe.
- Pour cela, nous avons initialisé ces variables membres une par une en y accédant avec l’objet de la classe Etudiant que nous avons créé.
- Nous avons attribué des valeurs aléatoires à ces trois variables membres. Ensuite, nous venons d’appeler la fonction “displayStudentInfo()” de la classeEtudiant à l’aide de son objet pour afficher toutes les informations de l’élève spécifié sur le terminal.
-
Applications
-
App01
- Soit le programme suivant :
- Refactorisez ce code en créant une classe Person qui contiendra les propriétés name, age, height.
- Cette classe devrait avoir une méthode printDescription() qui peut être utilisée pour imprimer le nom, l’âge et la taille comme dans le programme ci-contre.
- Une fois cela fait, créez deux instances de Person et utilisez-les pour appeler la méthode printDescription() que vous venez de créer.
classe Personne{
/* ... */
}
class class_name {
<fields>
<getters/setters>
<constructors>
<functions>
}
class class_name {
// Properties (Variables)
// Constructor
// Methods or Functions
// Getters and Setters
}
void main() {
var premiereVoiture = Voiture();
premiereVoiture.nom = 'Mazda';
premiereVoiture.couleur = 'Blanche';
print(
'Le nom de la 1ère Voiture est ${premiereVoiture.nom} et la couleur est ${premiereVoiture.couleur}');
premiereVoiture.conduite();
var deuxiemeVoiture = Voiture();
deuxiemeVoiture.nom = 'Honda Fit';
deuxiemeVoiture.couleur = 'Noir';
print(
'Le nom de la 2ème Voiture est ${deuxiemeVoiture.nom} et la couleur est ${deuxiemeVoiture.couleur}');
deuxiemeVoiture.frein();
}
class Voiture {
//Propriétés
late String couleur, nom;
//Méthodes
void conduite() {
print('La voiture roule');
}
void frein() {
print('Le frein a été appliqué');
}
}
class Etudiant {
var name;
var age;
var roll_num;
displayEtudiantInfo() {
print('Le nom de l\'étudiant est : ${name}');
print('L\'âge de l\'étudiant est : ${age}');
print('Le matricule de l\'étudiant est : ${roll_num}');
}
}
void main() {
Etudiant S1 = new Etudiant();
S1.name = "Emma";
S1.age = 28;
S1.roll_num = 2014;
S1.displayEtudiantInfo();
}
void main() {
final person = {
'name': 'Mohamed',
'age': 36,
'height': 1.84
};
print("Je m'appelle ${person['name']}. J'ai ${person['age']} ans, je mesure ${person['height']} mètres.");
}
Solution
class Person {
Person({
required this.name,
required this.age,
required this.height,
});
final String name;
final int age;
final double height;
void printDescription() {
print("Je m'appelle ${person['name']}. J'ai ${person['age']} ans, je mesure ${person['height']} mètres.");
}
}
void main() {
final p1 = Person(name: 'Mohamed', age: 36, height: 1.84);
final p2 = Person(name: 'Mouna', age: 44, height: 1.76);
p1.printDescription();
p2.printDescription();
}