Hi,
ich habe lange mit mir gerungen, ich möchte dir Kritik dalassen.
Meiner Meinung werden die besten Konzepte unabhängig von Details erklärt. Mit dem größeren Bild und dem Verständnis für das grössere Bild lassen sich dann verschiedenste Syntaxe, Sprachen, etc verstehen und mit Übung beherrschen.
Ab ins Detail:
Du leitest in ein Tutorial wie sich OOP innerhalb von javascript darstellt. Könnte es hier hilfreich sein, vorrausgehend einmal OOP kurz zusammenzufassen und DANN auf die Eigenarten von javascript einzugehen?
Innerhalb von "Alles ist ein Objekt" (https://de.wikipedia.org/wiki/Objektorientierte_Programmierung / Definition / Kay / Everything is an object) leitest du von prozeduralem Programmieren ein.
"In JavaScript gilt der Grundsatz, dass alles ein Objekt ist. Wenn wir z.B. eine Funktion definieren, dann ist die Funktion ein function-Objekt. Das macht es möglich, eine Funktion als Parameter an eine andere Funktion zu übergeben:"
Ich denke, der eigentliche Grund dafür liegt hier: https://de.wikipedia.org/wiki/Funktion_h%C3%B6herer_Ordnung
"Das Beispiel ist kaum praxistauglich," Dinge die geschrieben stehen, setzen sich fest. Kannst du eventuell anstatt des Beispiels ein praxistaugliches nehmen?
"Echte Anwendungsfälle sind die Ereignisbehandlung oder die zeitgesteuerte Ausführung von Funktionen (setInterval oder setTimeout), sowie das Konzept der Promises. "
Das sind imho ablenkende Details, die mit OO/OOP nichts zu tun haben. Warum den Leser mit Irrelevantem Ablenken?
"Funktionsdefinitionen": Du leitest ganz oben mit "Es baut auf den beiden Tutorials Grundlagen der Programmierung und Grundlagen des DOM auf. " ein, jetzt definierst du Funktionen; Die sind oben bereits wissenstechnisch vorrausgesetzt. Warum?
Auch dort finden sich imho wieder ablenkende Dinge wie "Das Schlüsselwort const ist im Sprachstandard ECMA 6 eingeführt worden", ... Was hilft das dem Leser OO/OOP zu verstehen?
...
Dieses Theme setzt zieht sich weiter in den Kapiteln durch. Kannst du dich und die Beispiel auf das Wesentliche beschränken, was OO/OOP erklärt?
"Was ist eigentlich ein Objekt?" Für mich unvollständig, wenn man z.B. Kay nimmt: "“OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.” würde ich hier erwarten, dass alle diese Dinge kurz beschrieben werden, und später in Unterkapiteln erklärt und dann im Kontext von javascript dargestellt werden.
"Komplexe Datentypen" Du beginnst hier mit dem Bild des Punktes auf der Erde. Kannst du diese "Geschichte" als roten Faden durch die anderen Kapitel/Beispiele führen (Im nächsten Kapitel geht es um "Personen" und nicht mehr um "Punkte"). Gibt es vielleicht einen anderen konsistenten, roten Beispielfaden?
"Methoden" der hier relevante Teil, der meines Erachtens zu kurz kommt, ist "this". Der zentrale Unterschied zwischen function und method ist doch, dass eine Methode nur im Kontext von Zustand (State = Objekinstanz = this) benutzbar ist? Auch hier finde ich, für mich, wieder verwirrende Zwischeninfos, z.B. "(doch, im Kontext von window und kann mit window.f() aufgerufen werden)".
"Objektliterale": -> "Schreibweise eines Objektliterals war übrigens die Grundlage für das mittlerweile im Internet sehr verbreitete JSON-Format." OO/OOP? Wichtig oder Ablenkung vom eigentlichen Thema?
...
Ich würde wie folgt vorgehen:
- Grosses Bild (OO), frei von javascript
- Vorraussetzungen (was muss ich verstanden haben, damit ich das Tutorial verstehe?)
- Einzelne Kapitel:
- Definition mit Lebensechtem, code-freiem Beispiel
- Umsetzung der Beispiele konkret mit Javascript, Positive Beispiele (also solche, wo nicht "aber eigentlich macht man es so nicht" dransteht)
- Weitere Detailinfos als eigenes Kapitel, z.B. "Did you know, that JSON ...". Hier hat man sich entweder die notwendigen Kontexte erarbeitet und liest das Kapitel nicht.
Nichtsdestotrotz weiss ich, dass es sehr schwierig ist, solche Inhalte zu vermitteln, deswegen hast Du meinen grössten Respekt für den jetzigen Inhalt!
gruss
ps: als Inspiration: https://quantum.country/qcvc - gerade in Bezug auf "roter Faden"