Je suis d'accord avec toi sur les avantages de la POO. Le seul truc que j'ai à dire est sur l'héritage multiple et les "contrats". Pour ce qui est de l'héritage multiple, je le trouve difficile à utiliser et pas toujours judicieux parce que l'on a tendance à associer un état (héritage "cet objet est du même type") à un comportement (interface ou contrat "cet objet fait la même chose que les objets de cette classe"). De plus, l'exemple habituel : une trouve une même méthode (M())dans deux classes A et B qui héritent d'une même classe abstraite A' (la méthode était virtuelle pure ce qui oblige à la définir dans les classes filles), pour l'instant, il s'agit d'héritage simple. On crée ensuite une classe AB qui hérite des deux premières classes dérivées. Quelle implémentation de la méthode sera utilisée dans AB ? Celle de A ou celle de B ? Il faut la redéfinir et dire dans le corps de la méthode A::M() (ou B::M() suivant le choix). Résultat, on casse l'héritage puisque l'on veut bien de toutes les méthodes des deux mais il y en a une qui notre préférence pour l'implémentation de M.
Cela m'amène aux contrats (je ne connais pas Eiffel donc il faut me dire si je me trompe dans la définition d'un contrat). En Java, L'héritage multiple n'existe pas et on utilise à la place le mécanisme des interfaces. Une interface est un contrat dans le sens où l'on définit dans une interface les prototypes des méthodes que seront à implémenter par les classes respectant l'interface. L'interface sert donc à déclarer un comportement. Je vous aurais bien trouvé un exemple mais je n'ai pas le temps ni le souvenir d'un cas d'école si ça revient, je post.
Tout ça pour dire que l'héritage multiple est quelque chose de dangereux car il est sujet aux dérives et c'est la principale raison qui l'a fait retirer de Java.
[^] # Re: Mouais
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Reflexions sur le cliché "on peut faire de l'OO en n'importe quel langage". Évalué à 1.
Cela m'amène aux contrats (je ne connais pas Eiffel donc il faut me dire si je me trompe dans la définition d'un contrat). En Java, L'héritage multiple n'existe pas et on utilise à la place le mécanisme des interfaces. Une interface est un contrat dans le sens où l'on définit dans une interface les prototypes des méthodes que seront à implémenter par les classes respectant l'interface. L'interface sert donc à déclarer un comportement. Je vous aurais bien trouvé un exemple mais je n'ai pas le temps ni le souvenir d'un cas d'école si ça revient, je post.
Tout ça pour dire que l'héritage multiple est quelque chose de dangereux car il est sujet aux dérives et c'est la principale raison qui l'a fait retirer de Java.