Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
talit:tutorial_oop [2019-12-08 10:49] – [Vererbung] sca | talit:tutorial_oop [2020-11-30 13:57] (aktuell) – [Vererbung] sps | ||
---|---|---|---|
Zeile 25: | Zeile 25: | ||
1. Du kannst gerne bereits mit den Schritten beschrieben in [In Lektion](# | 1. Du kannst gerne bereits mit den Schritten beschrieben in [In Lektion](# | ||
- | ### In Lektion | + | ### In Lektion |
1. Erstelle auf GitHub ein neues Repository: | 1. Erstelle auf GitHub ein neues Repository: | ||
Zeile 44: | Zeile 44: | ||
7. Füge *anschae* als Collaborator dieses Repos hinzu. | 7. Füge *anschae* als Collaborator dieses Repos hinzu. | ||
- | ### Auftrag nach erster Lektion | + | ### Auftrag nach erster Lektion |
Studiere im Tutorial **Python Setup** die folgenden Kapitel. Die Schritte, die du explizit machen sollst, werden explizit genannt: | Studiere im Tutorial **Python Setup** die folgenden Kapitel. Die Schritte, die du explizit machen sollst, werden explizit genannt: | ||
Zeile 193: | Zeile 193: | ||
* CSV | * CSV | ||
* JSON | * JSON | ||
- | * XML | + | * (XML) |
- | Bildet Gruppen (ca. 3 SuS) und arbeitet euch in eines dieser drei Datenformate ein. | + | Bildet Gruppen (je 2 SuS) und arbeitet euch in eines der beiden |
**Auftrag: | **Auftrag: | ||
Zeile 201: | Zeile 201: | ||
- Erstellt ein Tutorial für eure Kollegen über euer Datenformat. Dieses soll einerseits eine allgemeine Einführung und Übersicht über euer Datenformat beinhalten. Andererseits soll genau erklärt werden, wie man mit Python mit diesem Format arbeiten kann. | - Erstellt ein Tutorial für eure Kollegen über euer Datenformat. Dieses soll einerseits eine allgemeine Einführung und Übersicht über euer Datenformat beinhalten. Andererseits soll genau erklärt werden, wie man mit Python mit diesem Format arbeiten kann. | ||
- Euer Tutorial soll ein repräsentatives Beispiel einer Datei von Eurem Format beinhalten. Stellt dieses in eurem Eintrag den Anderen zur Verfügung (siehe Beispiel unten). | - Euer Tutorial soll ein repräsentatives Beispiel einer Datei von Eurem Format beinhalten. Stellt dieses in eurem Eintrag den Anderen zur Verfügung (siehe Beispiel unten). | ||
- | - Ebenso soll euer Tutorial ein Python-File beinhalten, mit dem dieses File gelesen und in dieses geschrieben werden kann (siehe | + | - Ebenso soll euer Tutorial ein Python-File beinhalten, mit dem dieses File gelesen und in dieses geschrieben werden kann (siehe |
+ | - Findet eine Website, auf der man Dateien eures Formats auf Gültigkeit prüfen kann. | ||
- Ladet euer Tutorial auf dieses DokuWiki in eurem [[talit_2018_2022: | - Ladet euer Tutorial auf dieses DokuWiki in eurem [[talit_2018_2022: | ||
- | - **Erste (aber trotzdem gute) Version: Sonntag | + | - **Erste (aber trotzdem gute) Version: Sonntag |
- | - **Deadline: Montag | + | - **Deadline: Montag |
- | Einen Codeblock im DokuWiki Editor wird wie folgt geschrieben: | + | Ein Codeblock im DokuWiki Editor wird wie folgt geschrieben: |
``` | ``` | ||
<code python filename.py> | <code python filename.py> | ||
Zeile 219: | Zeile 220: | ||
</ | </ | ||
- | Mit einem Klick auf den Filenamen kann das File dann direkt | + | Mit einem Klick auf den Filenamen kann das File dann direkt |
- | Für andere Programmiersprachen oder Datenformate, passe die Definition entsprechend | + | Für andere Programmiersprachen oder Datenformate |
Beispiel JSON: | Beispiel JSON: | ||
Zeile 227: | Zeile 228: | ||
<code json filename.json> | <code json filename.json> | ||
// füge hier die Daten im JSON Format ein | // füge hier die Daten im JSON Format ein | ||
+ | </ | ||
+ | ``` | ||
+ | |||
+ | Beispiel C#: | ||
+ | ``` | ||
+ | <code csharp filename.cs> | ||
+ | // C#: | ||
+ | Console.WriteLine(" | ||
</ | </ | ||
``` | ``` | ||
Zeile 234: | Zeile 243: | ||
* Erstelle im Ordner `tutorial_oop_voci` einen Unterordner `dicts`. \\ \\ | * Erstelle im Ordner `tutorial_oop_voci` einen Unterordner `dicts`. \\ \\ | ||
- | * Erstelle darin mindestens | + | * Erstelle darin mindestens |
- Wort in Sprache 1 \\ | - Wort in Sprache 1 \\ | ||
Zeile 240: | Zeile 249: | ||
- Progress (z.B. Zahlen von 0 bis 3, wobei 0 für 'noch gar nicht gelernt' | - Progress (z.B. Zahlen von 0 bis 3, wobei 0 für 'noch gar nicht gelernt' | ||
- | * *Tipp:* Mache eine Sicherheitskopie dieser Files, falls du sie ausversehen | + | * *Tipp:* Mache eine Sicherheitskopie dieser Files, falls du sie aus Versehen |
* Mache eine Kopie von deinem aktuellsten Voci Trainer und speichere diesen unter dem Namen `voci_trainer_v04.py` und bearbeite nun diese Datei. \\ \\ | * Mache eine Kopie von deinem aktuellsten Voci Trainer und speichere diesen unter dem Namen `voci_trainer_v04.py` und bearbeite nun diese Datei. \\ \\ | ||
Zeile 265: | Zeile 274: | ||
* *Tipps:* | * *Tipps:* | ||
* Das Programm soll funktionieren, | * Das Programm soll funktionieren, | ||
- | * Das Programm wird almählich | + | * Das Programm wird allmählich |
## Aufgabe 6 (voci_trainer_v04) | ## Aufgabe 6 (voci_trainer_v04) | ||
Zeile 275: | Zeile 284: | ||
*Tipp:* Mache Kopien von deinen Voci-Listen, | *Tipp:* Mache Kopien von deinen Voci-Listen, | ||
- | **Auftrag: | + | ## Vorbereitung Console Game |
+ | |||
+ | **Auftrag: | ||
Die Bedingungen an das Game sind: | Die Bedingungen an das Game sind: | ||
* Spielt in Konsole. | * Spielt in Konsole. | ||
- | * Ihr dürft ein bereits bekanntes Spiel implementieren. Ihr könnt aber auch ein eigenes erfinden oder ein bestehende | + | * Ihr dürft ein bereits bekanntes Spiel implementieren. Ihr könnt aber auch ein eigenes erfinden oder ein bestehendes |
* Gibt nach erfolgreichem Spielen einen Score zurück: absolviertes Level und Anzahl Punkte (z.B. gesammelte Punkte, Spieldauer in Sekunden, Anzahl Versuche, ...) | * Gibt nach erfolgreichem Spielen einen Score zurück: absolviertes Level und Anzahl Punkte (z.B. gesammelte Punkte, Spieldauer in Sekunden, Anzahl Versuche, ...) | ||
* Es ist auch möglich (und sogar wünschenswert), | * Es ist auch möglich (und sogar wünschenswert), | ||
Zeile 353: | Zeile 364: | ||
Ein wichtiges Konzept der OOP ist die **Vererbung**. | Ein wichtiges Konzept der OOP ist die **Vererbung**. | ||
- | Machen wir ein Beispiel: In unserem Code haben wir eine Klasse //Voci//. Für jeder Datenfile, welches eine Wörtliliste enthält, erstellen wir ein // | + | Machen wir ein Beispiel: In unserem Code haben wir eine Klasse //Voci//. Für jedes Datenfile, welches eine Wörtliliste enthält, erstellen wir ein // |
<code python> | <code python> | ||
Zeile 391: | Zeile 402: | ||
* In der ersten Zeile geben wir eben an, dass // | * In der ersten Zeile geben wir eben an, dass // | ||
* Mit `super()` ist jeweils die **parent class** einer Klasse gemeint. Mit `super().__init__(file_path, | * Mit `super()` ist jeweils die **parent class** einer Klasse gemeint. Mit `super().__init__(file_path, | ||
- | * Instanziieren wir ein neues CSV_Voci | + | * Instanziieren wir ein neues // |
* Mit `self.read_file()` lesen wir dann automatisch die Daten aus dem File ein. \\ \\ | * Mit `self.read_file()` lesen wir dann automatisch die Daten aus dem File ein. \\ \\ | ||
- | * **Speichern** können wir dann einfach mit `voci.save_file()`. | + | * **Speichern** können wir dann einfach mit `voci.save_file()`.\\ \\ |
+ | * Betrachten wir nun die // | ||
+ | |||
+ | <code python> | ||
+ | def read_file(self): | ||
+ | pass | ||
+ | </ | ||
+ | |||
+ | * In der // | ||
+ | * Analog für // | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ## Aufgabe 7 | ||
+ | Nun wollen wir uns an die finale Version unseres Codes machen. Bisher wurde der gesamte Code in ein einzelnes File hinein geschrieben. Damit der Code übersichtlich bleibt, macht es aber Sinn, diesen auf mehrere Files aufzuteilen. Erstelle dazu im Repo einen neuen Ordner, z.B. //final//, in dem wir die finale Version ablegen. | ||
+ | Erstelle darin einen Unterordner //source// und einen Unterordner //dicts// für alle Files mit Wörtlilisten. Erstelle dann folgende Files in der folgenden Struktur: | ||
+ | * app.py | ||
+ | * source/ | ||
+ | * source/ | ||
+ | * source/ | ||
+ | Schreibe deinen Code möglichst objektorientiert um. | ||
+ | //Tipp:// Kopiere deinen bestehenden Code nur in kleinen Päckchen in die neue Struktur. Stelle immer sicher, dass der Code keine Fehler beinhaltet, bevor du dich um weiteren Code kümmerst. | ||
- | ## Weitere Features | + | ## Aufgabe 8 |
Finalisiere deinen Code. | Finalisiere deinen Code. | ||
- | * Struktur vom Code (verschiedene Files) | ||
* soll auswählen können, in welche Richtung man übersetzen möchte: wordL1 -> wordL2 oder wordL2 -> wordL1 | * soll auswählen können, in welche Richtung man übersetzen möchte: wordL1 -> wordL2 oder wordL2 -> wordL1 | ||
* soll im Menu // | * soll im Menu // | ||
Zeile 412: | Zeile 445: | ||
* den Progress aller WordPairs auf 0 zurücksetzen kann | * den Progress aller WordPairs auf 0 zurücksetzen kann | ||
* Soll eine neue Voci-Liste erstellen können. Diese wird dann im gewünschten Dateiformat gespeichert | * Soll eine neue Voci-Liste erstellen können. Diese wird dann im gewünschten Dateiformat gespeichert | ||
+ | * Überlege dir selbst, wie du dein Programm sinnvoll erweitern kannst. | ||