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 12:51] – [Klassen in Python] lutzpython:obj:klassen [2021/01/07 14:00] (aktuell) – [Aufgaben] lutz
Zeile 134: Zeile 134:
 Die Definition einer Klasse beginnt mit dem Schlüsselwort ''%%class%%'', gefolgt vom Klassennamen. Danach steht ein Doppelpunkt. Der gesamte Quelltext, der nach dem Doppelpunkt eingerückt ist gehört zur Klasse. Die Definition einer Klasse beginnt mit dem Schlüsselwort ''%%class%%'', gefolgt vom Klassennamen. Danach steht ein Doppelpunkt. Der gesamte Quelltext, der nach dem Doppelpunkt eingerückt ist gehört zur Klasse.
  
-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.+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 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 158: Zeile 179:
 Erstelle jeweils ein Klassendiagramm mit Dia! (Alternativ kann auch LibreOffice-Draw oder ein anderes Vektorgrafikprogramm genutzt werden. Das Diagramm kann auch per Hand gezeichnet werden.) Erstelle jeweils ein Klassendiagramm mit Dia! (Alternativ kann auch LibreOffice-Draw oder ein anderes Vektorgrafikprogramm genutzt werden. Das Diagramm kann auch per Hand gezeichnet werden.)
  
 +**Aufgabe 3**
 +
 +Programmiere entsprechend dem Erklärvideo die Klasse "LKW" nach.
 +
 +**Aufgabe 4**
 +
 +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.1605873080.txt.gz · Zuletzt geändert: 2020/11/20 12:51 von lutz