En Dart, comme dans d’autres langages (C++, Objective C, C#) tout votre code passera par une fonction principale appelée main.
Le code Dart qui s’exécutera dans votre application ou votre page sera celui placé à l’intérieur de cette fonction.
void main() { print('Hello, World!'); }
Bien sûr, nous ne placerons pas directement tout notre code à l’intérieur, nous utiliserons des fonctions, classes et par la suite des widgets Flutter pour développer nos applications.
Nous ferons donc appel à nos autres fonctions en passant par cette fonction dite « haute » dans notre code Dart, par exemple:
// On definit une fonction void printInteger(int aNumber) { print('The number is $aNumber.'); // On affiche le résultat dans la console } // C'est ici que notre script va s'exécuter void main() { var number = 42; // On déclare et on initialise notre variable nombre printInteger(number); // On appelle la fonction }
Voilà tout ce qu’il y a à savoir à propos de la fonction main(), que nous utiliserons dans Flutter.
Le langage Dart utilise la Programmation Orientée Objet (POO) comme d'autres langages plus anciens comme le C++, le Swift ou encore le PHP.
La POO représente en fait un ensemble de principes sur lesquels plusieurs langages sont basés pour fonctionner.
Parmi les concepts fondamentaux de la POO, je me suis permis de sélectionner ceux que j'estime les plus importants:
Dans le Dart, la notion de classe est omniprésente, elle nous permettra par la suite de mieux comprendre le fonctionnement des widgets dans Flutter.
Nous allons voir des exemples simples de classes Dart pour vous faire comprendre leur utilité et leur fonctionnement.
Contrairement à d'autres langages d'ailleurs, en Dart il est possible de définir plusieurs classes dans un même fichier.
Voilà par exemple une première classe qui permet de représenter un entrepreneur:
class Startuper { String name = ''; String company = ''; String createSentence() { return '$name a créé $company'; } }
On peut ainsi nommer chaque partie de notre classe de la manière suivante:
L'intérêt des classes est de pouvoir créer des méthodes qui permettent de manipuler les données.
On déclare une classe à chaque fois qu'un processus de déclaration et de manipulation de données se répète.
Par exemple, on peut déclarer une nouvelle instance de la classe Startuper avec la syntaxe suivante:
Startuper person = new Startuper(); // instance
On peut également accéder aux champs de cette classe avec la syntaxe suivante:
person.name;
Ainsi qu'au résultat de nos méthodes avec la syntaxe:
person.createSentence();
Voilà par exemple notre script Dart complet pour afficher dans la console la phrase ("Elon Musk a créé SpaceX"):
void main() { Startuper person = new Startuper(); person.name = 'Elon Musk'; person.company = 'SpaceX'; print(person.createSentence()); } class Startuper { String name = ''; String company = ''; String createSentence() { return '$name a créé $company'; } }
Je vous ai parlé dans l'introduction à la Programmation Orientée Objet du principe d'héritage.
Celui-ci s'applique aux classes Dart, ce qui va nous permettre de faire hériter certaines propriétés à nos classes.
Voilà par exemple un schéma qui vous explique comment différentes classes peuvent hériter d'une même classe dite parente:
On distingue donc deux types de classes:
Nous pouvons par exemple créer première classe Vehicule qui sera notre classe parente:
class Vehicle { String carCompany = ''; String carModel = ''; String getCompanyAndModel() { return 'La $carModel de chez $carCompany'; } }
On peut de cette manière faire appel à elle avec le script suivant pour déclarer un nouveau véhicule:
void main() { Vehicle vehicule = new Vehicle(); vehicule.carCompany = 'Renault'; vehicule.carModel = 'Clio'; print(vehicule.getCompanyAndModel()); }
Mais nous pouvons également déclarer une nouvelle classe Car qui va hériter de toutes les propriétés de la classe Vehicule.
Voilà la syntaxe à utiliser pour créer cette classe enfant:
class Car extends Vehicle { int seatNumber = 0; String getSeatNumber() { return '${getCompanyAndModel()} a $seatNumber sièges'; } }
De cette manière, je peux créer une nouvelle instance de la classe Car() avec directement les mêmes propriétés que ma classe Vehicule():
void main() { Car myCar = new Car(); myCar.carCompany = 'Renault'; myCar.carModel = 'Clio'; myCar.seatNumber = 5; print(myCar.getSeatNumber()); }
Je vous laisse le code complet de tout le fichier Dart:
void main() { Car myCar = Car(); myCar.carCompagny = 'Renault'; myCar.carModel = 'Clio'; myCar.seatNumber = 5; print(myCar.getSeatNumber()); } class Vehicle { String carCompagny = ''; String carModel = ''; String getCompanyAndModel() { return 'La $carModel de chez $carCompagny'; } } class Car extends Vehicle { int seatNumber = 0; String getSeatNumber() { return '${getCompanyAndModel()} a $seatNumber sièges'; } }
Voilà pour cette petite introduction aux principes fondamentaux du Dart et à la Programmation Orientée Objet.