Classes en C++, Smalltalk, Objective-C et Java

Todd Blanchard (qui était venu à la première SmalltalkParty à Paris en 2002) dans ce billet compare les notions de classe en C++, Smalltalk, Objective -C et Java. Tous les langages ne sont pas nés équivalents :

  • C++ n’a pas de représentation explicite d’une classe. En fait, la notion de classe est plus un sucre syntaxique, où les méthodes sont représentées par des fonctions globales.
    On croit que l’on fait des classes, mais en fait ce n’est pas réellement le cas … Il n’y a pas de possibilité de désigner la classe par this, ce qui nécessite d’encoder en dur le nom des classes. Il n’y également pas de possibilité d’avoir des méthodes abstraites de création d’objet, sans passer par une méthode complexe de Factory.
  • Smalltalk représente les classes par des objets ordinaires. self permet d’accéder à la classe elle-même, et super à sa super-classe. Les classes Smalltalk prennent la responsabilité des instances et sont donc des Factory par défaut. Todd montre un exemple issu de Squeak montrant le bien-fondé de cette approche.
  • Objective-C est très proche de son modèle (Smalltalk) avec quelques contraintes supplémentaires (liés à sa consanguinité avec C).
  • Java enfin est finalement plus proche de C++ que de Smalltalk sur cet aspect. Même s’il existe la classe java.lang.Class pour représenter les classes sous forme d’objet, la création des objets n’est pas réalisée par cette classe. Plus étonnant, il n’est pas possible d’accéder à l’objet représentant la classe sans encoder directement le nom de classe (ce qui limite toute réutilisation pour les sous-classes).

WordPress database error: [Table 'doesnotunderstand.wp_comments' doesn't exist]
SELECT * FROM wp_comments WHERE comment_post_ID = '36' AND comment_approved = '1' ORDER BY comment_date

Comments are closed.