La programmation orientée objet (POO) est un paradigme de programmation qui utilise des « objets » et leurs interactions pour concevoir des applications et des logiciels. Dart, le langage de programmation derrière Flutter, est un langage orienté objet qui prend en charge des concepts tels que les classes, les objets, l'héritage et le polymorphisme. Dans cette section, nous explorerons le concept de polymorphisme dans Dart.
Polymorphisme
Le polymorphisme est un concept fondamental de la programmation orientée objet. Il permet de traiter des objets de types différents comme des objets d'un type commun. Le terme « polymorphisme » vient des mots grecs « polys », signifiant « plusieurs », et « morphē », signifiant « forme ». Par conséquent, le polymorphisme signifie la capacité de prendre de nombreuses formes.
Dans Dart, le polymorphisme est implémenté à l'aide de classes abstraites, d'interfaces et d'héritage. Une classe abstraite est une classe qui ne peut pas être instanciée directement. Au lieu de cela, elle est utilisée comme classe de base pour d’autres classes. Une interface, en revanche, est un contrat qui spécifie ce qu'une classe doit faire, mais pas comment elle doit le faire. Une classe qui implémente une interface doit fournir une implémentation pour toutes les méthodes définies dans l'interface.
Polymorphisme dans Dart
Dans Dart, nous pouvons avoir le polymorphisme sous deux formes : le polymorphisme au moment de la compilation et le polymorphisme au moment de l'exécution. Le polymorphisme au moment de la compilation, également appelé surcharge de méthodes, se produit lorsque vous disposez de deux méthodes ou plus portant le même nom mais des listes de paramètres différentes. Dart ne prend pas en charge la surcharge de méthodes. Nous n'avons donc que le polymorphisme d'exécution dans Dart.
Le polymorphisme d'exécution, également appelé substitution de méthode, se produit lorsqu'une classe enfant fournit une implémentation différente pour une méthode déjà fournie par sa classe parent. Dans Dart, nous utilisons le mot-clé « override » pour indiquer que nous remplaçons une méthode.
Exemple de polymorphisme dans Dart
Prenons un exemple simple où nous avons une classe abstraite 'Animal' avec une méthode 'eat'. Nous avons deux classes, "Dog" et "Cat", qui étendent la classe "Animal" et fournissent leurs propres implémentations pour la méthode "eat".
Maintenant, nous pouvons créer des objets « Chien » et « Chat » et les traiter comme des « Animaux ». C'est du polymorphisme. Nous pouvons appeler la méthode 'eat' sur un objet 'Animal', et l'implémentation correcte de la méthode sera appelée en fonction du type réel de l'objet.
En bref, le polymorphisme nous permet de traiter uniformément des objets de différents types. Cela augmente la flexibilité et la modularité de notre code, le rendant plus réutilisable et plus facile à maintenir.