Académique Documents
Professionnel Documents
Culture Documents
Dart VersionFinal
Dart VersionFinal
Présenter par
RICH Brahim
KHALIL Abdelhafid
TANTOUNI Mohamed
Professeur : O.bourkoukou
1 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.
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é.
Les Boucles
for
for in
foreach
while
Les Boucles
For
For
La boucle que l’on retrouve dans presque tous les langages de
programmation est aussi présente en Dart.
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
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.
// - - - - 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.
int i = 0;
do {
sum += list [ i ];
i ++;
} while ( i < list . length ) ;
if . . . else
Switch case
if . . . else
Si la condition est vraie, le code qui suit est exécuté, sinon le code après
else est exécuté.
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
Dart n’a pas de type tableau, mais un type List pouvant être initialisé avec
une taille fixe ou non.
fixedList [0] = 1;
fixedList [1] = true ;
fixedList [2] = ’ String ’;
fixedList [3] = 5.6 e5 ;
Une Map est une structure de données associant une clé à une valeur.
Présentation
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 ;
}
methodes et fonctions
Méthodes et Fonctions
methodes et fonctions
Méthodes et Fonctions
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 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 } ’; }
}
class Personne {
String nom ;
int age ;
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 () ;
}
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 () ;
}
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) ;
}
void main () {
var p erso nne Av ec Pa ram s = Personne ( " rich " ,21) ;
}
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 ) ;
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) ;
Constructeur de redirection
Vous pouvez rediriger un constructeur vers un autre.
class Personne {
String nom ;
int age ;
class Person {
String name ;
int age ;
void displayDetails () {
print ( ’ Name : $name , Age : $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 ’) ;
}
}
em . di sp l a y D e t a i l s _ E m p l o y e e () ;
emp . displayDetails () ;
emp . di s p l a y D e t a i l s _ E m p l o y e e () ;
L’héritage
Problème d’utilisation des méthodes
L’héritage
La solution
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.
@override
void makeSound () {
print ( ’ belement ! ’) ;
}
}
Supposent que
classe abstraite
void test () {
print ( ’ test 111 ’) ;
}
}
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 {
@override
void makeSound () {
print ( ’ Meow ! ’) ;
}
}
Les interfaces
implements
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.
Les interfaces
Implements
void test () {
print ( ’ test 111 ’) ; }
}
Les interfaces
implements
@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
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;
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.
mixin B {
void methodB () {
print ( ’ M t h o d e B ’) ;
}}
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.
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.
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.
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.
SDK
Configuration de Sdk Dart
SDK
Configuration du SDK Dart
SDK
Configuration du SDK Dart
SDK
Vérification de l’installation de Dart
VS Code
Installation de l’extension Dart dans Visual Studio Code
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.
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 ) ;
}
Implémentation
Class PC et Portable
Remarque
Les classes PC et Portable héritent des propriétés de la classe mère Product.
String ram ;
String processor ;
}
String camera ;
}
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
Implémentation
Class StockManager
Implémentation
Class StockManager
int getTotalQuantity () {
// Methode pour obtenir la q u a n t i t totale en
stock
}
}
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
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
}
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
Merci !