• [^] # Re: Langage objet...

    Posté par . En réponse à la dépêche Les nouveautés de Qt 4. Évalué à 2.

    > Bien concevoir les interfaces ne suffit pas avec le C++, justement: si on n'a pas mis de 'virtual' partout, il va passer par l'interface de la classe parente et pas par celle de l'objet sur lequel on l'applique.

    Si tu n'as pas mis virtual partout c'est que tu programmes sans respecter la conception que tu viens de faire. Il n'est pas interdit d'apprendre un minimum un langage avant de l'employer.

    > Pour moi la réutilisabilité via héritage est absolument essentielle pour parler de langage à objet. Sinon quel est l'intérêt de distinguer par rapport aux autres langages?

    Le C++ le permet sans problème, et même sans le virtual il y a bien réutilisabilité. Ce dont tu parles c'est le polymorphisme de substitution et ce n'est qu'un des aspects de l'objet.

    > Oui, on peut faire de l'objet en C++ (avec des virtual de partout), oui on peut faire de l'objet en C (exemple: glib-gobject-gtk) ; en fait on peut faire du truc genre objet dans à peu près n'importe quel langage.

    Mais le C++ supporte la POO explicitement, dans le langage, contrairement au C. Il n'y a pas besoin de « bidouiller » mais de savoir l'utiliser, ce qui est la moindre des choses quand on programme. Inutile de cacher l'incompétence du programmeur derrière le langage. Tu peux dire qu'il faut faire plus attention, ou avoir une plus grande expérience, mais ça ne joue en rien sur les aspects objet (du moins si tu compares à Java).

    > Je réaffirme donc: C++ n'est pas un langage à objets. On peut le forcer à en faire, mais il faut le prévoir.

    Non on ne le « force » pas plus qu'on ne force Java à faire de l'objet. Mais ni l'un ni l'autre ne sont des « langages objet » de toute façon, car ça sous-entend que tout est objet dans le langage. C++ propose plusieurs paradigmes, dont la POO. Java privilégie et pas vraiment les autres.

    > PS: la pwlib (bibliothèque sur laquelle s'appuie gnomemeeting) est en C++, avec des classes et de l'héritage simple (ie: les classes ne réimplémentent pas ce qu'il y a dans leurs parentes -- sauf cas très exceptionnel) à gogo. Mettre au point un système de modules pour les pilotes matériels a été une horreur, parce que ça nécessitait du vrai héritage: il a fallu reprendre *tous* les étages... question réutilisabilité, on peut difficilement appeler ça une réussite.

    Alors gueule contre la conception et la version initiale de pwlib. C++ permettait dès le départ d'avoir des fonctions virtuelles. Tu ne peux pas accuser le langage d'une erreur de conception, ou de l'incompétence de celui qui a transposé la conception ainsi si la conception précisait que ça devait être du virtual.