Publicité
+ Répondre à la discussion Actualité déjà publiée
Page 5 sur 5 PremièrePremière 12345
Affichage des résultats 81 à 100 sur 100
  1. #81
    Modérateur
    Avatar de koala01
    Profil pro Philippe Dunski
    Inscrit en
    octobre 2004
    Messages
    9 679
    Détails du profil
    Informations personnelles :
    Nom : Philippe Dunski
    Âge : 42

    Informations forums :
    Inscription : octobre 2004
    Messages : 9 679
    Points : 15 715
    Points
    15 715

    Par défaut

    Citation Envoyé par youtpout978 Voir le message
    Bein là tu es dans le cas du c++, si tu développes en c# ou java et que tu ne veux pas tout casser par la suite en cas de modification tu références des interfaces et non des classes donc tu ne touches en rien à tes classes existantes.
    C'est oublier un peu vite que la conception n'est que très rarement ni "tout à fait irréprochable", ni "totalement exécrable".

    Tu trouveras de manière quasi systématique à redire même sur le projet le mieux conçu que tu puisses imaginer, tout comme tu trouveras des perles conceptuelles dans le pire des projets jamais conçu

    Seulement voilà, c'est un projet qui a déjà couté 30 années Homme (ben oui, cinq ans de développement à une équipe de six ), qui doit remplacer un système développé au fur et à mesure durant quinze ou vingt ans, pour lequel tu es loin d'avoir toutes les analyses fonctionnelles (et on ne parle donc pas des analyses techniques ) parce qu'il y a encore des coins que le client lui-même n'a pas encore exploré, et, bah, tu dois faire avec... Et tu as évidemment interdiction de tout cassé, bien sur

    Et donc, tu te trouves face à l'obligation d'assumer des choix qui ne furent pas les tiens, auxquels il t'est impossible de remédier sans avoir à repasser quasiment l'intégralité des fichiers en revue, et avec, malgré tout, l'obligation de faire ce que l'on t'a demandé.

    C'est moche, mais faut bien "faire avec"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  2. #82
    Membre Expert

    Homme Profil pro John Doe
    Développeur .NET
    Inscrit en
    novembre 2010
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Nom : Homme John Doe
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : novembre 2010
    Messages : 1 138
    Points : 1 879
    Points
    1 879

    Par défaut

    Dans ce cas là tu seras obliger de faire des modifications, mais bon ces problèmes existent dans tous les langages.

    J'ai déjà rencontré ce genre de problème et j'ai du impacter une trentaine de fichiers, on pouvais difficilement faire pire comme application.

  3. #83
    Expert Confirmé Sénior

    Homme Profil pro Emmanuel Deloget
    Développeur informatique
    Inscrit en
    septembre 2007
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Nom : Homme Emmanuel Deloget
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : septembre 2007
    Messages : 1 894
    Points : 4 140
    Points
    4 140

    Par défaut

    Citation Envoyé par youtpout978 Voir le message
    Dans ce cas là tu seras obliger de faire des modifications, mais bon ces problèmes existent dans tous les langages.

    J'ai déjà rencontré ce genre de problème et j'ai du impacter une trentaine de fichiers, on pouvais difficilement faire pire comme application.
    Oh, si

    Lorsque j'ai changé de le système de gestion des adresses sur un système GPS haut de gamme, j'ai commencé par designer quelque chose de propre, et ensuite j'ai modifié l'existant pour utiliser le nouveau système.

    Je pense que j'ai passé 4 semaines à faire les modifications, impactant aux alentours de 500 fichiers (parce que bon, la gestion d'adresse dans un GPS...). Avec bien évidemment l'impossibilité de faire plus d'un seul commit (on rajoute donc 3 semaines de code review effectuée par deux autres personnes et un voyage aux states pour expliquer le changement et intégrer leurs besoins très spécifiques dans l'application (les américains ont décidé qu'avoir un seul système pour les adresses postales, c'était trop facile. Résultat : sur une seule rue (main street, NY) on compte pas moins de 7 façons complètement différentes de traiter les numéros de rue ; je ne sais même pas comment ils font pour s'en sortir)).
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  4. #84
    Modérateur

    Homme Profil pro Cyrille
    Network programmer
    Inscrit en
    juin 2010
    Messages
    2 049
    Détails du profil
    Informations personnelles :
    Nom : Homme Cyrille
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Network programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 2 049
    Points : 4 826
    Points
    4 826

    Par défaut

    Citation Envoyé par youtpout978 Voir le message
    Les langages comme c# et java peuvent hériter d'une seule classe mais peuvent implémenter une multitude d'interface (je crois que c'est 60 la limite en c#) donc tu peux te passer de l'héritage multiple en utilisant des interfaces pour ces langages.
    Et donc tu te retrouves à dupliquer le code d'implémentation de l'interface à chaque fois..
    Et la relation "est un" n'est donc pas applicable aux interfaces.

  5. #85
    Modérateur
    Avatar de koala01
    Profil pro Philippe Dunski
    Inscrit en
    octobre 2004
    Messages
    9 679
    Détails du profil
    Informations personnelles :
    Nom : Philippe Dunski
    Âge : 42

    Informations forums :
    Inscription : octobre 2004
    Messages : 9 679
    Points : 15 715
    Points
    15 715

    Par défaut

    Citation Envoyé par youtpout978 Voir le message
    Dans ce cas là tu seras obliger de faire des modifications, mais bon ces problèmes existent dans tous les langages.
    Le fait est que tu peux, effectivement, estimer que c'est une erreur de conception de n'avoir pas respecté l'ISP, cela, je te l'accorde.

    Mais, d'un autre coté, les interfaces implémentées par Turbine sont par trop générales et leur utilisation aurait pu nous amener à travailler avec des objets avec lesquels il n'y aurait pas eu lieu de pouvoir travailler.

    Car, si tu y penses bien, une scie circulaire ou une foreuse implémentent sans doute aussi l'interface "Rotatif", mais n'entre absolument pas dans le corps de métier du cas que j'ai présenté.

    Alors, bien sur, je te vois venir avec tes grands sabots et t'écrier "ben, tu devais créer une interface ITurbine, qui héritait de Rotatif et de DebitVolumétrique"...

    Ah, mais non, suis-je donc bête... l'héritage multiple est interdit, et je présume qu'on ne peut donc pas faire en sorte qu'une interface hérite de deux autres interfaces...

    Je reprends : je prévois que tu vas t'écrier "bien, tu devais créer une interface ITurbine qui héritait de Rotatif et qui implémentait DebitVolumétrique"... Ou peut etre l'inverse...

    Mais le problème reste exactement le même que pour l'héritage des classes : Non seulement tu es obligé de faire un choix qui sera peut etre différent de celui de ton voisin, mais, en plus, tu es obligé de créer une interface qui n'apporte en définitive absolument rien (si ce n'est de contenter le langage) !!!

    Je suis le premier à plaider pour le respect de SRP, qu'il te suffise de lire mes interventions de ne serait-ce que ces 30 derniers jours pour t'en convaincre.

    Mais il y a des limites quand meme !!!

    Devoir s'amuser à créer une interface et la classe qui l'implémente (en devant au passage dupliquer le code d'implémentation) juste "au cas ou" (même si très probable) il faudrait faire dériver la classe, ca ne te donne jamais l'impression de faire deux fois le travail, à toi

    Si encore, il y avait une raison conceptuelle à faire de la sorte, je l'accepterais, mais que ce soit une restriction imposée par le langage que rien ne justifie conceptuellement parlant, ca, j'ai beaucoup de mal à l'accepter
    J'ai déjà rencontré ce genre de problème et j'ai du impacter une trentaine de fichiers, on pouvais difficilement faire pire comme application.
    Seulement, ce que tu ne sembles pas comprendre, c'est que ce genre de problème est purement artificiel! :

    D'abord, parce que le langage a décidé d'imposer une interdiction qui ne se justifie absolument pas du point de vue conceptuel, ensuite parce qu'il faut bien, à un moment donné, arrêter de penser en terme d'interface pour travailler avec des objets, non

    Quand on pense qu'avec l'héritage multiple et dans des circonstances identiques tu n'aurais eu qu'à faire hériter TurboGenerateur de Turbine et de Generateur, sans rien avoir à changer d'autre et sans risquer de casser quoi que ce soit, ca ne te semble pas être une pilule un peu difficile à avaler , d'autant plus que, conceptuellement parlant, et dans le plein respect de Liskov, on peut effectivement dire qu'un TurboGenerateur EST-UN générateur et c' EST-UNE turbine

    Ceci dit, m'est aussi arrivé d'avoir à modifier une trentaine de fichiers (et plus) suite à une modification nécessaire mais quelque peu hasardeuse...

    Mais je n'ai jamais rien cassé en faisant un héritage qui était justifié
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #86
    Membre Expert

    Homme Profil pro John Doe
    Développeur .NET
    Inscrit en
    novembre 2010
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Nom : Homme John Doe
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : novembre 2010
    Messages : 1 138
    Points : 1 879
    Points
    1 879

    Par défaut

    Une interface peut implémenter d'autre interface et tu peux obtenir d'une interface l'objet qui l'implémente et le contraire est aussi vrai.

    Pour moi et ce n'est que mon avis l'héritage multiple est un faux problème, en tout cas ça n'a jamais été un frein pour le développement des applications sur lesquels j'ai travaillé, peut être faudrait-il que je tombes sur un cas comme le turbogenerateur.

    Après on a un peu dérivé du sujet je pense que le mieux quand même est d'en discuter sur le forum .NET par exemple, des membres plus éclairé que moi pourront répondre.

  7. #87
    Modérateur
    Avatar de koala01
    Profil pro Philippe Dunski
    Inscrit en
    octobre 2004
    Messages
    9 679
    Détails du profil
    Informations personnelles :
    Nom : Philippe Dunski
    Âge : 42

    Informations forums :
    Inscription : octobre 2004
    Messages : 9 679
    Points : 15 715
    Points
    15 715

    Par défaut

    Citation Envoyé par youtpout978 Voir le message
    Une interface peut implémenter d'autre interface et tu peux obtenir d'une interface l'objet qui l'implémente et le contraire est aussi vrai.
    A coup de "isInstanceOf et de transtypages, sans doute ca fait très OO

    Pour moi et ce n'est que mon avis l'héritage multiple est un faux problème, en tout cas ça n'a jamais été un frein pour le développement des applications sur lesquels j'ai travaillé, peut être faudrait-il que je tombes sur un cas comme le turbogenerateur.
    Je n'ai jamais dit, non plus, que c'était d'une utilisation courante et régulière (quoi que, c'est encore à voire )...

    Mais il y a une chose que meme les javaiste et les Csharpiens ne peuvent nier, c'est qu'il n'y a absolument rien dans les règles de conception ni dans les règles UML qui interdit d'y recourir.

    Personnellement, je trouve réellement dommage (pour rester gentil) que n'importe quel langage s'arroge le droit de refuser quelque chose de conceptuellement correct "simplement" parce que c'est source de problèmes potentiels.

    En gros, je trouve dommage que ces langages permettent à des incompétents majeurs de se croire bons

    Mais bon, je me console en disant que, de toutes manières, vous n'avez simplement pas compris que chaque fois que vous avez une classe qui implémente une interface, vous faites en réalité un héritage multiple (merci l'héritage implicite de Object ), et que c'est encore plus vrai quand votre classe hérite d'une autre ou implémente plusieurs interfaces
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #88
    Membre Expert

    Homme Profil pro John Doe
    Développeur .NET
    Inscrit en
    novembre 2010
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Nom : Homme John Doe
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : novembre 2010
    Messages : 1 138
    Points : 1 879
    Points
    1 879

    Par défaut

    Citation Envoyé par koala01 Voir le message
    A coup de "isInstanceOf et de transtypages, sans doute ca fait très OO

    Je n'ai jamais dit, non plus, que c'était d'une utilisation courante et régulière (quoi que, c'est encore à voire )...

    Mais il y a une chose que meme les javaiste et les Csharpiens ne peuvent nier, c'est qu'il n'y a absolument rien dans les règles de conception ni dans les règles UML qui interdit d'y recourir.

    Personnellement, je trouve réellement dommage (pour rester gentil) que n'importe quel langage s'arroge le droit de refuser quelque chose de conceptuellement correct "simplement" parce que c'est source de problèmes potentiels.

    En gros, je trouve dommage que ces langages permettent à des incompétents majeurs de se croire bons

    Mais bon, je me console en disant que, de toutes manières, vous n'avez simplement pas compris que chaque fois que vous avez une classe qui implémente une interface, vous faites en réalité un héritage multiple (merci l'héritage implicite de Object ), et que c'est encore plus vrai quand votre classe hérite d'une autre ou implémente plusieurs interfaces
    Après c'est un choix des concepteurs de la plateforme, on ne peut pas dire qu'il soit mauvais ou bon et il est aussi lié a d'autre comportement de la plateforme, tout hérite d'objet ce qui permet de faire des méthodes de base qui marcheront avec tous les composants.

    Et dans tous les langages il y a des gens qui se croient bon c'est pas propre a java ou c#, c'est la simplicité d'accès à ces plateformes et la demande actuel qui fait qu'il y en a un peu plus dessus mais de là a dire que c'est à cause du langage.

  9. #89
    Modérateur
    Avatar de koala01
    Profil pro Philippe Dunski
    Inscrit en
    octobre 2004
    Messages
    9 679
    Détails du profil
    Informations personnelles :
    Nom : Philippe Dunski
    Âge : 42

    Informations forums :
    Inscription : octobre 2004
    Messages : 9 679
    Points : 15 715
    Points
    15 715

    Par défaut

    Citation Envoyé par youtpout978 Voir le message
    Après c'est un choix des concepteurs de la plateforme, on ne peut pas dire qu'il soit mauvais ou bon et il est aussi lié a d'autre comportement de la plateforme, tout hérite d'objet ce qui permet de faire des méthodes de base qui marcheront avec tous les composants.

    Et dans tous les langages il y a des gens qui se croient bon c'est pas propre a java ou c#, c'est la simplicité d'accès à ces plateformes et la demande actuel qui fait qu'il y en a un peu plus dessus mais de là a dire que c'est à cause du langage.
    Mais le problème, c'est que vous ne vous rendez pas compte que ces deux langages vous mentent depuis le début...

    Quand l'étudiant écrit une classe en java, il peut croire (tant qu'on ne lui a rien dit) que sa classe fait partie d'une hiérarchie tout à fait à part... Non, non, non, pas de chance... elle hérite (sans qu'il n'ai rien demandé !!!) de Object, ce qui fait que, bien malgré lui, sa classe s'insère dans une hiérachie de classes mégalithique qui contient jusqu'à la classe créée par un étudiant à l'autre bout de la terre !!!

    Notes bien que je comprend ce choix de conception, mais il est clair (je crois que tu l'auras compris ) que je ne le partage pas .

    La deuxième chose sur laquelle le langage vous ment, c'est la notion d'interface, et, pour "faire passer la pilule", il a été jusqu'à introduire trois nouveaux mots clés : interface implements et inherits.

    Mais, si tu fais abstraction de ces mots clés, quelle différence y a-t-il entre une classe et une interface

    En gros:
    1. une classe hérite d'office de Object, et je ne sais plus si c'est le cas d'une interface
    2. une interface peut avoir des comportements indéfinis, mais pas une classe
    3. une classe peut etre instanciée, mais pas une interface... Seulement, cette troisième différence découle directement de la deuxième parce que les compilateurs ont horreur du vide.

    Finalement, une interface, ce n'est jamais... qu'une classe dénaturée

    Parce que, si tu regardes en termes de conception, tu constates qu'une classe est substituable à une interface (tu peux passer un objet "implémentant" une interface donnée à toute fonction qui attend cette interface).

    Oui, mais... attends un tout petit peu... dés que l'on parle de substitution, on parle du principe de substitution de liskov (le L de SOLID) !!!!

    Et que nous dit ce principe encore ?
    Citation Envoyé par Barbara Liskov
    Let q(x) be a property provable about objects x of type T. Then q(y) should be provable for objects y of type S where S is a subtype of T.
    ... for objects y of type S where S is a subtype of T...

    Ca fait quand même furieusement penser à l'héritage, tu ne trouves pas

    En fait, lorsque tu écris le mot clé implements, il ne faut pas te leurrer, en interne ca équivaut à un héritage, et qui plus est, multiple vu que la classe qui implémente une interface hérite d'office de Object!!!

    Alors, voilà un point de réflexion intéressant : D'un coté, le langage vous dit "attention malheureux, n'héritez jamais de deux classes en même temps".

    Mais, d'un autre coté, il vous dit aussi "Par contre, vous implémentez autant d'interface que vous le voulez".

    Mais comme une interface n'est au final qu'une classe dénaturée et que l'implémentation d'une interface correspond exactement à la définition de l'héritage,
    • Quel crédit peut on donner à un langage qui nous interdit d'un coté ce qu'il nous autorise (que dis-je... ce qu'il nous incite à faire le plus souvent possible) de l'autre
    • Quel crédit peut on accorder à un langage qui nous ment dés le départ sur la base de ses mots clé
    Ce n'est qu'un avis personnel, mais, à choisir, je préfère un langage qui ne m'interdit rien mais dont tout me met en garde sur sa complexité, et qui me garanti que je ne devrai pas payer ce que je n'utilise pas

    [EDIT]Finalement, je trouve presque cocasse le fait que ce soient en définitive ceux qui ont le plus dans leur culture de recourir à l'héritage multiple qui viennent nous demander quel intérêt on peut trouver à la technique

    A leur décharge, comme le langage leur ment, il y ont recours sans même s'en rendre compte
    [/EDIT]
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  10. #90
    Membre Expert

    Homme Profil pro John Doe
    Développeur .NET
    Inscrit en
    novembre 2010
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Nom : Homme John Doe
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : novembre 2010
    Messages : 1 138
    Points : 1 879
    Points
    1 879

    Par défaut

    Pour object je le savais, mon formateur en a parlé dès le début d'apprentissage du langage, après certains mots clef que tu cites n'existe pas en c#.
    Et les interfaces ont aussi été crée pour palier aux problèmes d"héritage multiple en évitant les problèmes que l'héritage multiple de classe peut introduire.

    Et non interface ne peut pas hérité d'autre chose mais implémenté d'autre interface.

    Et une classe peut avoir des comportements indéfini et là c'est une classe abstraite.

  11. #91
    Modérateur
    Avatar de koala01
    Profil pro Philippe Dunski
    Inscrit en
    octobre 2004
    Messages
    9 679
    Détails du profil
    Informations personnelles :
    Nom : Philippe Dunski
    Âge : 42

    Informations forums :
    Inscription : octobre 2004
    Messages : 9 679
    Points : 15 715
    Points
    15 715

    Par défaut

    Citation Envoyé par youtpout978 Voir le message
    Pour object je le savais, mon formateur en a parlé dès le début d'apprentissage du langage, après certains mots clef que tu cites n'existe pas en c#.
    Oui, j'ai utilisé les mots clés de java en fait
    Et les interfaces ont aussi été crée pour palier aux problèmes d"héritage multiple en évitant les problèmes que l'héritage multiple de classe peut introduire.
    Quel problème Celui de l'héritage en diamant sans doute

    Non seulement il y a une parade mais, quand on y est confronté, c'est bien souvent parce que l'on n'a pas choisi la granularité suffisante pour l'éviter

    Et non interface ne peut pas hérité d'autre chose mais implémenté d'autre interface.
    Non, mais comme je l'ai indiqué (j'attends qu'on me contredise sur ce point, d'ici là, je le considère comme acquis ) quand tu utilises le mot clé implements, cela revient strictement au même que si tu recourais à l'héritage
    Et une classe peut avoir des comportements indéfini et là c'est une classe abstraite.
    Ben oui, ca, on a aussi en C++ ... Mais alors, quelle est la différence entre une interface et une classe abstraite, mis à part le mot clé

    Tu tends presque à me donner raison, là...

    Tu me dit "une interface ne peut pas hériter d'une aure mais elle peut l'implémenter", alors que ma thèse est que cela revient au même.

    Puis tu me dis "une classe, tout comme une interface, peut avoir des comportement indéfinis".

    Mais, alors, cela n'indique pas clairement qu'une interface est finalement beaucoup plus proche d'une classe abstraite que vous ne semblez le croire
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  12. #92
    Responsable Sécurité

    Avatar de Neckara
    Homme Profil pro Denis
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    4 681
    Détails du profil
    Informations personnelles :
    Nom : Homme Denis
    Âge : 21
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2011
    Messages : 4 681
    Points : 13 640
    Points
    13 640

    Par défaut

    Et les interfaces ont aussi été crée pour palier aux problèmes d"héritage multiple en évitant les problèmes que l'héritage multiple de classe peut introduire.
    Cela me donne surtout l'impression de résoudre un pseudo-problème en rajoutant un problème encore plus gros...

    Je trouve que les interfaces façon C# conduisent à une certaine duplication du code alors que le seul problème de l'héritage multiple reste rare, que souvent il existe des alternatives et qu'il est très facile à résoudre...

  13. #93
    Membre Expert

    Homme Profil pro John Doe
    Développeur .NET
    Inscrit en
    novembre 2010
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Nom : Homme John Doe
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : novembre 2010
    Messages : 1 138
    Points : 1 879
    Points
    1 879

    Par défaut

    Une classe abstraite peut avoir des méthodes indéfini et défini, alors qu'une interface n'a que des méthodes indéfini.

    Et oui implémenter une interface c'est similaire à un héritage où il faudrait redéfinir toutes les méthodes.

    On ne se contente pas d'utiliser que des interfaces non plus on hérite aussi de classe (c'est même souvent le cas), surtout que l'utilité d'un vrai héritage multiple ne se présente que très rarement.

    Après il faut peut être avoir fait du c# ou du java pour comprendre le schmilblik, surtout que moi je suis loin d'être un expert et que je ne peux pas non plus tout expliquer.

  14. #94
    Expert Confirmé Sénior
    Avatar de Luc Hermitte
    Homme Profil pro Luc Hermitte
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    4 680
    Détails du profil
    Informations personnelles :
    Nom : Homme Luc Hermitte
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2003
    Messages : 4 680
    Points : 6 920
    Points
    6 920

    Par défaut

    Pour alimenter votre troll: http://blog.algolia.com/need-perform...ile-use-c-cpp/
    (je ne crois pas avoir vu passer ce lien)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média.

  15. #95
    Membre chevronné
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mars 2009
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mars 2009
    Messages : 424
    Points : 695
    Points
    695

    Par défaut

    Citation Envoyé par youtpout978 Voir le message
    On ne se contente pas d'utiliser que des interfaces non plus on hérite aussi de classe (c'est même souvent le cas), surtout que l'utilité d'un vrai héritage multiple ne se présente que très rarement.
    Il me semble que tu ne comprends pas ce qu'ils disent : Même quand tu "implémentes" des interfaces, tu fais de l'héritages multiple.

  16. #96
    Membre Expert

    Homme Profil pro John Doe
    Développeur .NET
    Inscrit en
    novembre 2010
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Nom : Homme John Doe
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : novembre 2010
    Messages : 1 138
    Points : 1 879
    Points
    1 879

    Par défaut

    Citation Envoyé par bretus Voir le message
    Il me semble que tu ne comprends pas ce qu'ils disent : Même quand tu "implémentes" des interfaces, tu fais de l'héritages multiple.
    Si je l'ai compris ça.
    Je vais arrêter là puisque le sujet du poste à l'origine n'est pas un débat entre l’implémentation de l'héritage multiple suivant le langage.

  17. #97
    Membre émérite Avatar de Gugelhupf
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2011
    Messages
    566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : décembre 2011
    Messages : 566
    Points : 855
    Points
    855

    Par défaut

    Bon sang, je repasse et je vois que vous avez débattu 3 pages sur l'héritage multiple. N'importe quoi

    Les interfaces c'est avant tout pour la conception, si on doit penser repenser à la conception dans 10 ans on n'est pas obligé de passer par de l'héritage multiple pour résoudre les problèmes, ça fait un bail que problème est résolu avec les Trait[/URL ou Mixin

  18. #98
    Modérateur
    Avatar de koala01
    Profil pro Philippe Dunski
    Inscrit en
    octobre 2004
    Messages
    9 679
    Détails du profil
    Informations personnelles :
    Nom : Philippe Dunski
    Âge : 42

    Informations forums :
    Inscription : octobre 2004
    Messages : 9 679
    Points : 15 715
    Points
    15 715

    Par défaut

    Sauf que, si tu y réfléchis bien, tes traits ou mixin... tu vas en souvent en hériter, et parfois même via un héritage multiple
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  19. #99
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro Loïc Joly
    Développeur informatique
    Inscrit en
    août 2004
    Messages
    4 932
    Détails du profil
    Informations personnelles :
    Nom : Homme Loïc Joly
    Âge : 39
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2004
    Messages : 4 932
    Points : 11 078
    Points
    11 078

    Par défaut

    Je dirais plutôt que le problème est résolu grâce à l'héritage multiple, qui permet d'éviter des structures lourdes et demandant beaucoup de code inutile et répétitif, comme peuvent l'être les mixin...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Et celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++

  20. #100
    Membre chevronné

    Inscrit en
    mai 2005
    Messages
    263
    Détails du profil
    Informations forums :
    Inscription : mai 2005
    Messages : 263
    Points : 609
    Points
    609

    Par défaut

    Je dirais que l'on a plus recours à l'héritage en C++ que dans d'autres langages par exemple :
    - pour faire des contrats avec le pattern NVI, cf. l'article de JolyLoic.
    - pour faire de la composition sans retaper du code (via héritage privé).

    Là où d'autres langages passent par d'autres mécanismes pour résoudre les même problèmes). Forcément, quand on dérive moins, l'héritage multiple se justifie moins (indice : une célébrité a pondu un joli troll dans ma signature).

    Pour moi, le RAII est meilleur exemple de point fort de C++ que l'héritage muliple. Les try..finally et autres blocs using sont nettement moins bien parce qu'ils font peser la responsabilité de la libération de ressources sur l'appelant.
    "By and large I'm trying to minimize mentions of D in C++ contexts because it's as unfair as bringing a machine gun to a knife fight." - Andrei Alexandrescu

+ Répondre à la discussion
Cette discussion est résolue.
Page 5 sur 5 PremièrePremière 12345

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •