Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:obj:klassen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
python:obj:klassen [2020/11/20 13:02] – [Klassen in Python] lutzpython:obj:klassen [2021/01/07 14:00] (aktuell) – [Aufgaben] lutz
Zeile 136: Zeile 136:
 Danach werden im Bereich ''%%# Attribute der Klasse%%'' die Klassenattribute definiert. Jede Variable die innerhalb der Klasse definiert wird ist eine Klassenvariable. Alle verwendeten Klassenvariablen sollten an dieser Stelle mit sinnvollen Werten belegt werden. Im Unterschied zum Klassendiagramm habe ich ein zusätzliches Attribut ''%%bezeichnung%%'' eingeführt Danach werden im Bereich ''%%# Attribute der Klasse%%'' die Klassenattribute definiert. Jede Variable die innerhalb der Klasse definiert wird ist eine Klassenvariable. Alle verwendeten Klassenvariablen sollten an dieser Stelle mit sinnvollen Werten belegt werden. Im Unterschied zum Klassendiagramm habe ich ein zusätzliches Attribut ''%%bezeichnung%%'' eingeführt
  
-Im ''%%# Methoden der Klasse%%'' werden die Klassenmethoden definiert+Im Bereich ''%%# Methoden der Klasse%%'' werden die Klassenmethoden definiert. Eine Methodendefinition beginnt genau wie eine Funktionsdefinition mit dem Schlüsselwort ''%%def%%'' Im Unterschied zu einer Funktionsdefinition enthält sie aber immer den Parameter ''%%self%%'' zusätzlich zu den übrigen Parametern.
  
 +Die erste Methode ist der sogenannte **Konstruktor**. In Python bekommt er den Namen ''%%__init__(self...)%%'' (Beachte: Vor und nach init stehen jeweils zwei Unterstriche). Der Konstruktor wird beim erstellen der Klasse aufgerufen. Dabei werden an die Klassenvariablen (Attribute) sinnvolle Werte übergeben. Damit man auf die Klassenvariablen zugreifen kann, muss vor dem Variablennamen das Schlüsselwort ''%%self%%'' stehen, sonst erzeugt man einfach lokale Variablen.
  
-== Erklärvideo zum Erstellen der Klasse: ==+Mit der Methode ''%%geschwindigkeitAendern(self, wert)%%'' wird zum Attribut ''%%geschwindigkeit%%'' ein Wert addiert bzw. subtrahiert. 
 + 
 +Mit der Methode ''%%lackieren(self, farbe)%%'' wird das Attribut ''%%farbe%%'' geändert. 
 + 
 +Mit der Methode ''%%ausgabe(self)%%'' werden alle Attribute der Klasse mit ihren Werten ausgegeben. 
 + 
 +Im Hauptprogramm werden mit 
 + 
 +<code python> 
 +volvo = LKW("Volvo FL",12,240,"blau",30) 
 +man = LKW("MAN TGA",26 ,480,"gelb",0) 
 +</code> 
 + 
 +zwei Objekte (Instanzen) der Klasse erzeugt. Dabei wird der Konstruktor (''%%__init__(self...)%%'') der Klasse aufgerufen und die Attribute werden mit den entsprechenden Werten belegt. In der Parameterliste fehlt jetzt das ''%%self%%''
 + 
 +Danach folgen einige Methodenaufrufe. Um die Methoden für ein Objekt aufzurufen, schreibt man den Objektnamen, danach einen Punkt und den Methodennamen. In der Parameterliste fehlt wieder das ''%%self%%''
 + 
 +\\ 
 + 
 +==== Erklärvideo zum Erstellen der Klasse: ====
  
 {{youtube>xyHhYwW3ERg}} {{youtube>xyHhYwW3ERg}}
Zeile 167: Zeile 187:
 Programmiere entsprechend deiner Klassendiagramme aus Aufgabe 2 die Klassen "Smartphone", "Uhr" und "Schuhe", Ergänze die Klassen entsprechend der Klasse LKW jeweils um das Attribut ''%%bezeichnung%%'', um den Konstruktur und um eine Methode ''%%ausgabe(self)%%''. Teste die Klasse durch Anlegen einiger Instanzen und durch aufrufen der Klassenmethoden. Programmiere entsprechend deiner Klassendiagramme aus Aufgabe 2 die Klassen "Smartphone", "Uhr" und "Schuhe", Ergänze die Klassen entsprechend der Klasse LKW jeweils um das Attribut ''%%bezeichnung%%'', um den Konstruktur und um eine Methode ''%%ausgabe(self)%%''. Teste die Klasse durch Anlegen einiger Instanzen und durch aufrufen der Klassenmethoden.
  
 +**Aufgabe 5**
 +
 +Gegeben ist das UML-Programm einer Klasse Katze:
 +
 +{{ :python:obj:katze.png?400 |}}
 +
 +Erstelle die Klasse in Python. Lass dir für die Methoden sinnvollen Quelltext einfallen. Lege einige Objekte der Klasse an und teste die Methoden. Lass dir eventuell weitere sinnvolle Methoden einfallen.
  
 +[[python:loesungen:obj:klassen| >> Lösungen]]
  
 +[[python:obj:vererb| >> Vererbung]]
  
 \\ \\
python/obj/klassen.1605873768.txt.gz · Zuletzt geändert: 2020/11/20 13:02 von lutz