Pardon, j'enchaîne beaucoup les questions en ce moment :$...
Je viens de voir un post sur "non conforming inheritance" du user
group anglais.
J'avais commencé à lire quelque chose sur le sujet ici :
http://www.loria.fr/~colnet/publis/lmo-2006.pdf
J'avais un avis assez partagé sur cette deuxième forme d'héritage
telle qu'elle est décrite dans le sens où cela crée deux notions
d'héritage. De ce fait, cela allait un peu à l'encontre des préceptes
de BM (toujours dans sa bible) d'avoir des concepts peu nombreux mais
très puissants. Je vois également un argument je pense ayant plus de
poids, à savoir que l'on axe plus dans un sens la vision de classe qui
est à l'origine la fusion d'un module et d'un type. Il me semble, si
j'ai bien saisi ce mécanisme, que l'héritage non conforme est un
héritage de module vu que l'affectation polymorphe n'est pas autorisée
et que l'on a recours à cette pratique par soucis de récupérer des
routines qui nous intéressent.
Ma crainte est alors simple : cela ne va-t-il pas engendrer ou tout du
moins encourager la conception des logiciels avec la vision de la
classe comme un module (ce qui à mon sens est déjà le cas actuellement
dans pas mal de langages de programmation) en passant à coté de la
notion de type ?
Un autre point : un des intérêts que je verrais à cet héritage non
conforme serait le "mariage d'intérêt", exemple trouvé (encore et
toujours dans la bible de BM...:)) avec la classe STACK_ARRAY héritant
de STACK et de...ARRAY.
STACK pour l'abstraction que représente la pile et ARRAY pour son
implémentation. Il pourrait alors me sembler justifier que
l'affectation polymorphe ne soit pas autorisée à partir d'une
référence de type ARRAY pour une entité de type STACK_ARRAY car ARRAY
n'a de sens qu'en interne.
J'aimerais avoir votre avis sur ces différents points qui
m'intéressent énormément.
Merci d'avance ! :)
Jocelyn Batton