Lorsque vous mangez un burrito, chacun de vos récepteurs gustatifs chante de joie. Chaque bouchée apporte une combinaison de différents types de saveurs, comme le salé, le sucré, l'épicé et l'umami. Chaque bouchée qui suit a un goût légèrement différent, car une nouvelle collection d'ingrédients réunit leurs saveurs.

Vous avez peut-être lu les ingrédients du menu, mais vous ne savez pas exactement comment la salsa est préparée. L'assaisonnement qu'ils utilisent sur leurs légumes pourrait être un mélange secret. Cependant, vous n'avez pas besoin de connaître chaque ingrédient exact. Il suffit de savoir que c'est délicieux.

Les ingrédients que vous connaissez, comme le riz blanc nature, sont concrets. Les autres éléments sont abstraits. Vous savez que c'est de la salsa, mais quel genre? Ou, si quelqu'un vous tend un burrito de nulle part, alors tout le burrito est abstrait.

L'abstraction dans l'abstrait

Avec l'héritage, l'abstraction est un concept important dans la programmation orientée objet. La théorie est que chaque objet doit fournir des résultats simples et prévisibles. Les objets ne doivent également partager que ce qui doit être partagé.

Vous pouvez considérer un burrito comme un objet. À l'intérieur du burrito, vous avez plusieurs autres objets, comme des haricots, du riz, du fromage et de la sauce piquante. Les haricots peuvent avoir été assaisonnés. Le fromage pourrait être un mélange. Et la sauce piquante pourrait être une combinaison de piments vieillis au vinaigre.

Vous n'avez pas besoin de savoir comment tous les ingrédients d'un burrito ont été fabriqués. Et dans le cas des hot-dogs, vous ne voulez probablement pas le savoir. Tout ce qui compte, c'est qu'il ne s'effondre pas lorsque vous le mangez et qu'il est super savoureux.

L'abstraction est étroitement liée à l'encapsulation

C'est la même chose avec la programmation d'objets. Lorsque vous instanciez un objet (créez-le à partir d'une classe), c'est comme si vous commandiez un burrito au comptoir du food truck. Vous avez accès à certaines données, mais pas à toutes. Vous n'avez pas besoin de savoir comment fonctionne l'objet, tant que les fonctions renvoient les données correctes. Voici un burrito en JavaScript/Typescript :

La langue spécifiée: tsx n'existe pas'
La génération de code a échoué !!
'

Tu peux jouez avec ce code dans le bac à sable TypeScript.

Dans l'exemple ci-dessus, les ingrédients de la salsa et du fromage sont soustraits. Tout d'abord, ils sont encapsulés, pour cacher les ingrédients spéciaux. Ensuite, des getters sont ajoutés pour accéder aux ingrédients. Mais les ingrédients ne renvoient qu'une représentation abstraite de ce qu'ils sont réellement.

L'abstraction dans le concret

L'abstraction est cependant plus qu'un concept. Les cours peuvent aussi être abstraits. Cela signifie qu'ils peuvent définir d'autres classes. Mais ils ne peuvent pas être instanciés eux-mêmes.

Pourquoi les cours devraient parfois être abstraits

Imaginez que vous allez au restaurant et que vous vous asseyez. Le serveur vous tend un menu. Vous l'ouvrez pour constater qu'il n'y a qu'un seul élément: la nourriture.

C'est assez abstrait. Souhaitez-vous le commander? En mangeriez-vous? Vous ne le feriez probablement pas. Dire que quelque chose est de la nourriture ne suffit pas. Il faut le décomposer en quelque chose de plus concret.

Et les pâtes? Eh bien, c'est un type de nourriture plus spécifique. Et nous savons qu'il contient probablement des nouilles et de la sauce. Mais il y a beaucoup de sortes de pâtes différentes, donc c'est encore abstrait.

Qu'est-ce qui est abstrait et qu'est-ce qui est concret ?

Fettuccine Alfredo est un exemple concret de nourriture et de pâtes. La même chose s'applique aux cours. Toutes les classes ne doivent pas être instanciées. Certaines classes ne doivent définir que la structure d'autres classes.

Voici un exemple avec un résumé Aliments classe et un enfant Noix de macadamia classe:

La langue spécifiée: tsx n'existe pas'
La génération de code a échoué !!
'

Voici le code.

Les classes abstraites indiquent aux autres classes comment elles sont censées se comporter. Dans l'exemple ci-dessus, si vous allez être une classe d'aliments, vous devez avoir des fonctions qui permettent d'accéder à votre nom, saveur, description et calories.

Remarquez que le Noix de macadamia classe s'étendAliments. C'est dire que Noix de macadamia s'engage à respecter les règles de Aliments. Notez également que le constructeur appelle super. Cette commande instancie la classe parent avant que le constructeur n'instancie Noix de macadamia.

Si vous apprenez à programmer, vous pouvez amusez-vous davantage avec ces jeux de programmation.

Pratique de l'abstraction

  • Visitez le lien ci-dessus et utilisez le bac à sable pour créer une classe abstraite appelée Le potage.
  • Créer un enfant concret du Le potage classe, appelée Céréale.
  • Utiliser console.log pour tester votre code. Que se passe-t-il si votre Céréale il manque à la classe l'une des fonctions définies dans Le potage?

Mais à quoi sert une classe que vous ne pouvez pas instancier ?

Au début, les classes abstraites peuvent sembler inutiles. Après tout, vous ne pouvez pas les utiliser pour créer un objet. Et ce n'est pas comme s'ils transmettaient leurs fonctions. Les fonctions doivent être réécrites dans chaque classe enfant.

Il y a deux raisons principales pour lesquelles vous avez besoin de classes abstraites. Ils assurent la cohérence de votre code et s'assurent que les autres développeurs écrivent également du code cohérent. Vous ne travaillerez pas toujours seul. Toute l'équipe doit suivre les mêmes règles. Vous pouvez en savoir plus sur la documentation TypeScript sur les classes abstraites.

Comment organiser votre code orienté objet avec l'héritage

Lire la suite

PartagerTweeterPartagerE-mail

Rubriques connexes

  • Programmation
  • Programmation
  • Programmation orientée objet

A propos de l'auteur

Lee Nathan (19 articles publiés)

Lee est un nomade à plein temps et un polymathe avec de nombreuses passions et intérêts. Certaines de ces passions tournent autour de la productivité, du développement personnel et de l'écriture.

Plus de Lee Nathan

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner