Objekt-First: Unterschied zwischen den Versionen

Die Seite wurde neu angelegt: „== Einführung == Der Objekt-First-Ansatz ist eine didaktische Methode, die im modernen Java-Unterricht eine hohe Bedeutung hat. Anstatt mit statischen Methoden, primitiven Datentypen und Kontrollstrukturen zu beginnen, stellen man hier Objekte und Klassen von Anfang an in den Mittelpunkt. Das entspricht der wahren Natur von Objektorientierung|objektorientierte…“
 
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 7: Zeile 7:
Die reale Welt besteht aus [[Objekt|Objekten]] (Autos, Kunden, Rechnungen). Der Objekt-First-Ansatz erlaubt es uns, diese realen Konzepte sofort in [[Quellcode|Code]] abzubilden. Schüler verstehen schnell, dass ein [[Objekt]] [[Zustand]] ([[Attribut|Attribute]]) und Verhalten ([[Methode|Methoden]]) besitzt. Dies ist intuitiver als abstrakte prozedurale [[Anweisung|Anweisungen]].
Die reale Welt besteht aus [[Objekt|Objekten]] (Autos, Kunden, Rechnungen). Der Objekt-First-Ansatz erlaubt es uns, diese realen Konzepte sofort in [[Quellcode|Code]] abzubilden. Schüler verstehen schnell, dass ein [[Objekt]] [[Zustand]] ([[Attribut|Attribute]]) und Verhalten ([[Methode|Methoden]]) besitzt. Dies ist intuitiver als abstrakte prozedurale [[Anweisung|Anweisungen]].


2. Kapselung von Anfang an: 🛡️
2. Kapselung von Anfang an:
Schüler lernen direkt, dass [[Daten]] (private [[Attribut|Attribute]]) und die Operationen auf diesen Daten (öffentliche [https://wiki.flbk-hamm.de/Methode#Sondierende_Methode Getter] und [[https://wiki.flbk-hamm.de/Methode#Ver%C3%A4ndernde_Methode|Setter]]) zusammengehören. Das fördert von Anfang an das grundlegende [[Objektorientierung|objektorientierte]] Prinzip der Kapselung.
Schüler lernen direkt, dass [[Daten]] (private [[Attribut|Attribute]]) und die Operationen auf diesen Daten (öffentliche [https://wiki.flbk-hamm.de/Methode#Sondierende_Methode Getter] und [[https://wiki.flbk-hamm.de/Methode#Ver%C3%A4ndernde_Methode Setter]]) zusammengehören. Das fördert von Anfang an das grundlegende [[Objektorientierung|objektorientierte]] Prinzip der Kapselung.


3. Vermeidung des "Static-Main-Problems": 🚫
3. Vermeidung des "Static-Main-Problems":
Der prozedurale Start im leeren public static void main(String[] args) erzeugt eine künstliche Welt, in der alles [[static]] sein muss. Schüler tun sich später schwer zu verstehen, wann sie [[Instanz|Instanzen]] (new Objekt()) erstellen müssen und wann nicht. Beim Objekt-First-Ansatz wird die Instanziierung zum Standard.
Der prozedurale Start im leeren public static void main(String[] args) erzeugt eine künstliche Welt, in der alles [[static]] sein muss. Schüler tun sich später schwer zu verstehen, wann sie [[Instanz|Instanzen]] (new Objekt()) erstellen müssen und wann nicht. Beim Objekt-First-Ansatz wird die Instanziierung zum Standard.


4. Bessere [[Projekt]]struktur: 🏗️
4. Bessere [[Projekt]]struktur:
Der Ansatz erzwingt von Beginn an eine saubere Struktur, bei der Logik in thematisch getrennten [[Klasse|Klassen]] liegt. Dies bereitet optimal auf größere Berufsprojekte vor.
Der Ansatz erzwingt von Beginn an eine saubere Struktur, bei der Logik in thematisch getrennten [[Klasse|Klassen]] liegt. Dies bereitet optimal auf größere Berufsprojekte vor.


Zeile 31: Zeile 31:
Nachdem die Grundlagen sitzen, folgen die weiterführenden [[Objektorientierung|objektorientierten]] Prinzipien:
Nachdem die Grundlagen sitzen, folgen die weiterführenden [[Objektorientierung|objektorientierten]] Prinzipien:


[[Vererbung]] (Inheritance): Wie man Code wiederverwendet (z.B. LKW erbt von Fahrzeug).
* [[Vererbung]] (Inheritance): Wie man Code wiederverwendet (z.B. LKW erbt von Fahrzeug).
 
* [https://wiki.flbk-hamm.de/Vererbung#Polymorphie Polymorphie] (Polymorphism): Die Fähigkeit, dass eine Methode in verschiedenen Klassen unterschiedlich implementiert werden kann.
[[Polymorphie]] (Polymorphism): Die Fähigkeit, dass eine Methode in verschiedenen Klassen unterschiedlich implementiert werden kann.
* [[Abstract|Abstrakte]] Klassen und Interfaces: Wie man Vorgaben für das Verhalten definiert, ohne die gesamte Implementierung zu liefern.
 
[[Abstract|Abstrakte]] Klassen und Interfaces: Wie man Vorgaben für das Verhalten definiert, ohne die gesamte Implementierung zu liefern.


Durch diese Vorgehensweise lernen die Schüler Java so, wie es in der professionellen Softwareentwicklung angewendet wird. Sie schreiben von der ersten Stunde an objektorientierten Code, der leicht zu warten und zu erweitern ist.
Durch diese Vorgehensweise lernen die Schüler Java so, wie es in der professionellen Softwareentwicklung angewendet wird. Sie schreiben von der ersten Stunde an objektorientierten Code, der leicht zu warten und zu erweitern ist.