Füge Kapitel 04c Git & Versionskontrolle hinzu und integriere Kapitel 09 Unit Testing in LEHRPLAN.md
This commit is contained in:
parent
06330f58d3
commit
e7c64995aa
8 changed files with 354 additions and 47 deletions
|
|
@ -308,7 +308,7 @@ sudo snap install --classic code</code></pre>
|
|||
|
||||
<div class="footer-nav">
|
||||
<a href="../04_str_und_darstellung/index.html" class="btn btn-secondary">← Zurück zu Kapitel 04</a>
|
||||
<a href="../05_objekte_kombinieren/index.html" class="btn">Weiter zu Kapitel 05: Komposition →</a>
|
||||
<a href="../04c_git_und_versionskontrolle/index.html" class="btn">Weiter zu Kapitel 04c: Git 🌿 →</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
|
|
|||
45
04c_git_und_versionskontrolle/README.md
Normal file
45
04c_git_und_versionskontrolle/README.md
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# Kapitel 04c: Git & Versionskontrolle: Deine Programmier-Zeitmaschine 🌿⏱️
|
||||
|
||||
Herzlich willkommen zum Git-Guide!
|
||||
|
||||
**Git** ist das weltweit am meisten genutzte Versionskontrollsystem. Es ermöglicht dir, deinen Code in sauberen Spielständen (Commits) zu speichern, jederzeit alte Versionen wiederherzustellen und im Team zu arbeiten.
|
||||
|
||||
---
|
||||
|
||||
## 🎮 Der Lebenszyklus eines Codes in Git
|
||||
|
||||
1. **Arbeitsverzeichnis (Working Tree):** Deine Dateien, die du in VS Code bearbeitest.
|
||||
2. **Staging Area (`git add .`):** Die Bereitstellung. Du wählst aus, welche geänderten Dateien in den nächsten Speicherpunkt gehören.
|
||||
3. **Commit (`git commit -m "Nachricht"`):** Der fertige Speicherpunkt mit Zeitstempel und Erklärung.
|
||||
4. **Push (`git push`):** Hochladen deiner Commits auf den entfernten Server (z.B. dein Aufgaben-Repository).
|
||||
|
||||
---
|
||||
|
||||
## 🖥️ Git in VS Code nutzen
|
||||
|
||||
1. Drücke `Strg + Shift + G` (Mac: `Cmd + Shift + G`), um links das Git-Panel zu öffnen.
|
||||
2. Klicke auf eine veränderte Datei → Du siehst sofort den **Diff** (Rot = alter Code, Grün = neuer Code).
|
||||
3. Klicke auf `+` neben der Datei (Staging).
|
||||
4. Tippe eine Commit-Nachricht ins Textfeld und klicke auf das Häkchen **✓ Commit**.
|
||||
5. Klicke auf **Sync Changes / Push**, um alles auf den Server zu laden!
|
||||
|
||||
---
|
||||
|
||||
## ⌨️ Die wichtigsten Terminal-Befehle
|
||||
|
||||
| Befehl | Erklärung |
|
||||
| :--- | :--- |
|
||||
| `git status` | Zeigt geänderte und neue Dateien an |
|
||||
| `git add .` | Packt alle aktuellen Änderungen in die Staging Area |
|
||||
| `git commit -m "Text"` | Erstellt einen Commit mit einer Beschreibung |
|
||||
| `git push` | Lädt neue Commits auf den Server hoch |
|
||||
| `git log --oneline` | Zeigt die bisherige Versions-Historie an |
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Mitmach-Übung in `git_uebung.py`
|
||||
|
||||
1. Öffne `git_uebung.py`, ändere den Text und speichere.
|
||||
2. Öffne den Git-Tab in VS Code (`Strg + Shift + G`).
|
||||
3. Betrachte die Änderung und erstelle einen Commit mit der Nachricht: *"Mein erster eigener Git-Commit"*.
|
||||
4. Überprüfe die Historie mit `git log --oneline -n 3`.
|
||||
30
04c_git_und_versionskontrolle/git_uebung.py
Normal file
30
04c_git_und_versionskontrolle/git_uebung.py
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
"""
|
||||
🌿 GIT-MITMACH-ÜBUNG 🌿
|
||||
=======================
|
||||
Diese Datei ist für dein erstes Git-Experiment da!
|
||||
|
||||
ANLEITUNG:
|
||||
1. Ändere die Variable 'dein_name' unten zu deinem echten Vornamen.
|
||||
2. Füge eine neue Lieblingsprogrammiersprache oder ein Hobby zur Liste hinzu.
|
||||
3. Speichere die Datei mit Strg + S (Mac: Cmd + S).
|
||||
4. Öffne links in VS Code den Quellcodeverwaltungs-Tab (Strg + Shift + G).
|
||||
5. Klicke auf 'git_uebung.py', um die roten/grünen Änderungen zu sehen!
|
||||
6. Gib oben eine Nachricht ein wie: "Update git_uebung mit meinem Namen"
|
||||
7. Klicke auf das blaue Häkchen (Commit).
|
||||
"""
|
||||
|
||||
dein_name = "Nachhilfe-Schülerin"
|
||||
lieblings_sprachen = ["Python", "HTML", "CSS"]
|
||||
lieblings_feature_in_python = "Objektorientierte Programmierung mit Klassen!"
|
||||
|
||||
|
||||
def begruessung():
|
||||
return f"Hallo! Ich bin {dein_name} und lerne gerade Git & Versionskontrolle! 🎉"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("=" * 60)
|
||||
print(begruessung())
|
||||
print("Meine Sprachen:", ", ".join(lieblings_sprachen))
|
||||
print("Mein Lieblings-Feature:", lieblings_feature_in_python)
|
||||
print("=" * 60)
|
||||
214
04c_git_und_versionskontrolle/index.html
Normal file
214
04c_git_und_versionskontrolle/index.html
Normal file
|
|
@ -0,0 +1,214 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Kapitel 04c: Git & Versionskontrolle</title>
|
||||
<link rel="stylesheet" href="../assets/style.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header>
|
||||
<div class="header-container">
|
||||
<nav class="nav-links">
|
||||
<a href="../index.html">🏠 Zur Kursübersicht</a>
|
||||
<span>›</span>
|
||||
<a href="../04b_umstieg_vscode/index.html">Kapitel 04b</a>
|
||||
<span>›</span>
|
||||
<span style="color: white; font-weight: 600;">Kapitel 04c (Git)</span>
|
||||
<span>›</span>
|
||||
<a href="../05_objekte_kombinieren/index.html">Kapitel 05 →</a>
|
||||
</nav>
|
||||
<div class="header-badge">Versionskontrolle • Profi-Werkzeug</div>
|
||||
<h1>Git & Versionskontrolle: Deine Programmier-Zeitmaschine 🌿⏱️</h1>
|
||||
<p>Lerne, wie du deinen Code versionierst, Spielstände sicherst und Änderungen in VS Code & im Terminal verwaltest.</p>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="container">
|
||||
|
||||
<!-- 1. Was ist Git? -->
|
||||
<section class="card">
|
||||
<h2>1. Was ist Git und warum braucht es jede(r) Entwickler(in)?</h2>
|
||||
|
||||
<p>
|
||||
Hast du schon mal Dateien so genannt wie <code>aufgabe.py</code>, <code>aufgabe_final.py</code>, <code>aufgabe_final2_wirklich_fertig.py</code>? 😅
|
||||
Genau dieses Chaos verhindert <strong>Git</strong>!
|
||||
</p>
|
||||
|
||||
<div class="box box-analogie">
|
||||
<div class="box-title">🎮 Die Spielstand- & Zeitmaschinen-Analogie:</div>
|
||||
<ul>
|
||||
<li><strong>Ein Commit ist wie ein Speicherpunkt in einem Computerspiel:</strong> Wenn du vor einem Bosskampf stehst (oder eine neue Funktion ausprobierst) und dein Code kaputtgeht, kannst du mit einem Klick genau zu diesem perfekten Zustand zurückreisen!</li>
|
||||
<li><strong>Git dokumentiert die Geschichte:</strong> Du siehst immer genau, wer wann welche Zeile verändert hat und warum.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 2. Die 3 Zonen von Git -->
|
||||
<section class="card">
|
||||
<h2>2. Der Git-Lebenszyklus: Die 3 Stationen eines Codes</h2>
|
||||
|
||||
<p>Wenn du Code in Git sicherst, durchläuft er drei Stationen:</p>
|
||||
|
||||
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 15px; margin: 20px 0;">
|
||||
|
||||
<div style="background: #ffffff; border: 2px solid var(--border-color); border-radius: var(--radius-sm); padding: 16px;">
|
||||
<div style="font-size: 1.5rem; margin-bottom: 6px;">📝</div>
|
||||
<h4 style="color: var(--text-main); margin-bottom: 4px;">1. Arbeitsbereich (Working Tree)</h4>
|
||||
<p style="font-size: 0.88rem; color: var(--text-muted); margin: 0;">Du tippst und speicherst deine Dateien ganz normal im Editor.</p>
|
||||
</div>
|
||||
|
||||
<div style="background: #ffffff; border: 2px solid var(--primary); border-radius: var(--radius-sm); padding: 16px;">
|
||||
<div style="font-size: 1.5rem; margin-bottom: 6px;">📦</div>
|
||||
<h4 style="color: var(--primary); margin-bottom: 4px;">2. Bereitstellung (Staging Area)</h4>
|
||||
<p style="font-size: 0.88rem; color: var(--text-muted); margin: 0;">Mit <code>git add .</code> wählst du aus, welche Dateien in den nächsten Spielstand gepackt werden.</p>
|
||||
</div>
|
||||
|
||||
<div style="background: #ffffff; border: 2px solid var(--success); border-radius: var(--radius-sm); padding: 16px;">
|
||||
<div style="font-size: 1.5rem; margin-bottom: 6px;">💾</div>
|
||||
<h4 style="color: var(--success); margin-bottom: 4px;">3. Commit (Speicherpunkt)</h4>
|
||||
<p style="font-size: 0.88rem; color: var(--text-muted); margin: 0;">Mit <code>git commit -m "..."</code> schnürst du das Paket fest und gibst ihm eine aussagekräftige Nachricht.</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="box box-tipp">
|
||||
<div class="box-title">🚀 Der letzte Schritt: <code>git push</code> (In die Cloud laden):</div>
|
||||
Mit <code>git push</code> schickst du deine lokalen Commits an den Git-Server (z.B. dein Aufgaben-Repository), damit dein Lehrer oder dein Nachhilfelehrer deinen Code einsehen kann.
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 3. Git in VS Code nutzen -->
|
||||
<section class="card">
|
||||
<h2>3. 🖥️ Git visuell in VS Code bedienen</h2>
|
||||
|
||||
<p>
|
||||
Du musst Befehle nicht zwingend im Terminal tippen – VS Code hat eine fantastische <strong>Quellcodeverwaltung</strong> eingebaut:
|
||||
</p>
|
||||
|
||||
<ol style="margin-left: 20px;">
|
||||
<li style="margin-bottom: 10px;">
|
||||
Drücke <kbd>Strg</kbd> + <kbd>Shift</kbd> + <kbd>G</kbd> (Mac: <kbd>Cmd</kbd> + <kbd>Shift</kbd> + <kbd>G</kbd>) oder klicke links auf das <strong>Ast-/Verzweigungs-Symbol</strong> (Quellcodeverwaltung).
|
||||
</li>
|
||||
<li style="margin-bottom: 10px;">
|
||||
<strong>Änderungen sehen (Diff):</strong> Klicke auf eine geänderte Datei. VS Code öffnet einen geteilten Bildschirm: Links siehst du den alten Code (rot) und rechts deinen neuen Code (grün)!
|
||||
</li>
|
||||
<li style="margin-bottom: 10px;">
|
||||
<strong>Stagen:</strong> Klicke neben der Datei auf das <strong><code>+</code>-Symbol</strong> (Staged Changes).
|
||||
</li>
|
||||
<li style="margin-bottom: 10px;">
|
||||
<strong>Committen:</strong> Tippe oben ins Textfeld eine kurze Nachricht (z.B. <em>"Löse Aufgabe in Kapitel 05"</em>) und klicke auf das blaue Häkchen <strong>✓ Commit</strong>.
|
||||
</li>
|
||||
<li style="margin-bottom: 10px;">
|
||||
<strong>Pushen:</strong> Klicke auf den blauen Button <strong>"Sync Changes"</strong> oder unten links auf das Wolken-/Drehsymobl. Fertig! 🎉
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<!-- 4. Terminal Cheat Sheet -->
|
||||
<section class="card">
|
||||
<h2>4. ⌨️ Das Git-Terminal Cheat-Sheet</h2>
|
||||
|
||||
<p>Wenn du lieber im Terminal arbeitest (<kbd>Strg</kbd> + <kbd>`</kbd>), sind das die 5 wichtigsten Befehle deines Entwickler-Lebens:</p>
|
||||
|
||||
<table style="width: 100%; border-collapse: collapse; margin: 15px 0;">
|
||||
<thead>
|
||||
<tr style="background: var(--primary-light); text-align: left;">
|
||||
<th style="padding: 10px; border: 1px solid var(--border-color);">Befehl</th>
|
||||
<th style="padding: 10px; border: 1px solid var(--border-color);">Was er macht</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>git status</code></td>
|
||||
<td style="padding: 10px; border: 1px solid var(--border-color);">Zeigt an, welche Dateien geändert oder neu erstellt wurden.</td>
|
||||
</tr>
|
||||
<tr style="background: #fafafa;">
|
||||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>git add .</code></td>
|
||||
<td style="padding: 10px; border: 1px solid var(--border-color);">Packt alle aktuellen Änderungen in die Staging-Area.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>git commit -m "Text"</code></td>
|
||||
<td style="padding: 10px; border: 1px solid var(--border-color);">Erstellt einen neuen Speicherpunkt mit deiner Nachricht.</td>
|
||||
</tr>
|
||||
<tr style="background: #fafafa;">
|
||||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>git push</code></td>
|
||||
<td style="padding: 10px; border: 1px solid var(--border-color);">Lädt alle neuen Commits auf den Server hoch.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>git log --oneline</code></td>
|
||||
<td style="padding: 10px; border: 1px solid var(--border-color);">Zeigt die Liste aller bisherigen Commits kurz und übersichtlich.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<!-- 5. Was ist .gitignore -->
|
||||
<section class="card">
|
||||
<h2>5. 🙈 Was ist die <code>.gitignore</code>-Datei?</h2>
|
||||
|
||||
<p>
|
||||
Nicht jede Datei soll in Git gespeichert werden (z.B. temporäre Cache-Dateien wie <code>__pycache__</code> oder Passwörter).
|
||||
In einer Textdatei namens <code>.gitignore</code> im Hauptordner schreibt man Dateinamen auf, die Git einfach <strong>vollständig ignorieren</strong> soll.
|
||||
</p>
|
||||
|
||||
<div class="code-container">
|
||||
<div class="code-header">
|
||||
<span>Beispiel: Typische .gitignore für Python</span>
|
||||
</div>
|
||||
<pre><code>__pycache__/
|
||||
*.pyc
|
||||
.DS_Store
|
||||
.venv/</code></pre>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 6. Mitmach-Experiment -->
|
||||
<section class="card">
|
||||
<h2>6. 🧪 Dein Git-Mitmach-Check</h2>
|
||||
|
||||
<p>Öffne die Datei <code>04c_git_und_versionskontrolle/git_uebung.py</code> und führe deinen ersten eigenen Commit durch:</p>
|
||||
|
||||
<ul class="task-list">
|
||||
<li class="task-item">
|
||||
<input type="checkbox" class="task-checkbox" id="g1">
|
||||
<label for="g1" class="task-label">
|
||||
<strong>Schritt 1:</strong> Öffne <code>git_uebung.py</code> und ändere deinen Namen oder die Grußnachricht. Speichere mit <kbd>Strg</kbd> + <kbd>S</kbd>.
|
||||
</label>
|
||||
</li>
|
||||
<li class="task-item">
|
||||
<input type="checkbox" class="task-checkbox" id="g2">
|
||||
<label for="g2" class="task-label">
|
||||
<strong>Schritt 2:</strong> Öffne links den Git-Tab (<kbd>Strg</kbd> + <kbd>Shift</kbd> + <kbd>G</kbd>) und klicke auf <code>git_uebung.py</code>, um den Unterschied (Diff) zu sehen.
|
||||
</label>
|
||||
</li>
|
||||
<li class="task-item">
|
||||
<input type="checkbox" class="task-checkbox" id="g3">
|
||||
<label for="g3" class="task-label">
|
||||
<strong>Schritt 3:</strong> Erstelle im Git-Tab einen Commit mit der Nachricht <em>"Mein erster eigener Git-Commit!"</em>.
|
||||
</label>
|
||||
</li>
|
||||
<li class="task-item">
|
||||
<input type="checkbox" class="task-checkbox" id="g4">
|
||||
<label for="g4" class="task-label">
|
||||
<strong>Schritt 4:</strong> Führe im Terminal <code>git log --oneline -n 3</code> aus, um deinen neuen Commit in der Historie zu bewundern!
|
||||
</label>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="box box-success">
|
||||
<div class="box-title">🏆 Bravo! Du beherrschst nun echte Entwickler-Tools!</div>
|
||||
Ab jetzt kannst du jedes gelöste Kapitel wie ein Profi committen. Weiter geht's mit Kapitel 05 (Objekte kombinieren)!
|
||||
</div>
|
||||
|
||||
<div class="footer-nav">
|
||||
<a href="../04b_umstieg_vscode/index.html" class="btn btn-secondary">← Zurück zu Kapitel 04b: VS Code</a>
|
||||
<a href="../05_objekte_kombinieren/index.html" class="btn">Weiter zu Kapitel 05: Komposition →</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
<nav class="nav-links">
|
||||
<a href="../index.html">🏠 Zur Kursübersicht</a>
|
||||
<span>›</span>
|
||||
<a href="../04b_umstieg_vscode/index.html">Kapitel 04b (VS Code)</a>
|
||||
<a href="../04c_git_und_versionskontrolle/index.html">Kapitel 04c (Git)</a>
|
||||
<span>›</span>
|
||||
<span style="color: white; font-weight: 600;">Kapitel 05</span>
|
||||
</nav>
|
||||
|
|
@ -190,7 +190,7 @@
|
|||
</div>
|
||||
|
||||
<div class="footer-nav">
|
||||
<a href="../04b_umstieg_vscode/index.html" class="btn btn-secondary">← Zurück zu Kapitel 04b: VS Code</a>
|
||||
<a href="../04c_git_und_versionskontrolle/index.html" class="btn btn-secondary">← Zurück zu Kapitel 04c: Git</a>
|
||||
<a href="../06_abschlussprojekt_tamagotchi/index.html" class="btn">Weiter zum Abschlussprojekt →</a>
|
||||
</div>
|
||||
</section>
|
||||
|
|
|
|||
50
LEHRPLAN.md
50
LEHRPLAN.md
|
|
@ -9,37 +9,41 @@ Es gleicht die Übungsreihe mit dem offiziellen Lehrplan und Skriptum des Lehrer
|
|||
|
||||
1. **Type Hints als Standard:** Da der Lehrer in Teil 2 strikt Typ-Annotationen verwendet (`name: str`, `def alter(self) -> int:`), führen wir diese ab den Klassen sauber ein.
|
||||
2. **UML-Klassendiagramme:** Das Skriptum fordert UML-Diagramme (`22.1_UML.md`). Jedes Kapitel enthält visuelle UML-Karten.
|
||||
3. **Praxisnahe Analogien:** Statt trockener Theorie nutzen wir greifbare Alltagsbeispiele (Fahrrad-Verleih, Spotify-Playlists, Stammbäume, Geldautomaten).
|
||||
4. **Automatische Tests & Sofort-Feedback:** Jedes Kapitel hat ein Testskript (`test_aufgabe.py`), das bei `python3 test_aufgabe.py` oder `python3 test_all.py` sofort anzeigt, was schon klappt.
|
||||
5. **Autonomes Lernen:** Die Schülerin kann alle Kapitel über die modernen, interaktiven HTML-Seiten im Browser selbstständig durcharbeiten.
|
||||
3. **Echte Entwickler-Werkzeuge früh erlernen:** Nach den ersten OOP-Kapiteln folgen **VS Code (04b)** und **Git Versionskontrolle (04c)**, damit die Schülerin ab Kapitel 05 jedes gelöste Kapitel selbstständig versioniert und committet.
|
||||
4. **Eigene Unit Tests schreiben:** Ab Kapitel 09 lernt die Schülerin, wie man mit `unittest` eigene Testsuiten und Test-Driven Development (TDD) praktiziert.
|
||||
5. **Praxisnahe Analogien:** Statt trockener Theorie nutzen wir greifbare Alltagsbeispiele (Fahrrad-Verleih, Spotify-Playlists, Stammbäume, Geldautomaten).
|
||||
6. **Automatische Tests & Sofort-Feedback:** Jedes Kapitel hat ein Testskript (`test_aufgabe.py`), das bei `python3 test_aufgabe.py` oder `python3 test_all.py` sofort anzeigt, was schon klappt.
|
||||
7. **Autonomes Lernen:** Die Schülerin kann alle Kapitel über die modernen, interaktiven HTML-Seiten im Browser selbstständig durcharbeiten.
|
||||
|
||||
---
|
||||
|
||||
## 🗺️ Der Gesamtlehrplan im Überblick
|
||||
## 🗺️ Der Gesamtlehrplan im Überblick (Kapitel 00 bis 16)
|
||||
|
||||
```
|
||||
PHASE 1: GRUNDLAGEN DER OBJEKTORIENTIERUNG (OOP) & TOOLING
|
||||
├── Kapitel 00: Fehlersuche & Python-Debugging (Warm-up)
|
||||
├── Kapitel 01: Erste Klasse & Baupläne (Lehrer 22.0)
|
||||
├── Kapitel 01: Erste Klasse & Baupläne (Lehrer 22.0 / 21.0 Type Hints)
|
||||
├── Kapitel 02: Konstruktor __init__, self & UML (Lehrer 22.0 / 22.1)
|
||||
├── Kapitel 03: Methoden & Objekt-Interaktion (Lehrer 22.0)
|
||||
├── Kapitel 04: Schöne Textausgabe mit __str__ (Lehrer 28.0)
|
||||
├── Kapitel 04b: Umstieg & Installation von VS Code (Lehrer 20.1 / 20.2)
|
||||
├── Kapitel 04b: Umstieg & Installation von VS Code (Lehrer 20.1)
|
||||
├── Kapitel 04c: Git & Versionskontrolle (VS Code & Terminal) 🌿
|
||||
├── Kapitel 05: Assoziation & Aggregation: Spotify Playlists (Lehrer 23.0)
|
||||
└── Kapitel 06: Mini-Abschlussprojekt: Tamagotchi Terminal-Game
|
||||
|
||||
PHASE 2: FORTGESCHRITTENES OOP, SPEICHER & DATEN-PERSISTENZ
|
||||
PHASE 2: FORTGESCHRITTENES OOP, TESTING & SPEICHER
|
||||
├── Kapitel 07: Referenzen, Speicher & Stammbäume (Lehrer 24.0) 🧠
|
||||
├── Kapitel 08: Operator Overloading & Dunder-Methoden (Lehrer 28.0) ➕
|
||||
├── Kapitel 09: Vererbung (Inheritance) & super() (Lehrer 25.0) 🧬
|
||||
├── Kapitel 10: Polymorphie & Duck Typing (Lehrer 25.1) 🎭
|
||||
├── Kapitel 11: Exceptions & Robuste Fehlerbehandlung (Lehrer 26.0) 🛡️
|
||||
└── Kapitel 12: Speichern & Laden: JSON & CSV Persistenz (Lehrer 14.0) 💾
|
||||
├── Kapitel 09: Eigene Unit Tests schreiben & TDD (unittest) 🧪
|
||||
├── Kapitel 10: Vererbung (Inheritance) & super() (Lehrer 25.0) 🧬
|
||||
├── Kapitel 11: Polymorphie & Duck Typing (Lehrer 25.1) 🎭
|
||||
├── Kapitel 12: Exceptions & Robuste Fehlerbehandlung (Lehrer 26.0) 🛡️
|
||||
└── Kapitel 13: Speichern & Laden: JSON & CSV Persistenz (Lehrer 14.0) 💾
|
||||
|
||||
PHASE 3: GRAFISCHE OBERFLÄCHEN & PROFESSIONS-MODULE
|
||||
├── Kapitel 13: Grafische Oberflächen mit Tkinter / CustomTkinter (Lehrer 27.0) 🖥️
|
||||
├── Kapitel 14: Erweiterte Parameter (*args, **kwargs) & Container (Lehrer 29.0 / 30.0) 📦
|
||||
└── Kapitel 15: Master-Abschlussprojekt: Grafische Desktop-App mit Savegame 🏆
|
||||
├── Kapitel 14: Grafische Oberflächen mit Tkinter / CustomTkinter (Lehrer 27.0) 🖥️
|
||||
├── Kapitel 15: Erweiterte Parameter (*args, **kwargs) & Container (Lehrer 29/30) 📦
|
||||
└── Kapitel 16: Master-Abschlussprojekt: Grafische Desktop-App mit Savegame 🏆
|
||||
```
|
||||
|
||||
---
|
||||
|
|
@ -53,15 +57,17 @@ PHASE 3: GRAFISCHE OBERFLÄCHEN & PROFESSIONS-MODULE
|
|||
| **02** | **Konstruktor & self** | *22.0 & 22.1* | `__init__`, `self`, Startwerte, erstes UML-Klassendiagramm (`Bankkonto` & `Smartphone`) |
|
||||
| **03** | **Methoden & Verhalten** | *22.0* | Methoden definieren, Rückgabewerte, Interaktion zweier Objekte (`Rennauto` & RPG-Duell) |
|
||||
| **04** | **`__str__` & Darstellung** | *28.0* | Dunder-Methode `__str__`, lesbare Ausgabe von Objekten, Kassenzettel (`Warenkorb`) |
|
||||
| **04b** | **VS Code Umstieg** | *20.1 & 20.2* | Installation (Windows/Mac/Linux), Plugins (Error Lens, Python), Shortcuts, Projektordner |
|
||||
| **04b** | **VS Code Umstieg** | *20.1* | Installation (Windows/Mac/Linux), Plugins (Error Lens, Python), Shortcuts, Projektordner |
|
||||
| **04c** | **Git Versionskontrolle** | *Tooling* | Was ist Git? Spielstand-Analogie, `git add`, `git commit`, `git push`, VS Code Git-Tab |
|
||||
| **05** | **Objekte kombinieren** | *23.0* | Assoziation & Aggregation (1:1 und 1:n), Listen von Objekten filtern (`Spotify Playlist`) |
|
||||
| **06** | **Abschlussprojekt OOP 1** | *Konsolidierung* | Tamagotchi-Konsolenspiel (Lebenszyklus, Hunger, Müdigkeit, Zufallsevents) |
|
||||
| **07** | **Referenzen & Speicher** | *24.0 Referenzen* | RAM-Visualisierung, Mutable vs. Immutable, `is` vs. `==`, Aliasing, `Stammbaum`-Projekt |
|
||||
| **08** | **Operator Overloading** | *28.0 Spezielle Methoden*| `__add__`, `__sub__`, `__eq__`, `__lt__`, `__len__` (2D-Vektoren & Kartenspiel) |
|
||||
| **09** | **Vererbung & `super()`** | *25.0 Vererbung* | Basisklassen, Kindklassen, Vermeidung von Code-Duplikaten, `super().__init__()` (`Fahrzeuge`) |
|
||||
| **10** | **Polymorphie & Interfaces**| *25.1 Polymorphie* | Methoden überschreiben, gemeinsames Interface, Geometrie- & Grafik-Engine (`Formen`) |
|
||||
| **11** | **Exceptions & Fehler** | *26.0 Exceptions* | `try/except/else/finally`, `raise`, eigene Exception-Klassen (`Geldautomat`) |
|
||||
| **12** | **JSON & CSV Speichern** | *14.0 CSV / Persistenz* | `with open()`, `json.dump`/`json.load`, Spielstände dauerhaft sichern (`Savegame`) |
|
||||
| **13** | **Tkinter Desktop-GUI** | *27.0 Tkinter* | Fenster, Buttons, Labels, Eingabefelder, Event-Handling in OOP-Klassen |
|
||||
| **14** | **Parameter & Container** | *29.0 & 30.0 Parameter*| `*args`, `**kwargs`, Dunder `__getitem__`, `__iter__` für eigene Listen-Container |
|
||||
| **15** | **Master-Abschlussprojekt**| *Meisterstück* | Vollständige Desktop-App mit grafischer Oberfläche, Speichern & Laden |
|
||||
| **09** | **Eigene Unit Tests & TDD**| *Softwarequalität* | Testsuiten schreiben mit `unittest`, `assertEqual`, `assertTrue`, `assertRaises` |
|
||||
| **10** | **Vererbung & `super()`** | *25.0 Vererbung* | Basisklassen, Kindklassen, Vermeidung von Code-Duplikaten, `super().__init__()` (`Fahrzeuge`) |
|
||||
| **11** | **Polymorphie & Interfaces**| *25.1 Polymorphie* | Methoden überschreiben, gemeinsames Interface, Geometrie- & Grafik-Engine (`Formen`) |
|
||||
| **12** | **Exceptions & Fehler** | *26.0 Exceptions* | `try/except/else/finally`, `raise`, eigene Exception-Klassen (`Geldautomat`) |
|
||||
| **13** | **JSON & CSV Speichern** | *14.0 CSV / Persistenz* | `with open()`, `json.dump`/`json.load`, Spielstände dauerhaft sichern (`Savegame`) |
|
||||
| **14** | **Tkinter Desktop-GUI** | *27.0 Tkinter* | Fenster, Buttons, Labels, Eingabefelder, Event-Handling in OOP-Klassen |
|
||||
| **15** | **Parameter & Container** | *29.0 & 30.0 Parameter*| `*args`, `**kwargs`, Dunder `__getitem__`, `__iter__` für eigene Listen-Container |
|
||||
| **16** | **Master-Abschlussprojekt**| *Meisterstück* | Vollständige Desktop-App mit grafischer Oberfläche, Speichern & Laden |
|
||||
|
|
|
|||
16
README.md
16
README.md
|
|
@ -8,7 +8,7 @@ Diese Übungsreihe ist didaktisch aufbereitet und **1:1 mit dem offiziellen Lehr
|
|||
|
||||
## 🗺️ Der Lernpfad
|
||||
|
||||
### 🌱 Phase 1: Grundlagen OOP & Entwicklungsumgebung
|
||||
### 🌱 Phase 1: Grundlagen OOP & Werkzeuge
|
||||
| Kapitel | Thema | Was du lernst |
|
||||
| :--- | :--- | :--- |
|
||||
| **[00. Fehlersuche & Grundlagen](./00_fehlersuche_und_grundlagen/)** | Warm-up & Debugging | Tracebacks lesen, Einrückungen (`IndentationError`), Typfehler & Detektiv-Aufgabe |
|
||||
|
|
@ -17,20 +17,22 @@ Diese Übungsreihe ist didaktisch aufbereitet und **1:1 mit dem offiziellen Lehr
|
|||
| **[03. Methoden & Verhalten](./03_methoden_und_verhalten/)** | Methoden & Interaktion | Objekte können handeln & miteinander im Duell interagieren |
|
||||
| **[04. Schöne Textausgabe](./04_str_und_darstellung/)** | `__str__` Dunder-Methode | Wie Objekte lesbar mit `print()` ausgegeben werden (Warenkorb & Bon) |
|
||||
| **[04b. Umstieg & Installation VS Code](./04b_umstieg_vscode/)** | **Exkurs: IDE-Wechsel** | **Installation (Win/Mac/Linux), Plugins (Error Lens, Python), Shortcuts & Terminal** |
|
||||
| **[04c. Git & Versionskontrolle](./04c_git_und_versionskontrolle/)** | **Exkurs: Git-Tooling** | **Spielstände (Commits) sichern, VS Code Git-Tab, Terminal-Befehle & Remote Push** |
|
||||
| **[05. Objekte kombinieren](./05_objekte_kombinieren/)** | Assoziation & Komposition | Listen von Objekten & Spotify-Playlists filtern und berechnen |
|
||||
| **[06. Abschlussprojekt OOP 1](./06_abschlussprojekt_tamagotchi/)** | Mini-Projekt: Tamagotchi | Ein interaktives Konsolenspiel mit allem Gelernten |
|
||||
|
||||
### 🧠 Phase 2: Fortgeschrittenes OOP, Speicher & Persistenz
|
||||
### 🧠 Phase 2: Fortgeschrittenes OOP, Testing & Persistenz
|
||||
| Kapitel | Thema | Was du lernst |
|
||||
| :--- | :--- | :--- |
|
||||
| **[07. Referenzen, Speicher & Stammbäume](./07_referenzen_und_speicher/)** | **Speicher & RAM** | **Referenzen, Aliasing (`b = a`), Mutable vs. Immutable, `is` vs. `==` & Familienstammbaum** |
|
||||
| *08. Operator Overloading* | *Dunder-Methoden* | *`__add__`, `__eq__`, `__lt__` (2D-Vektoren & Kartenspiele)* |
|
||||
| *09. Vererbung & `super()`* | *Inheritance* | *Basisklassen, Kindklassen & `super().__init__()` (Fahrzeuge & RPG-Helden)* |
|
||||
| *10. Polymorphie & Interfaces* | *Polymorphism* | *Methoden überschreiben, Geometrie- & Grafik-Engine* |
|
||||
| *11. Exceptions & Fehler* | *Robustes Coding* | *`try/except/else/finally`, `raise`, eigene Exception-Klassen* |
|
||||
| *12. JSON & CSV Speichern* | *Persistenz* | *Spielstände dauerhaft mit JSON/CSV auf der Festplatte sichern* |
|
||||
| *09. Eigene Unit Tests & TDD* | *Softwarequalität* | *Testsuiten schreiben mit `unittest`, `assertEqual`, `assertTrue`, `assertRaises`* |
|
||||
| *10. Vererbung & `super()`* | *Inheritance* | *Basisklassen, Kindklassen & `super().__init__()` (Fahrzeuge & RPG-Helden)* |
|
||||
| *11. Polymorphie & Interfaces* | *Polymorphism* | *Methoden überschreiben, Geometrie- & Grafik-Engine* |
|
||||
| *12. Exceptions & Fehler* | *Robustes Coding* | *`try/except/else/finally`, `raise`, eigene Exception-Klassen* |
|
||||
| *13. JSON & CSV Speichern* | *Persistenz* | *Spielstände dauerhaft mit JSON/CSV auf der Festplatte sichern* |
|
||||
|
||||
*(Den vollständigen didaktischen Masterplan für alle Kapitel bis 15 findest du in [`LEHRPLAN.md`](./LEHRPLAN.md).)*
|
||||
*(Den vollständigen didaktischen Masterplan für alle Kapitel bis 16 findest du in [`LEHRPLAN.md`](./LEHRPLAN.md).)*
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
40
index.html
40
index.html
|
|
@ -12,7 +12,7 @@
|
|||
<div class="header-container">
|
||||
<div class="header-badge">🐍 Python Nachhilfe & Selbstlern-Kurs</div>
|
||||
<h1>Objektorientierte Programmierung (OOP)</h1>
|
||||
<p>Lerne Schritt für Schritt, wie du eigene Klassen baust, Methoden nutzt und professionell mit automatischen Tests arbeitest.</p>
|
||||
<p>Lerne Schritt für Schritt, wie du eigene Klassen baust, Methoden nutzt und professionell mit Git & Unit Tests arbeitest.</p>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
|
@ -36,9 +36,9 @@
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<!-- PHASE 1: GRUNDLAGEN -->
|
||||
<!-- PHASE 1: GRUNDLAGEN & WERKZEUGE -->
|
||||
<section>
|
||||
<h2 style="margin: 30px 0 10px 0; color: var(--text-main); font-size: 1.4rem;">🌱 Phase 1: Grundlagen OOP & Entwicklungsumgebung</h2>
|
||||
<h2 style="margin: 30px 0 10px 0; color: var(--text-main); font-size: 1.4rem;">🌱 Phase 1: Grundlagen OOP & Entwickler-Werkzeuge</h2>
|
||||
<div class="roadmap-grid">
|
||||
|
||||
<!-- Kapitel 0 -->
|
||||
|
|
@ -101,6 +101,16 @@
|
|||
<div class="roadmap-footer">VS Code Guide öffnen →</div>
|
||||
</a>
|
||||
|
||||
<!-- Kapitel 4c (Git) -->
|
||||
<a href="04c_git_und_versionskontrolle/index.html" class="roadmap-card" style="border-left: 4px solid var(--success);">
|
||||
<div>
|
||||
<span class="roadmap-number" style="background: var(--success-light); color: var(--success);">Exkurs 04c</span>
|
||||
<div class="roadmap-title">🌿 Git & Versionskontrolle</div>
|
||||
<div class="roadmap-desc">Die Programmier-Zeitmaschine: Spielstände (Commits) sichern, Diffs in VS Code, Terminal-Befehle & Push.</div>
|
||||
</div>
|
||||
<div class="roadmap-footer">Git Guide öffnen →</div>
|
||||
</a>
|
||||
|
||||
<!-- Kapitel 5 -->
|
||||
<a href="05_objekte_kombinieren/index.html" class="roadmap-card">
|
||||
<div>
|
||||
|
|
@ -126,7 +136,7 @@
|
|||
|
||||
<!-- PHASE 2: FORTGESCHRITTENES OOP -->
|
||||
<section>
|
||||
<h2 style="margin: 35px 0 10px 0; color: var(--text-main); font-size: 1.4rem;">🧠 Phase 2: Fortgeschrittenes OOP, Speicher & Persistenz</h2>
|
||||
<h2 style="margin: 35px 0 10px 0; color: var(--text-main); font-size: 1.4rem;">🧠 Phase 2: Fortgeschrittenes OOP, Testing & Persistenz</h2>
|
||||
<div class="roadmap-grid">
|
||||
|
||||
<!-- Kapitel 7 -->
|
||||
|
|
@ -142,29 +152,29 @@
|
|||
<!-- Vorschau Kapitel 8 -->
|
||||
<div class="roadmap-card" style="opacity: 0.85;">
|
||||
<div>
|
||||
<span class="roadmap-number">Kapitel 08 • Geplant</span>
|
||||
<span class="roadmap-number">Kapitel 08 • In Vorbereitung</span>
|
||||
<div class="roadmap-title">➕ Operator Overloading & Dunder</div>
|
||||
<div class="roadmap-desc">Eigene Klassen rechen- und vergleichbar machen mit <code>__add__</code>, <code>__eq__</code>, <code>__lt__</code> für 2D-Vektoren & Kartenspiele.</div>
|
||||
</div>
|
||||
<div class="roadmap-footer" style="color: var(--text-muted);">In Vorbereitung • Schulabgleich 28.0</div>
|
||||
<div class="roadmap-footer" style="color: var(--text-muted);">Schulabgleich 28.0</div>
|
||||
</div>
|
||||
|
||||
<!-- Vorschau Kapitel 9 -->
|
||||
<div class="roadmap-card" style="opacity: 0.85;">
|
||||
<div class="roadmap-card" style="opacity: 0.85; border-left: 4px solid var(--primary);">
|
||||
<div>
|
||||
<span class="roadmap-number">Kapitel 09 • Geplant</span>
|
||||
<div class="roadmap-title">🧬 Vererbung & super()</div>
|
||||
<div class="roadmap-desc">Basisklassen, Kindklassen, Code-Wiederverwendung und <code>super().__init__()</code> für Fahrzeugflotten & RPG-Helden.</div>
|
||||
<span class="roadmap-number" style="background: var(--primary-light); color: var(--primary);">Kapitel 09 • Neu</span>
|
||||
<div class="roadmap-title">🧪 Eigene Unit Tests schreiben (TDD)</div>
|
||||
<div class="roadmap-desc">Schreibe eigene Testsuiten mit <code>unittest</code>, <code>self.assertEqual()</code>, <code>assertRaises()</code> und lerne Test-Driven Development.</div>
|
||||
</div>
|
||||
<div class="roadmap-footer" style="color: var(--text-muted);">In Vorbereitung • Schulabgleich 25.0</div>
|
||||
<div class="roadmap-footer" style="color: var(--text-muted);">Softwarequalität • TDD</div>
|
||||
</div>
|
||||
|
||||
<!-- Vorschau Kapitel 10-12 -->
|
||||
<!-- Vorschau Kapitel 10-13 -->
|
||||
<div class="roadmap-card" style="opacity: 0.85;">
|
||||
<div>
|
||||
<span class="roadmap-number">Kapitel 10 - 12 • Geplant</span>
|
||||
<div class="roadmap-title">🛡️ Exceptions, Persistenz & GUI</div>
|
||||
<div class="roadmap-desc">Polymorphie (10), Eigene Fehlerklassen (11), Spielstände dauerhaft mit JSON/CSV sichern (12) und Desktop-Apps mit Tkinter (13).</div>
|
||||
<span class="roadmap-number">Kapitel 10 - 13 • Geplant</span>
|
||||
<div class="roadmap-title">🧬 Vererbung, Exceptions & JSON</div>
|
||||
<div class="roadmap-desc">Vererbung & <code>super()</code> (10), Polymorphie (11), Eigene Fehlerklassen (12) und Savegames mit JSON/CSV sichern (13).</div>
|
||||
</div>
|
||||
<div class="roadmap-footer" style="color: var(--text-muted);">Ausführlicher Plan in LEHRPLAN.md</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in a new issue