Chapitre 1 · Leçon 2
Classes, héritage, mixins et interfaces
Section 1
Step 1
Dart a un système de classes classique avec des constructeurs, des getters/setters et une syntaxe très concise pour initialiser les propriétés.
snippet.dart
1class Tutorial {
2 // Propriétés finales (immuables après construction)
3 final String id;
4 final String title;
5 final String slug;
6 final int duration; // en minutes
7
8 // Propriété mutable
9 bool isCompleted;
10
11 // Constructeur avec initialisation courte
12 Tutorial({
13 required this.id,
14 required this.title,
15 required this.slug,
16 required this.duration,
17 this.isCompleted = false,
18 });
19
20 // Constructeur factory — peut retourner une instance existante
21 factory Tutorial.fromJson(Map<String, dynamic> json) {
22 return Tutorial(
23 id: json['id'] as String,
24 title: json['title'] as String,
25 slug: json['slug'] as String,
26 duration: json['duration'] as int,
27 isCompleted: json['isCompleted'] as bool? ?? false,
28 );
29 }
30
31 // Getter calculé
32 String get displayDuration {
33 if (duration < 60) return '$duration min';
34 final hours = duration ~/ 60;
35 final mins = duration % 60;
36 return '${hours}h${mins > 0 ? ' ${mins}min' : ''}';
37 }
38
39 // Conversion en JSON
40 Map<String, dynamic> toJson() => {
41 'id': id,
42 'title': title,
43 'slug': slug,
44 'duration': duration,
45 'isCompleted': isCompleted,
46 };
47
48
49 String toString() => 'Tutorial($title, $displayDuration)';
50}Step 2
Les mixins permettent de partager du comportement entre des classes sans héritage. C'est l'alternative à l'héritage multiple.