Häufige Fragen, die Schüler stellen können, wenn sie OOP lernen?
Lesen dieser Frage Brauchen wir wirklich OO-Sprachen, um die Komplexität der Software zu verwalten? Auf einer der SE-Websites und aufgrund meiner eigenen Erfahrungen mit dem Unterrichten objektorientierter Konzepte, z. B. Ein reales praktisches Beispiel für das Unterrichten objektorientierter Konzepte und Programmierung (in Python), habe ich mich gefragt, welche allgemeinen Fragen die Schüler möglicherweise stellen, wenn sie OOP zum ersten Mal lernen .
Zum Beispiel stellte der Autor in dieser Frage:
Ich bin ein CS-Anfänger ... Im ersten Semester wurden wir mit OOP-Konzepten wie Kapselung, Verstecken von Daten, Modularität ... vertraut gemacht.
Ich denke jedoch, dass alle Prinzipien, die zur Verwaltung der Komplexität verwendet werden, wie Modularität, Kapselung, Ausblenden von Daten usw., sehr einfach durch prozedurale Sprachen implementiert werden können. Warum also wirklich OOP, wenn wir die Komplexität ohne sie bewältigen können?
Ich muss auch zugeben, dass ich einen eigenen Kampf habe, z. B. habe ich diese Frage gestellt. Überbetont OOP die Wichtigkeit des Substantivs und setzt daher die Aktion / das Verb auch auf dieser Site in die weniger wichtige Position (kein Schüler hat mir diese Frage gestellt). Meine Frage wurde geschlossen und bekam sogar 2 Löschstimmen, aber das ist immer mein Anliegen.
Wenn meine Schüler oder Kollegen, die Erfahrung mit Javascript haben und gerne OOP lernen, sie immer Momentjs mit Datumsangaben vergleichen lassen , beide sich mit Datum befassen und ähnliche Funktionen bereitstellen, machen beide gute Arbeit, aber Momentjs eine OOP-Bibliothek und date-fns ist eine Funktionsbibliothek.
Mein Ziel ist es, sie verstehen zu lassen, dass es mehr als eine Möglichkeit gibt, Dinge zu tun.
Was sind die häufigsten Fragen, die Ihre Schüler stellen?
Antworten
Ich habe die meisten gestimmten Fragen gelesen, die als objektorientiert auf softwareengineering.stackexchange.com und stackoverflow.com gekennzeichnet sind . Ich bin der Meinung, dass einige Fragen auf der Softwareengineering-Website beim Erlernen von OOP häufig vorkommen, während Fragen zum Stackoverflow eher mit praktischen Programmierfragen zusammenhängen, die eher von Fachleuten gestellt werden.
Also habe ich einige Fragen von der Softwareengineering-Website aufgelistet,
- Warum ist es gut, ein Programm in mehrere Klassen aufzuteilen? . Diese Frage wurde tatsächlich von einem Schüler gestellt.
- Müssen Objekte in OOP eine Entität darstellen? . Meine Schüler stellen mir diese Frage.
- Was ist der Vorteil der objektorientierten Programmierung gegenüber der prozeduralen Programmierung? Diese Frage hat etwas mit der Frage "Software-Komplexität verwalten" in meiner Frage zu tun, und ich diskutiere mit meinen Kollegen eine weitere interessante Frage, die zu quora gestellt wurde. Wie unterhält Linux eine so große Codebasis, wenn C keine objektorientierte Sprache ist? Ist die Codebasis völlig durcheinander?
- Erfüllt OOP das Versprechen der Wiederverwendung von Code? Welche Alternativen gibt es, um die Wiederverwendung von Code zu erreichen? Ich bin mir nicht sicher, ob die Schüler diese Frage stellen werden, und ich habe auch mein eigenes Doppel zu dieser Frage.
- Sollte ich beim Schreiben von objektorientiertem Code immer einem Entwurfsmuster folgen? . Diese Seite hat auch eine Frage zu Entwurfsmustern: Wie schlecht ist ein Informatikkurs, in dem keine Entwurfsmuster vermittelt werden?
- Erklärung, wie „Erzählen, nicht fragen“ als gutes OO angesehen wird . Erst wenn sie einige Codierungserfahrungen gesammelt haben, können sie die Frage stellen / schätzen. Aber es ist gut.
- Sollte ich eine Klasse erstellen, wenn meine Funktion komplex ist und viele Variablen enthält? Eine Antwort gab es auch meine Empfehlung an meine Schüler, wenn sie die Frage haben: "Verwenden Sie eine Klasse, stellen Sie aber auch eine freistehende Funktion bereit, die nur das Objekt erstellt, die Methode aufruft und das Ergebnis zurückgibt, die Klasse, die Sie intern wirklich verwenden." wird nur ein Implementierungsdetail Ihrer öffentlichen Funktion "
Quora hat auch einige interessante Fragen, die die Leute stellen werden, wenn sie OOP zum ersten Mal lernen. Ich liste hier einige auf:
- Kann jemand (in der Position eines Programmierers) in der modernen Tech-Industrie (Software oder keine Software) ohne OOP überleben?
- Wie oft verwenden Softwareentwickler OOP? . Eine Antwort von Kurt Guntheroth ist interessant: "Jedes Mal, wenn Sie ein Programm schreiben, das länger als 1.000 Zeilen ist, sollten Sie OOP verwenden. 1000 Zeilen? Warum ist das ...?"
- Wann passt objektorientierte Programmierung nicht?
Hoffentlich kann ich noch andere Antworten bekommen.
Das ist eine wirklich schöne Frage! Ihre Antwort deckt auch viel Boden ab.
Ich möchte darüber nachdenken, was diese Fragen motivieren könnte.
Nach meiner Erfahrung müssen sich Lernende, die zu Beginn ihrer Reise auf OOP stoßen, mit einigen unterschiedlichen Herausforderungen auseinandersetzen, darunter:
- Sie haben die Probleme, die OOP löst, noch nicht erlebt.
- Sie glauben, dass es eine perfekte Lösung für alle Programmierprobleme gibt, die darauf warten, entdeckt zu werden.
Diese führen zu einer ganzen Reihe von Fragen, Verwirrungen und in einigen Fällen zu Unsicherheiten.