27 votes

Comment expliquer un objet ?

Cela fait des années que je n'y ai pas pensé, mais je vais bientôt former de vrais juniors et je dois expliquer ce qu'est un objet à quelqu'un qui ne sait pas ce que c'est.

Sur la base de ce que vous utilisez dans le monde réel, quels sont les points clés des objets que je devrais m'attacher à expliquer. Par exemple :

  • Niveaux d'accès
  • Héritage
  • Encapsulation
  • Polymorphisme
  • Abstraction
  • Interfaces

117voto

Joonas Pulakka Points 20361

À l'époque où j'apprenais la POO, j'étais perplexe devant toutes ces métaphores de type "voiture / animal / autre". Elles ne m'aidaient pas du tout. Puis quelqu'un a dit qu'une classe/objet n'était qu'un ensemble de variables (membres de la classe) et de fonctions pour les gérer (méthodes) - ce qui est vrai. C'était aussi simple que cela !

Utiliser toutes ces métaphores populaires ne fait qu'induire les gens en erreur, à mon avis. Les voitures n'ont pas grand-chose en commun avec la POO. Il est facile de comprendre ces métaphores. quand vous savez déjà ce qu'ils signifient, mais essayer de commencer avec eux... non.

43voto

Chuck Points 138930

J'aime la métaphore originale utilisée par Alan Kay, qui a inventé la "programmation orientée objet" : Les objets sont comme les cellules d'un corps. Elles sont toutes programmées avec leurs propres comportements et communiquent en se transmettant des messages, auxquels elles répondent avec leur propre comportement défini en interne. Aucune cellule ne sait ce qui se trouve à l'intérieur d'une autre - elles savent simplement comment gérer leurs propres tâches et communiquer entre elles.

13voto

Paddy Points 16834

Si vous voulez quelque chose de vraiment utile, n'oubliez pas d'expliquer pourquoi. C'est un concept qui semble être souvent oublié - pourquoi est-ce utile...

10voto

Terry Wilcox Points 6999

Les métaphores animal/voiture existent pour expliquer la philosophie de la conception orientée objet, qui est bien plus importante à comprendre que la simple mise en œuvre.

Si l'on saute les métaphores et que l'on commence par "il n'y a que des variables et des fonctions pour les gérer", on passe à côté de toute description de la responsabilité. J'ai constamment affaire à des développeurs qui ne tiennent aucun compte de la responsabilité des classes (voir Cartes CRC ), mais au lieu de cela, ils placent les données et les méthodes dans les classes, là où elles sont en cours d'édition à ce moment-là.

Vous manquez aussi le "dis-le, ne demande pas". La métaphore animale fonctionne bien ici. En OO, je dis au chien de se nettoyer. Je ne lui demande pas comment il va s'y prendre, car c'est une boîte noire dont je ne veux pas voir l'intérieur. Le chien sait, donc je n'ai pas besoin de le faire.

Veillez simplement à enseigner à vos élèves qu'il ne s'agit que de métaphores, et non de la réalité. Une "tempête parfaite" dans la "fonte des hypothèques" n'implique en réalité ni tempête ni quoi que ce soit qui fonde.

5voto

Gibsnag Points 447

Je partirais des niveaux d'accès et de l'encapsulation pour aller plus loin. L'encapsulation est un concept relativement simple à appréhender et présente des avantages évidents. À partir de là, vous pouvez parler d'abstraction, d'héritage et de polymorphisme assez facilement.

En tant qu'étudiant de premier cycle, j'ai trouvé que l'encapsulation était un bon concept d'ancrage dans un domaine assez abstrait.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X