Benutzer-Werkzeuge

Webseiten-Werkzeuge


klassen2:abstrakt:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
klassen2:abstrakt:start [2020/04/29 12:51] – [Abstrakte Methoden] Martin Pabstklassen2:abstrakt:start [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 ====== Abstrakte Klassen ====== ====== Abstrakte Klassen ======
 +
 +{{ youtube>Aekx2HXnEVg?large }}
 + \\ 
 + \\ 
 Oft ist es nicht sinnvoll, Objekte einer Oberklasse zu instanzieren, weil sie "abstrakt" ist, d.h. noch nicht über alle Attribute/Methoden verfügt. Wir sehen uns dazu wieder ein einfaches Beispiel an: Die Klasse ''Tier'' besitzt ein Attribut ''art''. Von ihr leiten wir die Unterklassen ''Hund'' und ''Katze'' ab: Oft ist es nicht sinnvoll, Objekte einer Oberklasse zu instanzieren, weil sie "abstrakt" ist, d.h. noch nicht über alle Attribute/Methoden verfügt. Wir sehen uns dazu wieder ein einfaches Beispiel an: Die Klasse ''Tier'' besitzt ein Attribut ''art''. Von ihr leiten wir die Unterklassen ''Hund'' und ''Katze'' ab:
  
 <HTML> <HTML>
  
-<div class="java-online" style="height: 400px; width: 100%" data-java-online="{}">+<div class="java-online" style="height: 400px; width: 100%" data-java-online="'id': 'Abstrakt1', 'withBottomPanel': true}"
 + 
 +<script type="text/plain" title="Main.java"> 
 +Hund h = new Hund("Pluto"); 
 +Katze k = new Katze("Snoopy"); 
 +h.schreibeName(); 
 +k.schreibeName(); 
 +</script>
  
 <script type="text/plain" title="Tier.java"> <script type="text/plain" title="Tier.java">
Zeile 20: Zeile 31:
       println("Art: " + art);       println("Art: " + art);
    }    }
 +
 +   public void schreibeName() {
 +      println("Ich heiße " + name);
 +   }
 +
  
 } }
Zeile 52: Zeile 68:
 <HTML> <HTML>
  
-<div class="java-online" style="height: 400px; width: 100%" data-java-online="{}">+<div class="java-online" style="height: 400px; width: 100%" data-java-online="{'id': 'Abstrakt2', 'withBottomPanel': true}">
  
 <script type="text/plain" title="Main.java"> <script type="text/plain" title="Main.java">
Zeile 116: Zeile 132:
 </HTML> </HTML>
  
-<WRAP center round info 60%>+<WRAP center round important 60%>
 Die Deklaration der Methode Die Deklaration der Methode
 <code> <code>
Zeile 122: Zeile 138:
 </code> </code>
 in der Klasse ''Tier'' **verpflichtet** alle Unterklassen von Tier, diese Methode mit genau dieser Signatur zu implementieren. Sie sorgt gleichzeitig dafür, dass man mit einer Variable vom Typ ''Tier'' dann diese Methode aufrufen kann, egal, zu welcher Unterklasse von ''Tier'' das Objekt gehört, auf das die Variable zeigt. in der Klasse ''Tier'' **verpflichtet** alle Unterklassen von Tier, diese Methode mit genau dieser Signatur zu implementieren. Sie sorgt gleichzeitig dafür, dass man mit einer Variable vom Typ ''Tier'' dann diese Methode aufrufen kann, egal, zu welcher Unterklasse von ''Tier'' das Objekt gehört, auf das die Variable zeigt.
 +</WRAP>
 +
 +<WRAP center round info 60%>
 +Eine Klasse kann nur dann abstrakte Methoden enthalten, wenn sie selbst mit dem Schlüsselwort ''abstract'' gekennzeichnet ist. Das sorgt dafür, dass keine Objekte dieser Klasse instanziert werden können (was nicht geht, weil die abstrakten Methoden ja keinen Programmtext besitzen, der ausgeführt werden könnte).
 +</WRAP>
 +
 +===== Klassendiagramm =====
 +<WRAP center round info 60%>
 +{{ :klassen2:abstrakt:pasted:20210424-215332.png?200}}
 +Der UML-Standard sieht vor, dass die Bezeichner abstrakter Klassen und Methoden **in Schrägschrift** gesetzt werden. Vor den Klassenbezeichner kann wahlweise zusätzlich das Präfix "<<abstract>>" geschrieben werden.
 </WRAP> </WRAP>
  
klassen2/abstrakt/start.1588157486.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki