Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
programmierung:programmier_paradigma [2024/07/03 15:34] – ↷ Page name changed from programmierung:objekt-orientierte_programmierung_oop to programmierung:programmier_paradigma sweprogrammierung:programmier_paradigma [2025/12/20 14:53] (current) – external edit 127.0.0.1
Line 19: Line 19:
 Die OOP ist besonders gut geeignet für komplexe Programme, die aktualisiert oder gewartet werden müssen. Sie basiert auf dem Konzept von Objekten, die Daten und den zugehörigen Code enthalten.  Die OOP ist besonders gut geeignet für komplexe Programme, die aktualisiert oder gewartet werden müssen. Sie basiert auf dem Konzept von Objekten, die Daten und den zugehörigen Code enthalten. 
  
-===== Beispielklasse ''Hund'' ===== 
-Hier findest du ein Beispiel. Wir implementieren eine Klasse ''Hund''. Diese Klasse soll "den Hund", wie er in der Welt vorkommt beschreiben. Dabei geht es nicht darum, mit der Klasse einen speziellen Hund, der bei mir auf dem Sofa liegt zu beschreiben. Es geht vielmehr darum, viele **Eigenschaften** und **Aktionen**, die das __Hund-Sein__ ausmachen, zu beschreiben. 
  
-In unserem Beispiel haben wir die    
-  * **Eigenschaften** Name und Alter und die    
-  * **Aktion** bellen als wichtig erachtet und implementiert. 
- 
-Diese Eigenschaften oder ''Attribute'' und Aktionen oder ''Methoden'' sind so universal für alle Hunde, dass wir sie in den Bauplan für Hunde einbauen. 
- 
-Wann immer wir die Klasse ''Hund'' zur Hand nehmen, können wir aus dieser Blaupause jeweils konkrete Hunde erzeugen, die diese Eigenschaften besitzen. Denke bei der Benutzung einer Klasse an eine Copy&Paste-Aktion: Ein einmal generiertes Objekt wird wieder und wieder eingefügt. 
- 
-Kümmer dich zunächst nicht um Begriffe wie ''Konstruktor'', ''Getter'' und ''Setter''. Wir werden auf den folgenden Seiten Step by Step diese Begriffe einführen. 
- 
-<code Java [enable_line_numbers="true" ]> 
-// Beispiel einer einfachen Klasse in OOP (Java) mit Getter- und Setter-Methoden 
- 
-public class Hund { 
-    // Attribute 
-    private String name; 
-    private int alter; 
- 
-    // Konstruktor 
-    public Hund(String name, int alter) { 
-        this.name = name; 
-        this.alter = alter; 
-    } 
- 
-    // Getter-Methode für den Namen 
-    public String getName() { 
-        return name; 
-    } 
- 
-    // Setter-Methode für den Namen 
-    public void setName(String name) { 
-        this.name = name; 
-    } 
- 
-    // Getter-Methode für das Alter 
-    public int getAlter() { 
-        return alter; 
-    } 
- 
-    // Setter-Methode für das Alter 
-    public void setAlter(int alter) { 
-        this.alter = alter; 
-    } 
-     
-    // Methoden 
-    public void bellen() { 
-        System.out.println(name + " sagt: Wuff!"); 
-    } 
- 
-    public static void main(String[] args) { 
-        Hund meinHund = new Hund("Bello", 2); 
-        System.out.println("Der Name meines Hundes ist " + meinHund.getName() + "."); 
-        System.out.println("Mein Hund ist " + meinHund.getAlter() + " Jahre alt."); 
-        meinHund.bellen(); 
-    } 
-} 
- 
- 
-</code> 
- 
- 
-===== Step 1: Erzeugen der Klasse ===== 
- 
-Lass uns zunächst die Klasse vereinfachen und all die noch unbekannten Konzepte entfernen. 
- 
-Übrig bleibt eine aufgeräumte Klasse mit zwei Attributen (''name'' und ''alter'') sowie einer Methode ''bellen''. 
- 
-<code Java [enable_line_numbers="true",highlight_lines_extra="3,4,7" ]> 
-public class Hund { 
-    // Attribute 
-    String name; 
-    int alter; 
-     
-    // Methoden 
-    void bellen() { 
-        System.out.println(name + " sagt: Wuff!"); 
-    } 
- 
-    public static void main(String[] args) { 
-        Hund meinHund = new Hund(); 
-        meinHund.name = "Bello"; 
-        meinHund.bellen(); 
-    } 
-} 
- 
- 
-</code> 
- 
-----> 
-===== Step 2: Erzeugen eines Objekts ===== 
-Wir können nun ein **Objekt (Instanz) der Klasse Hund erzeugen**.  
- 
-Analog zur Vorgehensweise bei der Deklaration und Initialisierung von Variablen, bsp. einer Ganzzahlt ''int x = 5'', erzeugen wir eine Variable ''meinHund''. 
- 
-Diese Variable ''meinHund'' hat als Datentyp die Klasse ''Hund'' und wir initialisieren die Variable, indem wir ein neues Objekt der Klasse erzeugen: ''new Hund()''. 
-----> 
-<code Java [enable_line_numbers="true",highlight_lines_extra="12" ]> 
-public class Hund { 
-    // Attribute 
-    String name; 
-    int alter; 
-     
-    // Methoden 
-    void bellen() { 
-        System.out.println(name + " sagt: Wuff!"); 
-    } 
- 
-    public static void main(String[] args) { 
-        Hund meinHund = new Hund(); 
-        meinHund.name = "Bello"; 
-        meinHund.bellen(); 
-    } 
-} 
- 
- 
-</code> 
-----> 
-===== Step 3: Zuweisung von Werten an die Attribute ===== 
-Nun haben wir ein Objekt ''meinHund'', das alle Eigenschaften der Klasse ''Hund'' als Anlage in sich trägt. Allerdings fehlen noch konkrete Werte. 
- 
-Diese weisen wir bsp. in Zeile 13 zu: Hier bekommt das Objekt ''meinHund'' den spezifischen Namen "Bello" zugewiesen. 
- 
-**Spoiler:** Dieser Zugriff wird in Zukunft so nicht mehr klappen. Wir werden über sog. ''Setter'' oder gleich über ''Konstruktoren'' die Werte zuweisen. Aber für den Augenblick klappt das auch so und es ist auch kein Code, den der Java-Compiler ablehnt.  
-----> 
-<code Java [enable_line_numbers="true",highlight_lines_extra="13" ]> 
-public class Hund { 
-    // Attribute 
-    String name; 
-    int alter; 
-     
-    // Methoden 
-    void bellen() { 
-        System.out.println(name + " sagt: Wuff!"); 
-    } 
- 
-    public static void main(String[] args) { 
-        Hund meinHund = new Hund(); 
-        meinHund.name = "Bello"; 
-        meinHund.bellen(); 
-    } 
-} 
- 
- 
-</code> 
-----> 
-===== Step 4: Ausführen einer Methode ===== 
-Nun, da wir ein Objekt der Klasse ''Hund'' mit richtigem, echten Hundenamen haben, können wir die Klassenmethode ''bellen'' von unserem Hund ''meinHund'' ausführen lassen. Weniger verdreht ausgedrückt lassen wir unseren Hund bellen und es wird uns auch gleich mit geliefert, wie der Hund denn heißt. 
- 
-<wrap hi>Es geht hier wohlgemerkt nicht darum, wie der Variablenname des erzeugten Objekts lautet. Es geht darum, wie der konkrete Name des erzeugten Objekts ''meinHund'' lautet.</wrap> 
- 
-<code Java [enable_line_numbers="true",highlight_lines_extra="14" ]> 
-public class Hund { 
-    // Attribute 
-    String name; 
-    int alter; 
-     
-    // Methoden 
-    void bellen() { 
-        System.out.println(name + " sagt: Wuff!"); 
-    } 
- 
-    public static void main(String[] args) { 
-        Hund meinHund = new Hund(); 
-        meinHund.name = "Bello"; 
-        meinHund.bellen(); 
-    } 
-} 
- 
- 
-</code>