Comment utiliser le potentiel des classes abstraites sans les inconvénients de l’héritage ?

fermer la fenetre

Des Applications Performantes Sans Vous Prendre La Tête !

Recevez la formation "Développement Facilte" GRATUITEMENT
Avec tous les Codes Sources Commentés
 
(Les événements, la programmation orientée objets, les modèles de conception, Les éditeurs, les outils, 
l'efficacité, CSS3, HTML5, JavaScript, jQuery, Dojo...)

Renseignez votre prénom et votre adresse email ci-dessous :

Les bons concepteurs se méfient de l’héritage !

Découvrez dans ce cours vidéo les classes abstraites et comment utiliser l’héritage à bon escient.

[ppmaccordion][ppmtoggle title=”Afficher le texte de la vidéo”]

Comment utiliser le potentiel des classes abstraites sans les inconvénients de l’héritage ?

Bonjour, et bienvenu sur Développement Facile.

Dans ce nouveau cours, vous allez apprendre une autre technique essentielle pour votre développement d’applications performantes. Les bons concepteurs se méfient de l’héritage. Sur votre écran, vous voyez les langages de leur naissance, fortran, Cobol etc, avec leurs successeurs, donc tout ce qui a hérité, ce qui fait que quand on hérite d’un autre langage, on hérite aussi de ses défauts, de ses avantages, et donc en tant que bon concepteur d’application, vous allez vous méfier de l’héritage. Je ne vous dis pas de ne pas l’utiliser, mais par contre, vous allez l’utiliser à bon escient.

Oubliez l’héritage…

Vous allez apprendre à décorer vos classes, au moment de l’exécution en utilisant une certaine forme de composition. Vous allez affecter à vos objets de nouvelles responsabilités, sans jamais modifier le code des classes sous-jacentes.

Principes de conception essentiels

C’est un des principes de conception essentiel que vous allez apprendre. Vos classes doivent être ouvertes à l’extension, mais fermées à la modification. Vous devez avoir la possibilité d’ajouter facilement des nouveaux comportements à vos classes, et surtout sans modifier le code existant. C’est vraiment la base. On fait évoluer des applications avec des nouvelles fonctionnalités, toujours en conservant le code existant ou alors en modifiant par petite touche. Le but, c’est de modifier le moins possible et d’ajouter des fonctionnalités, pour conserver son application sans bug, et toujours la rendre de plus en plus performante.
Concentrez-vous sur les parties du codes les plus susceptibles d’évoluer pour appliquer ces principes. Développez des classes abstraites et fournissez des applications, si vous devez communiquer avec d’autres applications, d’autres développeurs, fournissez leurs des API ou des classes abstraites.

Les classes Abstraites ?

Qu’est-ce que c’est ? Qu’est-ce que ça vous évoque ? Déjà, une classe abstraite n’est pas instanciable. Suivant le langage de programmation, il faut un peu feinter, une classe n’est pas abstraite, sont constructeur la classée et déclarée en privé. Elle sert de base aux classes dérivées, c’est à dire, vous allez pratiquer l’héritage, mais à partir d’une classe abstraite. Elles définissent le comportement, donc les méthodes, dont l’implémentation. Le code de la méthode se fait dans les classes filles, celles qui en héritent. Les classes filles, vous connaitrez toutes les méthodes et elles vont respecter l’implémentation définie par la classe mère qui elle est abstraite, et les classes filles vont définir le code dans la méthode. En gros, c’est une interface de programmation, si vous connaissez, vous pouvez utiliser aussi des interfaces.

Exemple d’utilisation d’une classe abstraite

Donc on va prendre l’exemple d’utilisation d’une classe abstraite. La modélisation d’un distributeur de boisson. Vous avez un distributeur qui vous fournit des cannettes de Coca, Sprite etc. Vous allez créer une classe abstraite qui va fournir le tarif et la description de la boisson. Uniquement ça, et ensuite vous allez créer une nouvelle classe par boisson qui définit la classe abstraite avec une description et un prix spécifique. C’est vraiment un exemple très simple pour que vous compreniez l’intérêt des classes abstraites, qui contiennent les méthodes et les propriétés communes à tous les objets. Donc, par exemple, vous avez une classe expresso, avec un tarif spécifique, une description spécifique, une autre classe chocolat, une autre décaféiné, avec à chaque fois une description et un tarif bien spécifique à la classe elle-même.
Dans votre code, vous utilisez une variable de type abstraite boisson, enfaite, vous allez instancier expresso, new chocolat, new décaféiné, mais vous allez l’affecter à une variable de type abstraite boisson. Ainsi, ça va vous permettre de manipuler les boissons, n’importe quelle boisson avec les mêmes méthodes, que ce soit un expresso, un chocolat ou encore un décaféiné, peu importe, vous manipulerez une instance abstraite boisson.

Avantages de la notion “décorer”

Si on regarde un peu, un exemple de code. Vous avez là, la classe abstraite boisson avec des variables protected, donc ça veut dire protected comme vous l’avez vu, ou si vous l’avez pas vu je vous renvoie au précédent cours, sur les principes de la programmation orientée objet, vous aurez un lien sous cette vidéo pour accéder directement à ce cours.
Une variable protected, rapidement, c’est quoi ? Les classe qui vont hériter d’abstraite boisson, peuvent utiliser ces variable-là. Description et le prix. Donc, toutes les classes héritée de la classe abstraite boisson, vont utiliser la description et le prix. Il faut savoir que abstraite boisson n’est pas instanciable, donc en Action Script, vu qu’on ne peut pas définir de constructeur privé, on utilise une petite astuce pour générer une erreur, comme quoi, si vous essayer d’instancier la classe directement, ça vous enverra une erreur. Et pour informer l’utilisateur que c’est une classe abstraite et qu’il faut utiliser l’héritage.
Et vous avez les méthodes obligatoire donc getdescription, et count, pour calculer le tarif de la boisson qui sont obligatoires. Et ensuite, vous définissez des boissons autant que vous le souhaitez, boisson déca, chocolat, Coca, Sprite, etc. Il vous suffit d’étendre abstraite boisson, là c’est un exemple très simple, il n’y a que deux propriétés de méthodes, et de définir la description et le prix. Et ensuite, quand vous utilisez votre classe, vous faite un new deca, var eau boisson : abstraite boisson, parce que c’est une variable de type abstraite boisson = new deca ou = new chocolat, ou encore = new Sprite, et que ce soit un deca, un chocolat, un Sprite ou un Coca, vous faites, .count avec boisson.count vous récupérerez le prix de la boisson. Avec boisson.getdescription, la description de la boisson. D’une façon toute simple.
Donc les avantages de la notion de décoration, ça vous apporte des applications qui sont résistantes aux changements et très souples pour accepter les nouvelles fonctionnalités. Vos utilisateurs, vos clients vous demandent souvent dans vos applications de nouvelles fonctionnalités. Là, vous pourrez créer des nouvelles fonctionnalités très simplement parce que vous avez des classes indépendantes les unes des autres. C’est une application qui évolue rapidement en fonction des besoins. Comme je vous l’ai dit par exemple, quel que soit le type de boisson créée, vous avez toujours les mêmes méthodes, pour connaitre son prix et sa description. C’est le modèle de conception décorateur. Donc pour ceux qui ne savent pas ce qu’est un modèle de conception, c’est une façon de programmer des applications, qui ont été mises en œuvre des centaines, des milliers de fois dans différents langages, qui ont fait leurs preuves et qui répondent à des problèmes concrets, du développement applicatif. Donc, ce modèle de décorateur de conception, vous savez qu’il existe, en fonction des besoins de votre application, vous pouvez maintenant l’utiliser.
En gros il ajoute des responsabilités à un objet de façon dynamique, c’est une alternative très pratique à l’héritage pour ajouter de nouvelles fonctionnalités. Ca complémente l’héritage.

A vous de jouer !

Vous trouverez comme d’habitude un exemple de code source sous ce cours vidéo, et mettez en pratique, c’est très important de mettre en pratique, les concepts, le modèle de conception, décorateur, la composition, manipulez des instances d’objets plutôt que de faire uniquement de l’héritage.

Si vous avez des questions, posez-les-moi directement sous cette vidéo.
Je vous dis à très bientôt pour le prochain cours sur Développement Facile.

[/ppmtoggle][/ppmaccordion]

Exemple de classes abstraites

Voici plusieurs exemples en JavaScript et ActionScript d’utilisation des classes abstraites.

Downloads

Et vous, dans quels cas utilisez-vous des classes abstraites ?

Partagez vos astuces pour définir une classe abstraite efficace dans les commentaires ci-dessous.

Créez des Applications Performantes avec la Formation Gratuite Développement Facile !

Recevez des Cours Vidéos avec les codes sources 
(Les événements, la POO, les modèles de conception, Les éditeurs, 
efficacité, CSS3, HTML5, JavaScript, jQuery, Dojo...)