Vous êtes sur la page 1sur 11

Le Langage Dart

Partie 3 : Programmation Orientée Objet – Partie Avancée

Prof. Chaker El Amrani


Plan
1. Mot clé : super
2. Date et heure
3. Les méthodes map() et reduce()
4. Concept de classes pouvant être appelées
5. Les classes abstraites
6. Les interfaces en Dart
7. Les classes génériques

Prof. C. El Amrani - 2024 2


Mot clé : super
Dans Dart, le mot-clé super est utilisé pour faire référence à l’objet de la classe parent immédiate. Il est utilisé pour
appeler les propriétés et les méthodes de la classe parent.
Exemple:
class Classe1 {
String abc = "C est : classe parent"; }
class Classe2 extends Classe1 {
void afficher()
{ print(super.abc); } }
void main()
{ Classe2 c1 = new Classe2();
c1.afficher(); }
Exécution:
C est : classe parent
Prof. C. El Amrani - 2024 3
Date et heure
La date et l’heure sont fournies en Dart avec la classe : DateTime
Exemple:
void main(){
// Prendre la date et l heure actuelles.
var now = DateTime.now();
print(now);
// Creer un nouveau DateTime avec time zone local.
var dt = DateTime(2024); // Janvier 1, 2024
print(dt);
// Specify the month and day.
dt = DateTime(2024, 1, 4); // Janvier 4, 2024
print(dt);
}

Prof. C. El Amrani - 2024 4


Les méthodes map() et reduce()
En Dart, les méthodes map et reduce sont souvent utilisées sur des listes pour transformer les éléments d'une liste
et agréger les résultats.
Exemple 1 (map):
void main() {
List<int> nombres = [1, 2, 3, 4, 5];
// Utilisation de la methode map pour doubler la valeur de chaque element de la liste
List<int> resultats = nombres.map((nombre) => nombre * 2).toList();
print("Liste d'origine : $nombres"); print("Liste ap la transformation avec map : $resultats"); }

Exemple 2 (reduce)
void main() {
List<int> nombres = [1, 2, 3, 4, 5];
// Utilisation de la methode reduce pour calculer la somme des element de la liste
int somme = nombres.reduce((acc, nombre) => acc + nombre);
print("Liste d'origine : $nombres");
print("Somme des elements avec reduce : $somme"); }
Prof. C. El Amrani - 2024 5
Concept de classes pouvant être appelées
Dart permet à l’utilisateur de créer une classe qui peut être appelée (a callable class), ce qui permet à l’instance de la
classe d’être appelée comme une fonction. Pour cela, il faut implémenter la méthode: call() dans la classe. La
méthode call() peut avoir n’importe quel nombre d’arguments, et peut renvoyer n’importe quel type de la valeur de
retour.
Exemple:

class Classe1 {
// Definition de la methode call qui cree : class callable
String call(String a, String b, String c) => 'Bonjour c est : $a$b$c'; }
void main() {
// Creation d'une instance de la classe
var abc = Classe1();
// Appeler la classe a travers son instance
var abc_out = abc('aa', 'bb', 'cc');
// Printing the output
print(abc_out); }
Prof. C. El Amrani - 2024 6
Les classes abstraites
Une classe abstraite est une classe déclarée avec le mot-clé abstract. Contrairement à une classe normale, on ne peut pas
créer d’ objets (instances) à partir d’une classe abstraite. Le but principal d’une classe abstraite est de permettre à d’autres
classes (classes enfants) d’en hériter.
Une classe abstraite peut contenir des propriétés et des méthodes abstraites, qui seront implémentées par ses classes
enfants.
Exemple 1:
abstract class Forme {
double surface(); }
class Cercle extends Forme {
double rayon;
Cercle({this.rayon = 0});
@override
double surface() => 3.14 * rayon * rayon; }
void main() {
var cercle = Cercle(rayon: 10);
print('La surface du cercle est : ${cercle.surface()}’); }
Prof. C. El Amrani - 2024 7
Les classes abstraites
Exemple 2: Ce programme réalise deux classes enfants à partir d’une classe abstraite.
abstract class Classe1 {
void info(); }
class Classe2 extends Classe1 {
@override
void info()
{ print("C est la classe : Classe2."); } }
class Classe3 extends Classe1 {
@override
void info()
{ print("C est la classe : Classe3."); } }
void main()
{ Classe2 c2 = new Classe2();
c2.info();
Classe3 c3 = new Classe3();
c3.info(); }
Prof. C. El Amrani - 2024 8
Les interfaces en Dart
L’interface en Dart fournit à l’utilisateur le schéma de la classe. Elle spécifie l’ensemble des méthodes et
des propriétés qu’une classe doit implémenter. Une classe peut implémenter plusieurs interfaces.
Exemple :
void main(){
Classe2 aa= new Classe2();
aa.printdata(); }
// Class Classe1 (Interface)
class Classe1 {
void printdata() {
print("Bonjour c est Classe1"); }
}
// Classe: Classe2 qui implémente Classe1
class Classe2 implements Classe1 {
void printdata() {
print("Bonjour c est classe2"); } }
Prof. C. El Amrani - 2024 9
Les interfaces en Dart
En Dart, l’héritage multiple est possible grâce à
l’utilisation des interfaces et du mot-clé: // Class Classe3 (Interface3)
implements. class Classe3 {
Exemple : void afficher3() {
void main(){ print("Bonjour Classe3");
// Creation d'un objet de la classe Classe4 }}
Classe4 abc = new Classe4();
// Appel des methodes apres Implementation // Classe4 qui implemente Classe1, Classe2, Classe3.
abc.afficher1(); class Classe4 implements Classe1, Classe2, Classe3 {
abc.afficher2(); void afficher1() {
abc.afficher3();
} print("Salut.. c'est Classe1"); }
// Class Classe1 (Interface1) void afficher2() {
class Classe1 { print("Salut.. c'est Classe2"); }
void afficher1() {
print("Bonjour Classe1"); void afficher3() {
}} print("Salut.. c'est Classe3"); }
// Class Classe2 (Interface2)
class Classe2 { }
void afficher2() {
print("Bonjour Classe2");
} } Prof. C. El Amrani - 2024 10
Les classes génériques
En Dart, on peut utiliser des classes génériques pour créer des classes qui peuvent être utilisées avec différents types de
données. Les classes génériques sont définies en utilisant des paramètres de type. Voici un exemple simple de classe
générique en Dart :
Exemple :
class Voiture<T> {
T composant;
Voiture(this.composant);
void afficher() {
print('Information sur la voiture : $composant'); } }

void main() {
// Exemple d'utilisation avec le type String
Voiture<String> VoitureString = Voiture<String>('La marque Audi');
VoitureString.afficher();

// Exemple d'utilisation avec un type numerique


Voiture<int> VoitureInt = Voiture<int>(2018);
VoitureInt.afficher(); }

Prof. C. El Amrani - 2024 11

Vous aimerez peut-être aussi