Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung | ||
talit:tutorial_oop3 [2025-04-26 19:50] – angelegt hof | talit:tutorial_oop3 [2025-04-26 20:29] (aktuell) – [Klassen und Objekte] hof | ||
---|---|---|---|
Zeile 23: | Zeile 23: | ||
</ | </ | ||
- | Code wird nur einmal geschrieben, | + | Code wird nur einmal geschrieben, |
- | <code python | + | <code python |
# Define vocabulary unit | # Define vocabulary unit | ||
voci_unit = [ | voci_unit = [ | ||
Zeile 47: | Zeile 47: | ||
print(f' | print(f' | ||
</ | </ | ||
+ | |||
+ | Wouldn' | ||
+ | |||
+ | Zum Beispiel so: | ||
+ | |||
+ | <code python> | ||
+ | from voci import * | ||
+ | |||
+ | unit = VocabularyUnit([ | ||
+ | WordPair(' | ||
+ | WordPair(' | ||
+ | WordPair(' | ||
+ | ]) | ||
+ | |||
+ | learner = ConsoleLearner() | ||
+ | learner.learn(unit) | ||
+ | unit.print_stats() | ||
+ | </ | ||
+ | ## Klassen und Objekte | ||
+ | Genau das erreichen wir mit der **objekt-orientierten Programmierung**. Du hast bereits sehr oft Objekte benutzt, zum Beispiel Strings oder Listen. Ein Objekt gruppiert Attribute (en. _attributes_) und Methoden (Funktionen, | ||
+ | |||
+ | **Beispiel**: | ||
+ | |||
+ | Eine Klasse wird in Python mit dem `class` Keyword definiert. Methoden haben immer einen ersten Paramter `self`, der für das konkrete Objekt steht, für das die Methode ausgeführt wird. Wird eine neues Objekt erstellt, wird zuerst die `__init__` Methode aufgerufen. | ||
+ | |||
+ | Am bestem am Beispiel: | ||
+ | |||
+ | <code python voci.py> | ||
+ | class WordPair: | ||
+ | """ | ||
+ | def __init__(self, | ||
+ | """ | ||
+ | self.word1 = word1 # All objects of class WordPair share the same attributes | ||
+ | self.word2 = word2 # but not necessarily the same contents. | ||
+ | | ||
+ | def reversed(self): | ||
+ | """ | ||
+ | return WordPair(self.word2, | ||
+ | |||
+ | tree = WordPair(' | ||
+ | |||
+ | print(f' | ||
+ | |||
+ | </ | ||
+ | |||
+ | ### Aufgabe A | ||
+ | * Erstelle ein neues github-Repository `ksr_talit_vocabulary` und clone es lokal in VS Code. | ||
+ | * Teile es mit `tkilla77` und `anschae`. | ||
+ | * Füge das `.gitignore` für Python hinzu (von [[https:// | ||
+ | |||
+ | Erstelle eine neue Python-Datei `voci.py` und erstelle deine erste Klasse `WordPair` wie oben und zeige sie der Lehrperson. Achte auf: | ||
+ | * Coding-Conventions: | ||
+ | * Klassennamen in CamelCase | ||
+ | * Methoden und Attribute in lower_case_with_underscores() | ||
+ | * Dokumentation mit `""" | ||
+ | |||
+ | Wir möchten zusätzlich eine Klasse `VocabularyUnit` haben, die eine Liste von `WordPairs` speichert. | ||
+ | |||
+ | Als drittes benötigen wir eine Klasse `ConsoleLearner` mit einer Methode `learn(unit)`, | ||
+ | * um das Terminal zu leeren kannst du `print(" | ||
+ | * um die Zeile im Terminal zu löschen, verwendest du `print(" | ||
+ | * mehr dazu auf [[wp> | ||
+ | |||
+ |