SlideShare a Scribd company logo
1 of 77
Download to read offline
Le langage Dart
Présenter par
RICH Brahim
KHALIL Abdelhafid
TANTOUNI Mohamed
Professeur : O.bourkoukou
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 1 / 77
Outline
1 Introduction
2 Contrôle du flow d’exécution
3 Listes & Maps
4 Programmation orientée objet
5 les Frameworks Dart
6 Les outils d’environnements
7 Atelier : Système de Gestion de Stock de Produits
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 2 / 77
Introduction
Introduction
Introduction
Langage Dart
Définition
Dart est Langage de programmation, développé par Google, utilisé pour le
développement logiciel, notamment pour les applications mobiles (avec
Flutter) et les applications web.
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 4 / 77
Introduction
Historique et Version de lang Dart
Origine et Principales Versions
Origine de Dart:
▶ Développé par Google en 2011.
Principales versions :
▶ Dart 1.0 (novembre 2013) : Première version stable.
▶ Dart 2.0 (août 2018) : Introduction de la syntaxe null safety.
▶ Interruptions
▶ Dart 2.12 (février 2021) : Améliorations de la performance et de la
productivité.
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 5 / 77
Introduction
Principes de conception de Dart et ses objectifs
les principes et les objectifs principale
Simplicité , Performance , Productivité , Sécurité ,
Flexibilité
Simplicité : Dart vise à être facile à apprendre et à utiliser pour les
développeurs.,
Performance :Optimisé pour offrir des performances élevées dans
divers contextes d’exécution.
Productivité : Fournit des outils et des fonctionnalités pour accroître
la productivité des développeurs.
Sécurité :Intégration de la sécurité au niveau du langage pour réduire
les erreurs et les failles de sécurité.
Flexibilité : Permet une programmation impérative et orientée objet,
ainsi que la programmation fonctionnelle.
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 6 / 77
Contrôle du flow d’exécution
Contrôle du flow d’exécution
Les Boucles
for
for in
foreach
while
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 8 / 77
Contrôle du flow d’exécution
Les Boucles
For
For
La boucle que l’on retrouve dans presque tous les langages de
programmation est aussi présente en Dart.
List <int > list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
int sum = 0;
for (int i = 0; i < list.length; i++) {
sum += list[i];
}
assert(sum == 45);
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 9 / 77
Contrôle du flow d’exécution
Les Boucles
For in
For in
Il est aussi possible d’itérer sur tous les éléments d’une collection sans
utiliser de compteur
List <int > list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
int sum = 0;
// for (Type variable in collection) { }
for (int element in list) {
sum += element;
}
assert(sum == 45);
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 10 / 77
Contrôle du flow d’exécution
Les Boucles
Foreach
Foreach
Les collections et les maps ont une méthode forEach() permettant d’itérer
sur chacun des éléments. Cette méthode prend en paramètre une closure -
fonction capturant une variable (sum dans le cas présent) hors de son
scope. Le seul paramètre de cette closure est e, où e est un élément de la
liste, qui au cours de l’itération sur cette liste prendra les différentes valeurs
des différents éléments de la liste. Le corps de la fonction est suivi de
l’opérateur => et est composé d’une seule ligne : sum += e.
List <int > list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
//---- foreach
int sum = 0;
list.forEach ((int e) => sum += e);
assert(sum == 45);
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 11 / 77
Contrôle du flow d’exécution
Les Boucles
while
while
Une boucle do-while évalue une condition après l’exécution de la boucle. Le
code est par conséquent exécuté au moins une fois.
List <int > list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
int sum = 0;
int i = 0;
do {
sum += list[i];
i++;
} while (i < list.length);
assert(sum == 45);
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 12 / 77
Contrôle du flow d’exécution
Les instructions conditionnelles
if . . . else
Switch case
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 13 / 77
Contrôle du flow d’exécution
Les instructions conditionnelles
if . . . else
if . . . else
Si la condition est vraie, le code qui suit est exécuté, sinon le code après
else est exécuté.
var age = 18;
if (age < 18) {
print(’Mineur ’);
} else if (age >= 18 && age < 65) {
print(’Majeur ’);
} else {
print(’Senior ’);
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 14 / 77
Contrôle du flow d’exécution
Les instructions conditionnelles
Switch case
Switch case
switch en Dart compare la valeur d’une variable à des constantes, exécute
le case correspondant avec break, et utilise default pour définir un
comportement par défaut si aucune constante ne correspond.
switch (day) {
case ’Monday ’:
print(’It’s the start of the week.’);
break;
case ’Tuesday ’:
case ’Wednesday ’:
.
.
default:
print(’Invalid day’);
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 15 / 77
Listes & Maps
Listes & Maps
Les instructions conditionnelles
Listes
Dart n’a pas de type tableau, mais un type List pouvant être initialisé avec
une taille fixe ou non.
Initialisation d’une liste avec des valeurs
Une liste peut être initialisée telle une liste JSON :
var list = [1, true , ’String ’, 5.6e5];
List realList = [1, true , ’String ’, 5.6e5];
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 17 / 77
Listes & Maps
Listes & Maps
Listes
Instanciation d’une liste vide de taille fixe
Pour créer une liste d’une taille fixe dont chacun des éléments est null, il
suffit d’indiquer la taille désirée dans le constructeur.
List fixedList = new List (4);
Ajouter des valeurs à une liste de taille fixe
Définir des valeurs pour les quatre éléments de cette liste se fera de la
manière suivante
fixedList [0] = 1;
fixedList [1] = true;
fixedList [2] = ’String ’;
fixedList [3] = 5.6e5;
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 18 / 77
Listes & Maps
Listes & Maps
Listes
Instanciation d’une liste vide de taille indéterminée
Instanciation d’une liste vide de taille indéterminée
Si nous souhaitons, une liste de taille indéterminée à l’avance, il nous suffit
de ne pas indiquer de valeur dans le constructeur de List.
List dynamicList = new List ();
Pour ajouter des éléments, nous devons utiliser la méthode add().
dynamicList.add (1);
dynamicList.add(true);
dynamicList.add(’String ’);
dynamicList.add (5.6 e5);
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 19 / 77
Listes & Maps
Listes & Maps
Maps
Une Map est une structure de données associant une clé à une valeur.
Initialisation d’une map avec des valeurs
Une Map peut être initialisée tel un objet JSON, pour lequel les clés
doivent être des chaînes de caractères :
var map = {’key’: ’value ’, ’1’: 1};
Map realMap = {’key’: ’value ’, ’1’: 1};
Heureusement, nous ne sommes pas limités à des clés de type String :
Map newMap = new Map();
newMap [1] = true;
newMap[’1’] = false;
print(newMap);
print(’${newMap [1]} ${newMap[’1’]}’);
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 20 / 77
Programmation orientée objet
Programmation orientée objet
Programmation orientée objet
Notion de POO en Dart
Présentation
La programmation orientée objet (POO) est une méthode de
structuration d’un programme en regroupant des propriétés et des
comportements associés dans des objets individuels.
Dart est un langage de programmation orienté objet et prend en
charge tous les concepts de la programmation orientée objet tels que
les classes, l’objet, l’héritage, le polymorphisme, les interfaces et les
classes abstraites.
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 22 / 77
Programmation orientée objet
methodes et fonctions
methodes et fonctions
Dart est similaire à bien des égards aux langages tels que Java et C, mais
sa syntaxe de fonction est plus proche de celle que l’on trouve dans
JavaScript que dans des langages plus fortement typés.
display () {
print(’Hello from Dart ’);
}
add (num1 , num2) {
return num1+num2;
}
// Better to specify Type annotations
int add(int num1 , int num2){
return num1+num2;
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 23 / 77
Programmation orientée objet
methodes et fonctions
Méthodes et Fonctions
Déclaration de fonctions avec la syntaxe =>
Pour les fonctions qui contiennent une seule expression, vous pouvez
utiliser une syntaxe abrégée.
La syntaxe => expr; est un raccourci pour return expr;
Seule une expression, et non une instruction, peut apparaître entre la
flèche (=>) et le point-virgule (;). Par exemple, vous ne pouvez pas
mettre une instruction if là, mais vous pouvez utiliser une expression
conditionnelle.
void display () { print(’Hello from Dart ’); }
var display = () => print(’Hello from Dart ’);
int add(int num1 , int num2){ return num1+num2; }
var add = (x,y) => x+y;
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 24 / 77
Programmation orientée objet
methodes et fonctions
Méthodes et Fonctions
Paramètres nommés optionnels
Encadrer les paramètres de la fonction entre [ ] les marque comme
paramètres optionnels positionnels.
int addition(int num1 , [int num2 = 5]) {
return num1 + num2;
}
// num2 est facultatif avec une valeur par d f a u t de 5
print(addition (20, 10)); // Affiche 30
print(addition (20)); // Affiche 25
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 25 / 77
Programmation orientée objet
Les classes et les objets
Les Classes
Example
Par exemple, une classe Personne : deux attributs et une méthode.
class Person {
String _name; // Utilisation du underscore pour
indiquer une variable p r i v e
int _age;
// Getter pour le nom
String get name => _name;
// Setter pour le nom
set name(String value) {
_name = value;
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 26 / 77
Programmation orientée objet
Les classes et les objets
Les Classes
// Getter pour l’ ge
int get age => _age;
// Setter pour l’ ge
set age(int value) { _age = value; }
// Methode pour afficher les d t a i l s de la personne
void displayDetails () { print(’Name: $_name , Age:
$_age ’); }
// M t h o d e toString pour obtenir une
r e p r s e n t a t i o n sous forme de c h a n e de la
classe
@override
String toString () { return ’Person{name: $name ,
age: $age}’; }
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 27 / 77
Programmation orientée objet
Les classes et les objets
Les types des constructeurs (Constructeur par défaut)
Constructeur par défaut
Un constructeur qui ne prend aucun paramètre. Il est créé
automatiquement si aucun constructeur n’est explicitement défini.
class Personne {
String nom;
int age;
Personne () : nom = ’’, age = 0 {
print(’Constructeur par d f a u t a p p e l ’);
}
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 28 / 77
Programmation orientée objet
Les classes et les objets
Les types des constructeurs (Constructeur par défaut)
Remarque
Les attributs doivent être initialisés au moins dans un constructeur au
lieu de mettre ’?’ pour indiquer qu’ils peuvent porter une valeur null.
Erreur !!!
class Personne {
String nom;
int age;
}
void main () {
var personneAvecParams = Personne ();
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 29 / 77
Programmation orientée objet
Les classes et les objets
Les types des constructeurs (Constructeur par défaut)
Remarque
Les attributs doivent être initialisés au moins dans un constructeur au
lieu de mettre ’?’ pour indiquer qu’ils peuvent porter une valeur null.
Correcte !!!
class Personne {
String ? nom;
int ? age;
}
void main () {
var personneAvecParams = Personne ();
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 30 / 77
Programmation orientée objet
Les classes et les objets
Les types des constructeurs (Constructeur avec des paramètres)
Constructeur avec des paramètres
Prend des paramètres pour initialiser les propriétés de la classe.
class Personne {
String nom;
int age;
Personne(this.nom , this.age);
}
void main () {
var personneAvecParams = Personne("rich" ,21);
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 31 / 77
Programmation orientée objet
Les classes et les objets
Les types des constructeurs (Constructeur avec des paramètres)
Constructeur avec des paramètres
Prend des paramètres pour initialiser les propriétés de la classe.
Erreur !!! c’est pas le cas (comme java)
class Personne {
String nom;
int age;
Personne(this.nom , this.age);
Personne(String n ) : this.name=n ,this.age=0 {}
}
void main () {
var personneAvecParams = Personne("rich" ,21);
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 32 / 77
Programmation orientée objet
Les classes et les objets
Les types des constructeurs (Constructeur avec des paramètres)
Remarque
Dans Dart, il ne prend pas en charge les constructeurs ayant le même
nom que la classe, même en cas de changement de signature de
constructeur.
Solution !
class Personne {
String nom;
int age;
Personne(this.nom , this.age);
Personne.avecParametres(String nom , int age)
: this.nom = nom , this.age = age {
}
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 33 / 77
Programmation orientée objet
Les classes et les objets
Les types des constructeurs (Constructeur avec des paramètres)
Remarque
Dans Dart, il ne prend pas en charge les constructeurs ayant le même
nom que la classe, même en cas de changement de signature de
constructeur.
Solution !
var p1 = Personne("rich" ,21);
var p2 = Personne.avecParametres("Br" ,20);
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 34 / 77
Programmation orientée objet
Les classes et les objets
Les types des constructeurs (Constructeur de redirection)
Constructeur de redirection
Vous pouvez rediriger un constructeur vers un autre.
class Personne {
String nom;
int age;
Personne.avecParametres(String nom , int age) :
nom = nom , age = age {}
Personne.avecNom(String nom) :
this. avecParametres (nom , 0);
}
var personneAvecParams = Personne.avecNom(’RICH ’);
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 35 / 77
Programmation orientée objet
L’héritage d’une classe normale
extends
class Person {
String name;
int age;
Person(this.name , this.age);
void displayDetails () {
print(’Name: $name , Age: $age ’);}
}
class Employee extends Person {
String jobTitle;
Employee(String name , int age , this.jobTitle) :
super(name , age);
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 36 / 77
Programmation orientée objet
L’héritage d’une classe normale
extends
class Employee extends Person {
String jobTitle;
Employee(String name , int age , this.jobTitle) :
super(name , age);
void displayDetails_Employee () {
super.displayDetails ();
print(’Job Title: $jobTitle ’);
}
}
Employee em = Employee(’Ali’, 30, ’Data Scientist ’);
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 37 / 77
Programmation orientée objet
L’héritage d’une classe normale
Utilisation des méthodes
La class Employee continet :
✓name , age , displayDetails() ⇒ hériter de la class Person
✓jobTitle , displayDetails_Employee()
em. displayDetails ();
em. displayDetails_Employee ();
Person emp = Employee(’Alice ’, 25, ’Engineer ’);
emp.displayDetails ();
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 38 / 77
Programmation orientée objet
L’héritage d’une classe normale
Utilisation des méthodes
La class Employee continet :
✓name , age , displayDetails() ⇒ hériter de la class Person
✓jobTitle , displayDetails_Employee()
Person emp = Employee(’Alice ’, 25, ’Engineer ’);
emp. displayDetails_Employee ();
Cela génère une erreur !!
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 39 / 77
Programmation orientée objet
L’héritage
Problème d’utilisation des méthodes
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 40 / 77
Programmation orientée objet
L’héritage
La solution
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 41 / 77
Programmation orientée objet
L’héritage d’une classe normale
Redéfinir une méthode.
Remarque
Dans Dart, le type pris en compte pour les objets est le type apparent .
Ainsi, pour utiliser les méthodes de la classe fille, il est nécessaire que ces
méthodes existent déjà dans le type apparent . Ensuite, il est possible de
les redéfinir dans le type fils, et dans ce cas, c’est la méthode de la classe
fille qui sera exécutée.
solution : Redéfinir la même signature de la méthode displayDetails dans
la classe fille.
@override
void displayDetails () {
super.displayDetails ();
print(’Job Title: $jobTitle ’);
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 42 / 77
Programmation orientée objet
Les classes abstraites et interface
L’héritage d’une classe abstraite
abstract class Animal {
int nbrPart =0;
int ? age ;
Animal(this.nbrPart ,this.age);
void makeSound (); // M t h o d e abstraite
}
class Mouton extends Animal {
Mouton(int age) : super (4,age);
@override
void makeSound () {
print(’belement !’);
}
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 43 / 77
Programmation orientée objet
Supposent que
classe abstraite
abstract class Animal {
int nbrPart =0;
int ? age ;
Animal(this.nbrPart ,this.age);
void makeSound (); // Methode abstraite
void test (){
print(’test 111’);
}
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 44 / 77
Programmation orientée objet
Les interfaces
implements
Dans Dart, chaque classe peut être considérée comme une interface et
être implémentée par d’autres classes.
Erreur !!!
class Cat implements Animal {
Cat(int age) : super(4,age);
@override
void makeSound () {
print(’Meow!’);
}
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 45 / 77
Programmation orientée objet
Les interfaces
implements
On peut aussi spécifier la déclaration d’une interface avec :
interface class Animal {
int nbrPart =0;
int ? age ;
}
Remarque
C’est la même chose que la déclaration d’une classe simple, on peut utiliser
extends pour l’héritage ou implements.
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 46 / 77
Programmation orientée objet
Les interfaces
Implements
Lorsque vous implémentez une classe ou interface en Dart, devez-vous
obligatoirement redéfinir toutes les méthodes et les attributs, même s’ils
sont déjà définis dans la classe mère que vous implémentez.
abstract class Animal {
int nbrPart =0;
int ? age ;
Animal(this.nbrPart ,this.age);
void makeSound (); // Methode abstraite
void test (){
print(’test 111’); }
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 47 / 77
Programmation orientée objet
Les interfaces
implements
class Cat implements Animal {
@override
int nbrPart ;
int ? age ;
Cat():this.nbrPart =5,this.age =8{}
@override
void makeSound () {
print(’Meow!’);
}
@override
void test (){
print(’test 222’);
}
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 48 / 77
Programmation orientée objet
les classes mixin
Un mixin est une façon de réutiliser une classe dans plusieurs hiérarchies de
classes sans utiliser l’héritage traditionnel
Un mixin est une classe qui ne peut pas être instanciée directement, mais
ses membres (méthodes et propriétés) peuvent être utilisés par d’autres
classes en les incluant à l’aide du mot-clé with
mixin Mixi_test {
int a=10;
void log(String message) {
print("Log: $message");
}
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 49 / 77
Programmation orientée objet
les classes mixin
Bien que les mixins et les interfaces servent à des objectifs similaires en
favorisant la réutilisation de code, il y a des différences fondamentales entre
les deux concepts
Mixin VS Interface
✓Les méthodes et les propriétés du mixin sont effectivement copiées dans
la classe, ce qui permet à la classe d’utiliser ces fonctionnalités directement.
✓Une classe qui implémente une interface doit fournir son propre code
pour chaque méthode déclarée dans l’interface.
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 50 / 77
Programmation orientée objet
les classes mixin
with
Certains avantages similaires à ceux de l’héritage multiple, mais d’une
manière plus souple et contrôlée .
mixin A {
void methodA () {
print(’ M t h o d e A’);
}}
mixin B {
void methodB () {
print(’ M t h o d e B’);
}}
class MaClasse with A, B {
void maMethode () {
print(’Ma Methode ’);
} }
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 51 / 77
les Frameworks Dart
les Frameworks Dart
Frameworks Dart
Flutter.
Définition
Description : Flutter est un framework open-source de Google pour
construire des applications mobiles, web et de bureau à partir d’un
seul codebase.
Utilisation : Principalement pour le développement d’applications
mobiles, mais également pour le web et le bureau.
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 53 / 77
les Frameworks Dart
Frameworks Dart
AngularDart.
Définition
Description : AngularDart est une version de Dart pour le framework
web Angular.
Utilisation : Développement d’applications web modernes avec une
forte architecture.
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 54 / 77
les Frameworks Dart
Frameworks Dart
Aqueduct.
Définition
Description : Aqueduct est un framework Dart qui facilite la création
de serveurs HTTP RESTful. Il intègre des fonctionnalités telles que la
gestion de l’authentification, des bases de données et des routes.
Utilisation : Développement de back-ends pour les applications web
et mobiles.
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 55 / 77
Les outils d’environnements
Les outils d’environnements
Environnements de développement (IDE)
Environnements de développement intégrés (IDE).
Remarque
Les développeurs Dart peuvent utiliser divers IDE tels que IntelliJ IDEA,
Visual Studio Code et Android Studio pour écrire, déboguer et tester leur
code Dart de manière efficace.
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 57 / 77
Les outils d’environnements
Les outils d’environnements
SDK
Configuration de Sdk Dart
Étape 1 - Installer le SDK Dart
téléchargez et installez le SDK Dart à partir du site officiel :
https://dart.dev/get-dart/archive
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 59 / 77
Les outils d’environnements
SDK
Configuration du SDK Dart
Étape 2 - Extraire le dossier Dart
Extraites le contenu du fichier zip téléchargé pour obtenir le dossier
"dart-sdk". Déplacez ce dossier à l’emplacement souhaité sur votre
ordinateur, par exemple dans le répertoire "C:".
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 60 / 77
Les outils d’environnements
SDK
Configuration du SDK Dart
Étape 3 - Ajouter le chemin au SDK dans les variables
d’environnement
Ouvrez le dossier "dart-sdk" et copiez le chemin d’accès. Ensuite, ajoutez
ce chemin à la variable d’environnement "PATH" de votre système. Cela
permettra à Visual Studio Code de trouver le SDK Dart lorsqu’il en aura
besoin.
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 61 / 77
Les outils d’environnements
SDK
Vérification de l’installation de Dart
Étape 4 - Vérifier l’installation de Dart
Ouvrez l’invite de commande et tapez la commande dart -v. Appuyez sur
Entrée pour exécuter la commande. Si Dart est correctement installé, vous
verrez sa version s’afficher dans la sortie de la commande.
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 62 / 77
Les outils d’environnements
VS Code
Installation de l’extension Dart dans Visual Studio Code
Étape 5 - Installer l’extension Dart
Dans Visual Studio Code, ouvrez l’onglet des extensions en cliquant sur
l’icône des extensions sur la barre latérale ou en utilisant le raccourci clavier
Ctrl+Shift+X. Recherchez "Dart" dans la barre de recherche des
extensions. Cliquez sur "Installer" pour l’extension proposée par Dart Code.
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 63 / 77
Atelier : Système de Gestion de Stock de
Produits
Atelier : Système de Gestion de Stock de Produits
Cahier des charges
Système de Gestion de Stock de Produits
Objectif :
Développer une application de gestion de stock de produits utilisant le
langage de programmation Dart, avec les fonctionnalités CRUD de base.
Fonctionnalités requises :
Ajouter, afficher, modifier et supprimer des produits avec leurs détails
(nom, description, prix, quantité).
echercher des produits par nom et afficher les détails correspondants.
Gérer le stock en affichant la quantité totale de tout les produits
Authentification utilisateur pour que seuls les utilisateurs authentifiés
peuvent effectuer des opérations CRUD sur les produits.
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 65 / 77
Atelier : Implémentation
Atelier : Implémentation
Implémentation
Class Produit
Remarque
la lignes de l’importation importe la bibliothèque dart:io, qui fournit des
fonctionnalités pour les entrées/sorties, nécessaires pour interagir avec la
console. la class product définit un modèle de produit avec des propriétés
telles que le nom, la description, le prix et la quantité.
import ’dart:io’;
abstract class Product {
String name;
String description;
double price;
int quantity;
Product(this.name , this.description , this.price ,
this.quantity);
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 67 / 77
Atelier : Implémentation
Implémentation
Class PC et Portable
Remarque
Les classes PC et Portable héritent des propriétés de la classe mère Product.
class PC extends Product {
String ram;
String processor;
}
class Portable extends Product {
String camera;
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 68 / 77
Atelier : Implémentation
Implémentation
Class StockManager
Remarque
La classe StockManager gère le stock de produits.
Elle contient des méthodes pour ajouter, afficher, mettre à jour,
supprimer, rechercher des produits, et pour obtenir la quantité totale
en stock ainsi que pour afficher les quantités par type de produit.
class StockManager {
List <Product > products = []; // Liste de produits
void addProduct(Product product) {
// Methode pour ajouter un nouveau produit
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 69 / 77
Atelier : Implémentation
Implémentation
Class StockManager
void displayAllProducts () {
// Methode pour afficher tous les produits
}
void updateProduct(int index ,Product product) {
// Methode pour Modifier un produit
}
void deleteProduct(int index) {
// Methode pour supprimer un produit
}
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 70 / 77
Atelier : Implémentation
Implémentation
Class StockManager
void searchProductByName (String name) {
// Methode pour rechercher un produit par nom
}
int getTotalQuantity () {
// Methode pour obtenir la q u a n t i t totale en
stock
}
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 71 / 77
Atelier : Implémentation
Implémentation
Class UserManager
Remarque
La classe UserManager gère les utilisateurs et leurs mots de passe.
Elle contient une méthode authenticate pour vérifier les informations
d’identification fournies par l’utilisateur.
class UserManager {
Map <String , String > users = {’admin ’: ’Khalil123 ’};
// Utilisateurs avec leurs mots de passe
bool authenticate (String username , String password)
{
// Methode pour authentifier les utilisateurs
}
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 72 / 77
Atelier : Implémentation
Implémentation
Fonction main
Remarque
La fonction main est le point d’entrée du programme.
Elle initialise les gestionnaires d’utilisateurs et de stock, authentifie
l’utilisateur, affiche le menu et gère les actions de l’utilisateur en
fonction de ses choix.
void main () {
// Initialisation du UserManager et du StockManager
// Authentification de l’utilisateur
// Affichage du menu et gestion des actions de
l’utilisateur
}
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 73 / 77
Atelier : Implémentation
Conclusion
Conclusion
Nous avons exploré ses principales caractéristiques, notamment sa
syntaxe claire et concise. De plus, nous avons examiné certains des
frameworks et outils essentiels qui l’accompagnent, tels que Flutter
pour le développement d’applications multiplateformes et AngularDart
pour la création d’applications web dynamiques.
Enfin, nous avons présenté une démonstration pratique de l’utilisation
de Dart dans un scénario de gestion de stock, mettant en lumière la
simplicité et la puissance de ce langage dans le développement
d’applications.
en résumé Dart est un langage moderne et polyvalent, offrant un large
éventail de fonctionnalités qui en font un choix idéal pour le
développement d’applications mobiles et web. C’est une solution
performante et fiable pour les développeurs .
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 74 / 77
Atelier : Implémentation
Bibliographie
https://www.youtube.com/watch?v=nEky-iolnHQ&t=3908s
https://dart.dev/guides
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 75 / 77
Atelier : Implémentation
Merci pour votre attention
Merci !
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 76 / 77
Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 77 / 77

More Related Content

Similar to DartttttttttttttttttttttttversionFinal.pdf

Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018salah fenni
 
Cours langage c
Cours langage cCours langage c
Cours langage ccoursuniv
 
Beyond F5 - windbg et .Net
Beyond F5 - windbg et .NetBeyond F5 - windbg et .Net
Beyond F5 - windbg et .NetYann Schwartz
 
De java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDe java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDidier Plaindoux
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovyguest6e3bed
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation GroovyJS Bournival
 
Codedarmor 2012 - 13/11 - Dart, un langage moderne pour le web
Codedarmor 2012 - 13/11 - Dart, un langage moderne pour le webCodedarmor 2012 - 13/11 - Dart, un langage moderne pour le web
Codedarmor 2012 - 13/11 - Dart, un langage moderne pour le webcodedarmor
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesECAM Brussels Engineering School
 
Enib cours c.a.i. web - séance #5 - groovy
Enib   cours c.a.i. web - séance #5 - groovyEnib   cours c.a.i. web - séance #5 - groovy
Enib cours c.a.i. web - séance #5 - groovyHoracio Gonzalez
 
Interface collectionsinter
Interface collectionsinterInterface collectionsinter
Interface collectionsinterRYMAA
 
Interception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelInterception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelThierry Gayet
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptxolfaharrabi2
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniShellmates
 

Similar to DartttttttttttttttttttttttversionFinal.pdf (20)

Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018
 
Cours langage c
Cours langage cCours langage c
Cours langage c
 
Beyond F5 - windbg et .Net
Beyond F5 - windbg et .NetBeyond F5 - windbg et .Net
Beyond F5 - windbg et .Net
 
fortran 2.pdf
fortran 2.pdffortran 2.pdf
fortran 2.pdf
 
Ruby Pour RoR
Ruby Pour RoRRuby Pour RoR
Ruby Pour RoR
 
Langage Perl
Langage PerlLangage Perl
Langage Perl
 
Language-C.ppt
Language-C.pptLanguage-C.ppt
Language-C.ppt
 
De java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDe java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvements
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
Dart JUG 2013
Dart JUG 2013Dart JUG 2013
Dart JUG 2013
 
Codedarmor 2012 - 13/11 - Dart, un langage moderne pour le web
Codedarmor 2012 - 13/11 - Dart, un langage moderne pour le webCodedarmor 2012 - 13/11 - Dart, un langage moderne pour le web
Codedarmor 2012 - 13/11 - Dart, un langage moderne pour le web
 
TAD (1).pptx
TAD (1).pptxTAD (1).pptx
TAD (1).pptx
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
Enib cours c.a.i. web - séance #5 - groovy
Enib   cours c.a.i. web - séance #5 - groovyEnib   cours c.a.i. web - séance #5 - groovy
Enib cours c.a.i. web - séance #5 - groovy
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Interface collectionsinter
Interface collectionsinterInterface collectionsinter
Interface collectionsinter
 
Interception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelInterception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appel
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptx
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 

DartttttttttttttttttttttttversionFinal.pdf

  • 1. Le langage Dart Présenter par RICH Brahim KHALIL Abdelhafid TANTOUNI Mohamed Professeur : O.bourkoukou Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 1 / 77
  • 2. Outline 1 Introduction 2 Contrôle du flow d’exécution 3 Listes & Maps 4 Programmation orientée objet 5 les Frameworks Dart 6 Les outils d’environnements 7 Atelier : Système de Gestion de Stock de Produits Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 2 / 77
  • 4. Introduction Introduction Langage Dart Définition Dart est Langage de programmation, développé par Google, utilisé pour le développement logiciel, notamment pour les applications mobiles (avec Flutter) et les applications web. Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 4 / 77
  • 5. Introduction Historique et Version de lang Dart Origine et Principales Versions Origine de Dart: ▶ Développé par Google en 2011. Principales versions : ▶ Dart 1.0 (novembre 2013) : Première version stable. ▶ Dart 2.0 (août 2018) : Introduction de la syntaxe null safety. ▶ Interruptions ▶ Dart 2.12 (février 2021) : Améliorations de la performance et de la productivité. Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 5 / 77
  • 6. Introduction Principes de conception de Dart et ses objectifs les principes et les objectifs principale Simplicité , Performance , Productivité , Sécurité , Flexibilité Simplicité : Dart vise à être facile à apprendre et à utiliser pour les développeurs., Performance :Optimisé pour offrir des performances élevées dans divers contextes d’exécution. Productivité : Fournit des outils et des fonctionnalités pour accroître la productivité des développeurs. Sécurité :Intégration de la sécurité au niveau du langage pour réduire les erreurs et les failles de sécurité. Flexibilité : Permet une programmation impérative et orientée objet, ainsi que la programmation fonctionnelle. Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 6 / 77
  • 7. Contrôle du flow d’exécution
  • 8. Contrôle du flow d’exécution Les Boucles for for in foreach while Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 8 / 77
  • 9. Contrôle du flow d’exécution Les Boucles For For La boucle que l’on retrouve dans presque tous les langages de programmation est aussi présente en Dart. List <int > list = [1, 2, 3, 4, 5, 6, 7, 8, 9]; int sum = 0; for (int i = 0; i < list.length; i++) { sum += list[i]; } assert(sum == 45); Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 9 / 77
  • 10. Contrôle du flow d’exécution Les Boucles For in For in Il est aussi possible d’itérer sur tous les éléments d’une collection sans utiliser de compteur List <int > list = [1, 2, 3, 4, 5, 6, 7, 8, 9]; int sum = 0; // for (Type variable in collection) { } for (int element in list) { sum += element; } assert(sum == 45); Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 10 / 77
  • 11. Contrôle du flow d’exécution Les Boucles Foreach Foreach Les collections et les maps ont une méthode forEach() permettant d’itérer sur chacun des éléments. Cette méthode prend en paramètre une closure - fonction capturant une variable (sum dans le cas présent) hors de son scope. Le seul paramètre de cette closure est e, où e est un élément de la liste, qui au cours de l’itération sur cette liste prendra les différentes valeurs des différents éléments de la liste. Le corps de la fonction est suivi de l’opérateur => et est composé d’une seule ligne : sum += e. List <int > list = [1, 2, 3, 4, 5, 6, 7, 8, 9]; //---- foreach int sum = 0; list.forEach ((int e) => sum += e); assert(sum == 45); Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 11 / 77
  • 12. Contrôle du flow d’exécution Les Boucles while while Une boucle do-while évalue une condition après l’exécution de la boucle. Le code est par conséquent exécuté au moins une fois. List <int > list = [1, 2, 3, 4, 5, 6, 7, 8, 9]; int sum = 0; int i = 0; do { sum += list[i]; i++; } while (i < list.length); assert(sum == 45); Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 12 / 77
  • 13. Contrôle du flow d’exécution Les instructions conditionnelles if . . . else Switch case Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 13 / 77
  • 14. Contrôle du flow d’exécution Les instructions conditionnelles if . . . else if . . . else Si la condition est vraie, le code qui suit est exécuté, sinon le code après else est exécuté. var age = 18; if (age < 18) { print(’Mineur ’); } else if (age >= 18 && age < 65) { print(’Majeur ’); } else { print(’Senior ’); } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 14 / 77
  • 15. Contrôle du flow d’exécution Les instructions conditionnelles Switch case Switch case switch en Dart compare la valeur d’une variable à des constantes, exécute le case correspondant avec break, et utilise default pour définir un comportement par défaut si aucune constante ne correspond. switch (day) { case ’Monday ’: print(’It’s the start of the week.’); break; case ’Tuesday ’: case ’Wednesday ’: . . default: print(’Invalid day’); } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 15 / 77
  • 17. Listes & Maps Les instructions conditionnelles Listes Dart n’a pas de type tableau, mais un type List pouvant être initialisé avec une taille fixe ou non. Initialisation d’une liste avec des valeurs Une liste peut être initialisée telle une liste JSON : var list = [1, true , ’String ’, 5.6e5]; List realList = [1, true , ’String ’, 5.6e5]; Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 17 / 77
  • 18. Listes & Maps Listes & Maps Listes Instanciation d’une liste vide de taille fixe Pour créer une liste d’une taille fixe dont chacun des éléments est null, il suffit d’indiquer la taille désirée dans le constructeur. List fixedList = new List (4); Ajouter des valeurs à une liste de taille fixe Définir des valeurs pour les quatre éléments de cette liste se fera de la manière suivante fixedList [0] = 1; fixedList [1] = true; fixedList [2] = ’String ’; fixedList [3] = 5.6e5; Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 18 / 77
  • 19. Listes & Maps Listes & Maps Listes Instanciation d’une liste vide de taille indéterminée Instanciation d’une liste vide de taille indéterminée Si nous souhaitons, une liste de taille indéterminée à l’avance, il nous suffit de ne pas indiquer de valeur dans le constructeur de List. List dynamicList = new List (); Pour ajouter des éléments, nous devons utiliser la méthode add(). dynamicList.add (1); dynamicList.add(true); dynamicList.add(’String ’); dynamicList.add (5.6 e5); Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 19 / 77
  • 20. Listes & Maps Listes & Maps Maps Une Map est une structure de données associant une clé à une valeur. Initialisation d’une map avec des valeurs Une Map peut être initialisée tel un objet JSON, pour lequel les clés doivent être des chaînes de caractères : var map = {’key’: ’value ’, ’1’: 1}; Map realMap = {’key’: ’value ’, ’1’: 1}; Heureusement, nous ne sommes pas limités à des clés de type String : Map newMap = new Map(); newMap [1] = true; newMap[’1’] = false; print(newMap); print(’${newMap [1]} ${newMap[’1’]}’); Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 20 / 77
  • 22. Programmation orientée objet Programmation orientée objet Notion de POO en Dart Présentation La programmation orientée objet (POO) est une méthode de structuration d’un programme en regroupant des propriétés et des comportements associés dans des objets individuels. Dart est un langage de programmation orienté objet et prend en charge tous les concepts de la programmation orientée objet tels que les classes, l’objet, l’héritage, le polymorphisme, les interfaces et les classes abstraites. Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 22 / 77
  • 23. Programmation orientée objet methodes et fonctions methodes et fonctions Dart est similaire à bien des égards aux langages tels que Java et C, mais sa syntaxe de fonction est plus proche de celle que l’on trouve dans JavaScript que dans des langages plus fortement typés. display () { print(’Hello from Dart ’); } add (num1 , num2) { return num1+num2; } // Better to specify Type annotations int add(int num1 , int num2){ return num1+num2; } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 23 / 77
  • 24. Programmation orientée objet methodes et fonctions Méthodes et Fonctions Déclaration de fonctions avec la syntaxe => Pour les fonctions qui contiennent une seule expression, vous pouvez utiliser une syntaxe abrégée. La syntaxe => expr; est un raccourci pour return expr; Seule une expression, et non une instruction, peut apparaître entre la flèche (=>) et le point-virgule (;). Par exemple, vous ne pouvez pas mettre une instruction if là, mais vous pouvez utiliser une expression conditionnelle. void display () { print(’Hello from Dart ’); } var display = () => print(’Hello from Dart ’); int add(int num1 , int num2){ return num1+num2; } var add = (x,y) => x+y; Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 24 / 77
  • 25. Programmation orientée objet methodes et fonctions Méthodes et Fonctions Paramètres nommés optionnels Encadrer les paramètres de la fonction entre [ ] les marque comme paramètres optionnels positionnels. int addition(int num1 , [int num2 = 5]) { return num1 + num2; } // num2 est facultatif avec une valeur par d f a u t de 5 print(addition (20, 10)); // Affiche 30 print(addition (20)); // Affiche 25 Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 25 / 77
  • 26. Programmation orientée objet Les classes et les objets Les Classes Example Par exemple, une classe Personne : deux attributs et une méthode. class Person { String _name; // Utilisation du underscore pour indiquer une variable p r i v e int _age; // Getter pour le nom String get name => _name; // Setter pour le nom set name(String value) { _name = value; } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 26 / 77
  • 27. Programmation orientée objet Les classes et les objets Les Classes // Getter pour l’ ge int get age => _age; // Setter pour l’ ge set age(int value) { _age = value; } // Methode pour afficher les d t a i l s de la personne void displayDetails () { print(’Name: $_name , Age: $_age ’); } // M t h o d e toString pour obtenir une r e p r s e n t a t i o n sous forme de c h a n e de la classe @override String toString () { return ’Person{name: $name , age: $age}’; } } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 27 / 77
  • 28. Programmation orientée objet Les classes et les objets Les types des constructeurs (Constructeur par défaut) Constructeur par défaut Un constructeur qui ne prend aucun paramètre. Il est créé automatiquement si aucun constructeur n’est explicitement défini. class Personne { String nom; int age; Personne () : nom = ’’, age = 0 { print(’Constructeur par d f a u t a p p e l ’); } } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 28 / 77
  • 29. Programmation orientée objet Les classes et les objets Les types des constructeurs (Constructeur par défaut) Remarque Les attributs doivent être initialisés au moins dans un constructeur au lieu de mettre ’?’ pour indiquer qu’ils peuvent porter une valeur null. Erreur !!! class Personne { String nom; int age; } void main () { var personneAvecParams = Personne (); } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 29 / 77
  • 30. Programmation orientée objet Les classes et les objets Les types des constructeurs (Constructeur par défaut) Remarque Les attributs doivent être initialisés au moins dans un constructeur au lieu de mettre ’?’ pour indiquer qu’ils peuvent porter une valeur null. Correcte !!! class Personne { String ? nom; int ? age; } void main () { var personneAvecParams = Personne (); } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 30 / 77
  • 31. Programmation orientée objet Les classes et les objets Les types des constructeurs (Constructeur avec des paramètres) Constructeur avec des paramètres Prend des paramètres pour initialiser les propriétés de la classe. class Personne { String nom; int age; Personne(this.nom , this.age); } void main () { var personneAvecParams = Personne("rich" ,21); } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 31 / 77
  • 32. Programmation orientée objet Les classes et les objets Les types des constructeurs (Constructeur avec des paramètres) Constructeur avec des paramètres Prend des paramètres pour initialiser les propriétés de la classe. Erreur !!! c’est pas le cas (comme java) class Personne { String nom; int age; Personne(this.nom , this.age); Personne(String n ) : this.name=n ,this.age=0 {} } void main () { var personneAvecParams = Personne("rich" ,21); } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 32 / 77
  • 33. Programmation orientée objet Les classes et les objets Les types des constructeurs (Constructeur avec des paramètres) Remarque Dans Dart, il ne prend pas en charge les constructeurs ayant le même nom que la classe, même en cas de changement de signature de constructeur. Solution ! class Personne { String nom; int age; Personne(this.nom , this.age); Personne.avecParametres(String nom , int age) : this.nom = nom , this.age = age { } } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 33 / 77
  • 34. Programmation orientée objet Les classes et les objets Les types des constructeurs (Constructeur avec des paramètres) Remarque Dans Dart, il ne prend pas en charge les constructeurs ayant le même nom que la classe, même en cas de changement de signature de constructeur. Solution ! var p1 = Personne("rich" ,21); var p2 = Personne.avecParametres("Br" ,20); Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 34 / 77
  • 35. Programmation orientée objet Les classes et les objets Les types des constructeurs (Constructeur de redirection) Constructeur de redirection Vous pouvez rediriger un constructeur vers un autre. class Personne { String nom; int age; Personne.avecParametres(String nom , int age) : nom = nom , age = age {} Personne.avecNom(String nom) : this. avecParametres (nom , 0); } var personneAvecParams = Personne.avecNom(’RICH ’); Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 35 / 77
  • 36. Programmation orientée objet L’héritage d’une classe normale extends class Person { String name; int age; Person(this.name , this.age); void displayDetails () { print(’Name: $name , Age: $age ’);} } class Employee extends Person { String jobTitle; Employee(String name , int age , this.jobTitle) : super(name , age); } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 36 / 77
  • 37. Programmation orientée objet L’héritage d’une classe normale extends class Employee extends Person { String jobTitle; Employee(String name , int age , this.jobTitle) : super(name , age); void displayDetails_Employee () { super.displayDetails (); print(’Job Title: $jobTitle ’); } } Employee em = Employee(’Ali’, 30, ’Data Scientist ’); Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 37 / 77
  • 38. Programmation orientée objet L’héritage d’une classe normale Utilisation des méthodes La class Employee continet : ✓name , age , displayDetails() ⇒ hériter de la class Person ✓jobTitle , displayDetails_Employee() em. displayDetails (); em. displayDetails_Employee (); Person emp = Employee(’Alice ’, 25, ’Engineer ’); emp.displayDetails (); Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 38 / 77
  • 39. Programmation orientée objet L’héritage d’une classe normale Utilisation des méthodes La class Employee continet : ✓name , age , displayDetails() ⇒ hériter de la class Person ✓jobTitle , displayDetails_Employee() Person emp = Employee(’Alice ’, 25, ’Engineer ’); emp. displayDetails_Employee (); Cela génère une erreur !! Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 39 / 77
  • 40. Programmation orientée objet L’héritage Problème d’utilisation des méthodes Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 40 / 77
  • 41. Programmation orientée objet L’héritage La solution Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 41 / 77
  • 42. Programmation orientée objet L’héritage d’une classe normale Redéfinir une méthode. Remarque Dans Dart, le type pris en compte pour les objets est le type apparent . Ainsi, pour utiliser les méthodes de la classe fille, il est nécessaire que ces méthodes existent déjà dans le type apparent . Ensuite, il est possible de les redéfinir dans le type fils, et dans ce cas, c’est la méthode de la classe fille qui sera exécutée. solution : Redéfinir la même signature de la méthode displayDetails dans la classe fille. @override void displayDetails () { super.displayDetails (); print(’Job Title: $jobTitle ’); } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 42 / 77
  • 43. Programmation orientée objet Les classes abstraites et interface L’héritage d’une classe abstraite abstract class Animal { int nbrPart =0; int ? age ; Animal(this.nbrPart ,this.age); void makeSound (); // M t h o d e abstraite } class Mouton extends Animal { Mouton(int age) : super (4,age); @override void makeSound () { print(’belement !’); } } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 43 / 77
  • 44. Programmation orientée objet Supposent que classe abstraite abstract class Animal { int nbrPart =0; int ? age ; Animal(this.nbrPart ,this.age); void makeSound (); // Methode abstraite void test (){ print(’test 111’); } } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 44 / 77
  • 45. Programmation orientée objet Les interfaces implements Dans Dart, chaque classe peut être considérée comme une interface et être implémentée par d’autres classes. Erreur !!! class Cat implements Animal { Cat(int age) : super(4,age); @override void makeSound () { print(’Meow!’); } } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 45 / 77
  • 46. Programmation orientée objet Les interfaces implements On peut aussi spécifier la déclaration d’une interface avec : interface class Animal { int nbrPart =0; int ? age ; } Remarque C’est la même chose que la déclaration d’une classe simple, on peut utiliser extends pour l’héritage ou implements. Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 46 / 77
  • 47. Programmation orientée objet Les interfaces Implements Lorsque vous implémentez une classe ou interface en Dart, devez-vous obligatoirement redéfinir toutes les méthodes et les attributs, même s’ils sont déjà définis dans la classe mère que vous implémentez. abstract class Animal { int nbrPart =0; int ? age ; Animal(this.nbrPart ,this.age); void makeSound (); // Methode abstraite void test (){ print(’test 111’); } } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 47 / 77
  • 48. Programmation orientée objet Les interfaces implements class Cat implements Animal { @override int nbrPart ; int ? age ; Cat():this.nbrPart =5,this.age =8{} @override void makeSound () { print(’Meow!’); } @override void test (){ print(’test 222’); } } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 48 / 77
  • 49. Programmation orientée objet les classes mixin Un mixin est une façon de réutiliser une classe dans plusieurs hiérarchies de classes sans utiliser l’héritage traditionnel Un mixin est une classe qui ne peut pas être instanciée directement, mais ses membres (méthodes et propriétés) peuvent être utilisés par d’autres classes en les incluant à l’aide du mot-clé with mixin Mixi_test { int a=10; void log(String message) { print("Log: $message"); } } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 49 / 77
  • 50. Programmation orientée objet les classes mixin Bien que les mixins et les interfaces servent à des objectifs similaires en favorisant la réutilisation de code, il y a des différences fondamentales entre les deux concepts Mixin VS Interface ✓Les méthodes et les propriétés du mixin sont effectivement copiées dans la classe, ce qui permet à la classe d’utiliser ces fonctionnalités directement. ✓Une classe qui implémente une interface doit fournir son propre code pour chaque méthode déclarée dans l’interface. Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 50 / 77
  • 51. Programmation orientée objet les classes mixin with Certains avantages similaires à ceux de l’héritage multiple, mais d’une manière plus souple et contrôlée . mixin A { void methodA () { print(’ M t h o d e A’); }} mixin B { void methodB () { print(’ M t h o d e B’); }} class MaClasse with A, B { void maMethode () { print(’Ma Methode ’); } } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 51 / 77
  • 53. les Frameworks Dart Frameworks Dart Flutter. Définition Description : Flutter est un framework open-source de Google pour construire des applications mobiles, web et de bureau à partir d’un seul codebase. Utilisation : Principalement pour le développement d’applications mobiles, mais également pour le web et le bureau. Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 53 / 77
  • 54. les Frameworks Dart Frameworks Dart AngularDart. Définition Description : AngularDart est une version de Dart pour le framework web Angular. Utilisation : Développement d’applications web modernes avec une forte architecture. Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 54 / 77
  • 55. les Frameworks Dart Frameworks Dart Aqueduct. Définition Description : Aqueduct est un framework Dart qui facilite la création de serveurs HTTP RESTful. Il intègre des fonctionnalités telles que la gestion de l’authentification, des bases de données et des routes. Utilisation : Développement de back-ends pour les applications web et mobiles. Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 55 / 77
  • 57. Les outils d’environnements Environnements de développement (IDE) Environnements de développement intégrés (IDE). Remarque Les développeurs Dart peuvent utiliser divers IDE tels que IntelliJ IDEA, Visual Studio Code et Android Studio pour écrire, déboguer et tester leur code Dart de manière efficace. Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 57 / 77
  • 59. Les outils d’environnements SDK Configuration de Sdk Dart Étape 1 - Installer le SDK Dart téléchargez et installez le SDK Dart à partir du site officiel : https://dart.dev/get-dart/archive Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 59 / 77
  • 60. Les outils d’environnements SDK Configuration du SDK Dart Étape 2 - Extraire le dossier Dart Extraites le contenu du fichier zip téléchargé pour obtenir le dossier "dart-sdk". Déplacez ce dossier à l’emplacement souhaité sur votre ordinateur, par exemple dans le répertoire "C:". Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 60 / 77
  • 61. Les outils d’environnements SDK Configuration du SDK Dart Étape 3 - Ajouter le chemin au SDK dans les variables d’environnement Ouvrez le dossier "dart-sdk" et copiez le chemin d’accès. Ensuite, ajoutez ce chemin à la variable d’environnement "PATH" de votre système. Cela permettra à Visual Studio Code de trouver le SDK Dart lorsqu’il en aura besoin. Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 61 / 77
  • 62. Les outils d’environnements SDK Vérification de l’installation de Dart Étape 4 - Vérifier l’installation de Dart Ouvrez l’invite de commande et tapez la commande dart -v. Appuyez sur Entrée pour exécuter la commande. Si Dart est correctement installé, vous verrez sa version s’afficher dans la sortie de la commande. Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 62 / 77
  • 63. Les outils d’environnements VS Code Installation de l’extension Dart dans Visual Studio Code Étape 5 - Installer l’extension Dart Dans Visual Studio Code, ouvrez l’onglet des extensions en cliquant sur l’icône des extensions sur la barre latérale ou en utilisant le raccourci clavier Ctrl+Shift+X. Recherchez "Dart" dans la barre de recherche des extensions. Cliquez sur "Installer" pour l’extension proposée par Dart Code. Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 63 / 77
  • 64. Atelier : Système de Gestion de Stock de Produits
  • 65. Atelier : Système de Gestion de Stock de Produits Cahier des charges Système de Gestion de Stock de Produits Objectif : Développer une application de gestion de stock de produits utilisant le langage de programmation Dart, avec les fonctionnalités CRUD de base. Fonctionnalités requises : Ajouter, afficher, modifier et supprimer des produits avec leurs détails (nom, description, prix, quantité). echercher des produits par nom et afficher les détails correspondants. Gérer le stock en affichant la quantité totale de tout les produits Authentification utilisateur pour que seuls les utilisateurs authentifiés peuvent effectuer des opérations CRUD sur les produits. Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 65 / 77
  • 67. Atelier : Implémentation Implémentation Class Produit Remarque la lignes de l’importation importe la bibliothèque dart:io, qui fournit des fonctionnalités pour les entrées/sorties, nécessaires pour interagir avec la console. la class product définit un modèle de produit avec des propriétés telles que le nom, la description, le prix et la quantité. import ’dart:io’; abstract class Product { String name; String description; double price; int quantity; Product(this.name , this.description , this.price , this.quantity); } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 67 / 77
  • 68. Atelier : Implémentation Implémentation Class PC et Portable Remarque Les classes PC et Portable héritent des propriétés de la classe mère Product. class PC extends Product { String ram; String processor; } class Portable extends Product { String camera; } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 68 / 77
  • 69. Atelier : Implémentation Implémentation Class StockManager Remarque La classe StockManager gère le stock de produits. Elle contient des méthodes pour ajouter, afficher, mettre à jour, supprimer, rechercher des produits, et pour obtenir la quantité totale en stock ainsi que pour afficher les quantités par type de produit. class StockManager { List <Product > products = []; // Liste de produits void addProduct(Product product) { // Methode pour ajouter un nouveau produit } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 69 / 77
  • 70. Atelier : Implémentation Implémentation Class StockManager void displayAllProducts () { // Methode pour afficher tous les produits } void updateProduct(int index ,Product product) { // Methode pour Modifier un produit } void deleteProduct(int index) { // Methode pour supprimer un produit } } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 70 / 77
  • 71. Atelier : Implémentation Implémentation Class StockManager void searchProductByName (String name) { // Methode pour rechercher un produit par nom } int getTotalQuantity () { // Methode pour obtenir la q u a n t i t totale en stock } } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 71 / 77
  • 72. Atelier : Implémentation Implémentation Class UserManager Remarque La classe UserManager gère les utilisateurs et leurs mots de passe. Elle contient une méthode authenticate pour vérifier les informations d’identification fournies par l’utilisateur. class UserManager { Map <String , String > users = {’admin ’: ’Khalil123 ’}; // Utilisateurs avec leurs mots de passe bool authenticate (String username , String password) { // Methode pour authentifier les utilisateurs } } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 72 / 77
  • 73. Atelier : Implémentation Implémentation Fonction main Remarque La fonction main est le point d’entrée du programme. Elle initialise les gestionnaires d’utilisateurs et de stock, authentifie l’utilisateur, affiche le menu et gère les actions de l’utilisateur en fonction de ses choix. void main () { // Initialisation du UserManager et du StockManager // Authentification de l’utilisateur // Affichage du menu et gestion des actions de l’utilisateur } Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 73 / 77
  • 74. Atelier : Implémentation Conclusion Conclusion Nous avons exploré ses principales caractéristiques, notamment sa syntaxe claire et concise. De plus, nous avons examiné certains des frameworks et outils essentiels qui l’accompagnent, tels que Flutter pour le développement d’applications multiplateformes et AngularDart pour la création d’applications web dynamiques. Enfin, nous avons présenté une démonstration pratique de l’utilisation de Dart dans un scénario de gestion de stock, mettant en lumière la simplicité et la puissance de ce langage dans le développement d’applications. en résumé Dart est un langage moderne et polyvalent, offrant un large éventail de fonctionnalités qui en font un choix idéal pour le développement d’applications mobiles et web. C’est une solution performante et fiable pour les développeurs . Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 74 / 77
  • 76. Atelier : Implémentation Merci pour votre attention Merci ! Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 76 / 77
  • 77. Master IAII ( FST Marrakech) Le langage Dart Professeur : O.bourkoukou 77 / 77