Image de l'article Concepts avancés de fléchettes : héritage et polymorphisme

4.2. Concepts avancés de fléchettes : héritage et polymorphisme

Page 40 | Écouter en audio

En programmation, l'héritage et le polymorphisme sont deux concepts fondamentaux orientés objet. Dans Dart, ces concepts sont mis en œuvre de manière très efficace et intuitive. Commençons par l'héritage.

Héritage

L'héritage est un mécanisme qui permet à une classe d'hériter des propriétés et des méthodes d'une autre classe. La classe dont elle hérite est appelée une sous-classe ou une classe dérivée, et la classe dont elle hérite est appelée une superclasse ou une classe de base.

Dans Dart, l'héritage est implémenté à l'aide du mot-clé 'extends'. Par exemple, considérons la classe de base « Animal » suivante :

classe Animal { vide manger() { print('Manger...'); } }

Nous pouvons créer une sous-classe 'Dog' qui hérite de 'Animal' comme suit :

la classe Chien étend Animal { écorce vide() { print('Aboiements...'); } }

Désormais, un objet de la classe 'Dog' peut accéder à la fois à la méthode 'eat()' de la classe de base 'Animal', et à la méthode 'bark()' de la classe elle-même :

var d = Chien(); mourir(); // Sortie : Manger... d.écorce(); // Sortie : Aboyer...

C'est un héritage. La classe 'Dog' hérite de toutes les propriétés et méthodes de la classe 'Animal' et peut également ajouter ses propres méthodes et propriétés.

Polymorphisme

Le polymorphisme est un concept qui permet à un objet d'être traité comme une instance d'une classe de base, même s'il s'agit en réalité d'une instance d'une sous-classe. Ceci est très utile lorsque vous souhaitez écrire du code capable de gérer des objets de nombreuses classes différentes, à condition que toutes ces classes soient des sous-classes d'une certaine classe de base.

Dans Dart, le polymorphisme est implémenté via l'utilisation de variables de type de base pour référencer des objets de sous-classe. Par exemple, considérons la classe de base suivante « Shape » et deux sous-classes « Circle » et « Square » :

classe abstraite Forme { void draw(); } Le cercle de classe étend la forme { vide dessiner() { print('Dessiner un cercle...'); } } la classe Square étend la forme { vide dessiner() { print('Dessiner un carré...'); } }

Maintenant, nous pouvons créer une fonction qui accepte un objet de type 'Shape' et appelle la méthode 'draw()' dessus :

void drawShape (forme forme) { shape.draw(); }

Nous pouvons ensuite passer un objet 'Circle' ou 'Square' à cette fonction, et la méthode 'draw()' appropriée sera appelée :

var c = Cercle(); drawShape(c); // Résultat : Dessiner un cercle... var s = Carré(); dessinerForme(s); // Résultat : Dessiner un carré...

C'est du polymorphisme. La fonction 'drawShape()' peut gérer n'importe quel objet qui est une instance de 'Shape' ou de l'une de ses sous-classes.

En résumé, l'héritage et le polymorphisme sont deux concepts très puissants de la programmation orientée objet qui vous permettent d'écrire du code plus réutilisable et plus flexible. Dans Dart, ces concepts sont implémentés de manière très intuitive et facile à utiliser, faisant de Dart un excellent choix pour le développement d'applications.

Répondez maintenant à l’exercice sur le contenu :

Lequel des concepts suivants de la programmation orientée objet permet de traiter un objet comme une instance d'une classe de base, même s'il s'agit en réalité d'une instance d'une sous-classe ?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Image de l'article Concepts avancés de fléchettes : Mixins

Page suivante de lebook gratuit :

41Concepts avancés de fléchettes : Mixins

3 minutes

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6,5 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

48 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours gratuits en
vidéo, audio et texte