Aufgabenstellung
Loading
Loading
Verschiedene Programmierparadigmen (imperativ, deklarativ, funktional, objektorientiert) lösen unterschiedliche Probleme. OOP ist Standard für komplexe Anwendungen.
3Abschnitteca. 8Min Lesezeit3KompetenzenNiveauStandard 2 · Vertiefung 1Stand 06/2026
Lesetiefe: Vertiefung
Schriftgröße: Standard
Programmierparadigmen im Vergleich
Quadrate aller geraden Zahlen einer Liste `[1, 2, 3, 4, 5, 6]`.
```python ergebnis = [] for n in [1,2,3,4,5,6]: if n % 2 == 0: ergebnis.append(n*n) ```
```python ergebnis = [n*n for n in [1,2,3,4,5,6] if n % 2 == 0] ```
```python ergebnis = list(map(lambda n: n*n, filter(lambda n: n%2==0, [1,2,3,4,5,6]))) ```
Ergebnis: Alle drei liefern . Comprehension ist in Python idiomatisch; map/filter ist eher Lisp-Stil.
Programmierparadigmen sind nicht Mode, sondern Werkzeuge für unterschiedliche Probleme.
Deklarativ trennt das Was vom Wie - dadurch lassen sich Lösungen oft optimieren, ohne sie umzuschreiben.
Funktionale Konzepte (map/filter/reduce, Immutability) haben heute fast jede Sprache erreicht.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Löse das Problem "Quadrate aller geraden Zahlen einer Liste" jeweils imperativ und funktional in Python. Welche Variante ist lesbarer?
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Sebesta: Concepts of Programming Languages (Pearson)
Vererbungshierarchie (is-a)
Implementiere `Konto` mit Saldo und `Sparkonto(Konto)` mit Zinssatz in Python.
```python class Konto: def __init__(self, inhaber, saldo=0): self.inhaber = inhaber self._saldo = saldo def einzahlen(self, betrag): if betrag <= 0: raise ValueError("Betrag positiv") self._saldo += betrag def auszahlen(self, betrag): if betrag > self._saldo: raise ValueError("Deckung fehlt") self._saldo -= betrag @property def saldo(self): return self._saldo ```
```python class Sparkonto(Konto): def __init__(self, inhaber, saldo=0, zinssatz=0.02): super().__init__(inhaber, saldo) self.zinssatz = zinssatz def gutschreiben_zinsen(self): self._saldo *= (1 + self.zinssatz) ```
```python s = Sparkonto("Maria", 1000, 0.03) s.einzahlen(500) s.gutschreiben_zinsen() print(s.saldo) # 1545.0 ```
Ergebnis: Sparkonto erbt Saldo und Methoden, ergänzt zinsabhängige Logik. Encapsulation via `_saldo` (Konvention "protected") und Property.
OOP ist die dominante Art, grosse Systeme zu strukturieren - Klassen bilden Modulgrenzen.
Vererbung ist mächtig, aber gefährlich; oft ist Composition flexibler.
Polymorphie ist der wahre Vorteil von OOP - ein Aufruf, viele Implementierungen.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Modelliere die Klassen `Fahrzeug`, `Auto`, `Fahrrad` mit gemeinsamer Methode `bewegen()`. Zeichne ein UML-Diagramm und implementiere in Python/Java.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Gang of Four: Design Patterns - Elements of Reusable Object-Oriented Software (Addison-Wesley)
MVC vs. MVVM Architekturmuster
Implementiere Subject und Observer.
```python class Subject: def __init__(self): self._obs = [] def attach(self, o): self._obs.append(o) def detach(self, o): self._obs.remove(o) def notify(self, ev): for o in self._obs: o.update(ev) ```
```python class MailObserver: def update(self, ev): print("Mail:", ev) ```
```python s = Subject() s.attach(MailObserver()) s.notify("Neuer Kommentar") ```
Ergebnis: Subject kennt seine Observer abstrakt; neue Observer-Klassen lassen sich ohne Änderung am Subject hinzufügen (Open/Closed).
SOLID hilft, OOP-Code wartbar zu halten - jeder Buchstabe verhindert einen typischen Fehler.
Design Patterns sind kein Selbstzweck, sondern Vokabular für wiederkehrende Lösungen.
MVC vs. MVVM Architekturmuster
MVC trennt drei Verantwortlichkeiten - das macht moderne Web-Frameworks überhaupt erst beherrschbar.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Beschreibe das Observer-Pattern am Beispiel "Benachrichtigungen in einem sozialen Netzwerk". Welche Vorteile bietet es?
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Robert Martin: Clean Architecture (Prentice Hall)
Belege & Quellen