L’héritage sans soucis
Depuis le deuxième article, nous avons vu une jolie classe Led. Mais comment ferions nous pour coder une classe LedBicouleur qui s’occuperait d’une diode à deux couleurs dotée de trois pins ? Ce type de diode est le plus souvent un assemblage de deux leds simples dans un seul boitier que l’on peut activer seules ou (...)
Je rebondis sur le dernier paragraphe de cet article, par ailleurs excellent !
Je partage le point de vue d’une classe LedBicouleur codée comme une agrégation de 2 objets de la classe Led plutôt que par héritage.
De mon point de vue, l’héritage ne devrait s’appliquer que si lorsque l’on manipule un objet de la classe Led, on pouvait sans autre lui substituer un objet de la classe dérivée LedBicouleur (principe de substitution de Liskov).
Je rebondis sur le dernier paragraphe de cet article, par ailleurs excellent !
Je partage le point de vue d’une classe LedBicouleur codée comme une agrégation de 2 objets de la classe Led plutôt que par héritage.
De mon point de vue, l’héritage ne devrait s’appliquer que si lorsque l’on manipule un objet de la classe Led, on pouvait sans autre lui substituer un objet de la classe dérivée LedBicouleur (principe de substitution de Liskov).
mais on peut tout à fait substituer un objet de la classe LedBicouleur à un objet de la classe Led. Seule une des deux DEL sera manipulée via Allumer et Eteindre.
Bonjour,
Merci pour ces articles très intéressants sur les objets
Une question : comment intégrer dans une boucle une phase de test faisant appel à x objets identiques ?
Je m’explique :
if (L1.Change()) je fais quelque chose à L1
if (L2.Change()) je fais la même chose à L2
....
if (L10.Change()) je fais la même chose à L10
J’espère avoir été clair !!!
Fabrice
Le constructeur ne peut pas avoir d’argument. Il faudra initialiser chaque objet séparément.
On peut ensuite écrire :
for (byte numero = 0; numero < 10; numero++) {
if (mesLEDS[numero].Change()) {
...
}
}
Il existe un autre moyen en utilisant une liste chaînée qui est remplie au fur et à mesure que l’on instancie les objets. On peut ensuite exploiter cette liste. C’est un peu plus compliqué à expliquer ici mais c’est plus élégant.
Un grand MERCI pour cet article en quatre volumes sur les objets du C++.
Je commence à y voir plus clair : il me reste à mettre la main à la pâte pour tenter de saisir toutes les subtilités.
Pour la petite histoire, ce "monde de l’Objet en programmation", je m’y étais plongé avec le turbo pascal (oui, ça fait loin derrière : windows XP n’existait pas encore !) et je n’y avais pas compris grand chose.
Mais avec Arduino et Teensy, je m’y suis remis à grand peine pour tenter de comprendre comment utiliser les librairies Adafruit et PJRC et éventuellement pour en créer, car certains programmes refusent de fonctionner tel celui qui est censé afficher sur le LCD une image stockée sur la carte SD (embarquée sur le dit LCD) le tout piloté par un Teensy 4.0.