Et alors il y a probablement autant de probabilités de recourir à l'héritage multiple en C++ que de recourir à la méthode Equals de Object donc dans les faits d'utilisation cela est du pareil au même. Et lorsqu'il y a un recours à Equals ou à l'héritage multiple les impacts sont certainement plus graves avec l'héritage multiple qu'avec l'appel à un Equals.Envoyé par koala
Bref, il suffit de regarder sur quoi est fondée la bibliothèque standard c++ pour se rendre compte qu'elle n'utilise pas plus que cela l'héritage multiple (pour ainsi dire elle ne doit même pas l'utiliser) et il suffit de regarder sur quoi est fondé le langage/framework Java pour se rendre compte qu'il n'utilise pas plus que cela le Equals de Object.
D'autant plus que tu parles de comparaison mais là tu compares des voitures et des pommes. En effet, l'héritage multiple c'est propre au langage alors que Equals dans Object n'est pas propre au langage mais à une bibliothèque.
Depuis quand on compare un langage à une bibliothèque ????????? Depuis quand on compare la conception d'un langage avec la conception d'une bibliothèque ???????
On doit comprendre alors que les concepteurs de la bibliothèque standard du C++ (et probablement Qt et compagnie) ne se sont pas sentis de taille pour affronter ces problèmes mais que malgré tout tu en vantes les mérites invisibles dans les faits.Envoyé par koala
Et ne me sort pas l'exemple de la mouette qui est un oiseau et un dinosaure en même temps ou ce genre de choses car les cas où l'héritage multiple peut et se mets en pratique avec avantage doivent se compter sur les doigts d'une patte de crocodile
Non d'un point de vue des piliers de la conception il n'y a rien de horrible et de dangereux. Equals dans une classe Object respecte les Graps pattern et ce sont eux qui sont les fondements de la conception et dont dérive tous les autres patterns et conceptions, LSP n'y échappe pas.Envoyé par koala
C'est une mauvaise utilisation tout autant que l'est l'héritage multiple qui peut poser des problèmes de conception d'un autre ordre.
Bref, en C++ aussi il y a des éléments horribles et affreux (quoique ces mots sont à relativiser) :
-l'héritage multiple
-les constructeurs par recopie
-l'ordre des appels des constructeurs et destructeurs lorsque des mots clefs comme virtual s'appliquent sur de l'héritage (multiple ou pas)
-les variables globales
-la complexité inutile du langage et la pauvreté de son framework std rendant toute productivité, réactivité et maintenance à moindre coût impossible
-sa disparité et son mauvais enseignement dans les écoles
-la vitesse quasi-nulle d'évolution du langage (cela va aussi vite que la norme html5 c'est pour dire...)
-la non évolutivité de la bibliothèque standard (il a dû fallu attendre 10 ans pour ajouter des threads....)
-la non existence de sucres syntaxiques (tout le monde adopte aujourd'hui à minima les properties par exemple)
-aucune innovation dans les concepts et les pratiques de la programmation (ou alors il faut attendre 15 ans)
-il faut recompiler ses sources pour chaque plateforme cible (autant dire que si ce n'est pas penser dés le départ et même quand c'est pensé dés le départ c'est plus que fastidieux)
Cela relativise plus qu'un peu une méthode Equals dans une classe Object
Partager