Questions courantes que les élèves peuvent se poser lorsqu'ils apprennent la POO?
Lire cette question Avons-nous vraiment besoin de langages OO pour gérer la complexité des logiciels? sur l'un des sites SE et mes propres expériences dans l'enseignement du concept orienté objet, par exemple Un véritable exemple pratique pour enseigner les concepts orientés objet et la programmation (en python) m'a amené à me demander quelles sont les questions courantes que les étudiants peuvent se poser lorsqu'ils apprennent la POO pour la première fois ?
Par exemple, dans cette question que l'auteur a posée,
Je suis un étudiant débutant en CS ... Au premier semestre, nous avons été initiés aux concepts de POO comme l'encapsulation, le masquage de données, la modularité ...
Mais je pense que tous les principes utilisés pour gérer la complexité comme la modularité, l'encapsulation, le masquage des données, etc. peuvent être très facilement implémentés par les langages procéduraux. Alors pourquoi vraiment POO si nous pouvons gérer la complexité sans elle?
Je dois aussi admettre que j'ai ma propre lutte, par exemple j'ai posé cette question. Est- ce que la POO insiste trop sur l'importance du nom et place ainsi l'action / le verbe dans la position la moins importante? sur ce site aussi (aucun élève ne m'a posé cette question cependant). Ma question a été fermée et a même obtenu 2 votes de suppression, mais c'est toujours ma préoccupation.
Si mes étudiants ou mes collègues qui ont de l'expérience avec javascript et aiment apprendre la POO, je les laisserai toujours comparer des moments avec des dates-fns , à la fois gérer la date et fournir les fonctions similaires, les deux font du bon travail, mais momentjs une bibliothèque POO et date-fns est une bibliothèque de fonctions.
Mon objectif est de leur faire comprendre qu'il existe plusieurs façons de faire les choses.
Alors, quelles sont les questions courantes que posent vos élèves?
Réponses
J'ai lu la plupart des questions votées avec des balises orientées objet sur softwareengineering.stackexchange.com et stackoverflow.com . Je pense que certaines questions sur le site d'ingénierie logicielle sont assez courantes lors de l'apprentissage de la POO, tandis que les questions sur le stackoverflow sont plus liées à des questions de programmation pratiques qui sont plus probablement posées par les professionnels.
J'ai donc énuméré quelques questions du site d'ingénierie logicielle,
- Pourquoi est-il bon de diviser un programme en plusieurs classes? . Cette question a en effet été posée par un lycéen.
- Les objets en POO doivent-ils représenter une entité? . Mes étudiants me posent cette question.
- Quel est l'avantage de la programmation orientée objet par rapport à la programmation procédurale? celle-ci est en quelque sorte liée à la question "gérer la complexité des logiciels" dans ma question et je discute avec mes collègues d'une autre question intéressante qui a été posée sur quora Comment Linux maintient-il une base de code aussi volumineuse alors que C n'est pas un langage orienté objet? La base de code est-elle complètement foirée?
- La POO tient-elle la promesse de réutilisation du code? Quelles alternatives existe-t-il pour réaliser la réutilisation du code? Je ne sais pas si les étudiants poseront cette question et j'ai aussi mon propre doublé à la question.
- Lors de l'écriture de code orienté objet, dois-je toujours suivre un modèle de conception? . Ce site a également une question sur les modèles de conception. Quelle est la gravité d'un cours d'informatique qui n'enseigne pas les modèles de conception?
- Explication sur la façon dont «Dites, Ne demandez pas» est considéré comme un bon OO . Ce n'est qu'après avoir acquis des expériences de codage qu'ils peuvent poser / apprécier la question. Mais c'est une bonne.
- Dois-je créer une classe si ma fonction est complexe et contient beaucoup de variables? Une réponse était également ma recommandation à mes étudiants lorsqu'ils ont une telle question, "Utilisez une classe, mais fournissez également une fonction autonome, qui ne construit que l'objet, appelle la méthode et renvoie le résultat, la classe que vous utilisez vraiment en interne devient juste un détail de mise en œuvre de votre fonction publique "
Quora a également quelques questions intéressantes que je pense que les gens poseront lorsqu'ils apprendront la POO pour la première fois, j'en énumère quelques-unes ici:
- Est-ce que n'importe qui (dans la position d'un programmeur) peut survivre dans l'industrie technologique moderne (logiciel ou pas de logiciel) sans POO?
- À quelle fréquence les développeurs de logiciels utilisent-ils la POO? . Une réponse de Kurt Guntheroth est intéressante "Chaque fois que vous écrivez un programme de plus de 1 000 lignes, vous devriez utiliser la POO. 1 000 lignes? Pourquoi est-ce que ...?"
- Quand la programmation orientée objet ne convient-elle pas?
J'espère pouvoir obtenir d'autres réponses.
C'est une très belle question! Votre réponse couvre également beaucoup de terrain.
Je voudrais proposer une réflexion sur ce qui pourrait motiver ces questions.
D'après mon expérience, les apprenants qui rencontrent la POO au début de leur parcours doivent faire face à quelques défis différents, notamment:
- Ils n'ont pas encore rencontré le (s) problème (s) résolu (s) par la POO.
- Ils pensent qu'il existe une solution parfaite à tous les défis de programmation qui attendent d'être découverts.
Celles-ci suscitent toute une série de questions, de confusions et, dans certains cas, d'insécurités.