Vous êtes sur la page 1sur 77

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.6 e5 ];


List realList = [1 , true , ’ String ’ , 5.6 e5 ];

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.6 e5 ;

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 p erso nne Av ec Pa ram s = 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 p erso nne Av ec Pa ram s = 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 p erso nne Av ec Pa ram s = 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 p erso nne Av ec Pa ram s = 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 p erso nne Av ec Pa ram s = 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 d i s p l a y D e t a i l s _ E m p l o y e e () {
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 . di sp l a y D e t a i l s _ E m p l o y e e () ;

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 . di s p l a y D e t a i l s _ E m p l o y e e () ;

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 disp la yA llP ro du cts () {


// 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 se a rc h Pr o du c t By N am e ( 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

Vous aimerez peut-être aussi