
Envoyé par
grinder59
Je devrais également modifier le code de mon programme principal pour qu'il prenne en charge le cas d'un objet de type Limace, c'est ça ?
Bonjour,
Non justement tu n'as pas a modifier ton programme.
En utilisant d'autres terme, avec un interface tu définis une responsabilité. Alors qu'avec un héritage tu définis une ressemblance.
Dans l'exemple de IVivant, les classes qui vont implémenter IVivant sont alors responsable du fait de se nourir. Ton programme n'a pas besoin de connaitre les classes, il a juste a verifier la responsabilité et s'appuyer deçus.
C'est exactement ce que décrit alucia, le programme charge des "dll" à la voler, cherche des classe ayant la responsabilité IOdbcLink, et du coup il (le programme) peut travailler avec, il n'a pas besoin d'en savoir plus.
Pour revenir sur l’héritage multiple, c'est erreur des débuts de la programmation objet.
Une classe ne peut ressembler au deux choses en même temps, alors que ces choses sont complétement différentes.
Ce qui te gène dans les interfaces et que tu apprécie dans l’héritage multiple, c'est la réutilisation de code.
C'est un faux probleme prenons le cas IVivant.
L'humain et la pieuvre mange tous les deux des poissons.
Donc pour partager du code je vais ecrir cette classe
class MangeurPoisson { public void Manger(Poisson nourriture) { /*... */ } }
Et Humain sera implemanter comme ceci
1 2 3 4 5 6 7 8 9 10 11
| class Humain : IVivant
{
public Nourrir(object nourriture)
{
if (nourriture is Poisson)
{
MangeurPoisson mangeur = new MangeurPoisson();
mangeur.Manger((Poisson)nourriture);
}
}
} |
Ainsi le comportement lié aux aliments de type Poisson est partagé, et ma responsabilité "Vivant" est bien définit.
Partager