# Nachdenkzettel: Vererbung

## 1. Neue Methode in der Basisklasse
```java
class Asset { 
    public String getName() { ... } 
}
class ImageAsset extends Asset { }
```
Jetzt bekommt `Asset` eine neue Methode `isArchived()`.
 
a) Erklären Sie, ob und wann `ImageAsset` angepasst werden muss.  
b) Welche Möglichkeiten der Weiterverwendung der Methode gibt es? Begründen Sie Ihre Entscheidung mit Bezug auf Vererbung und Überschreiben.

## 2. Neue Methode in der Subklasse
```java
class VideoAsset extends Asset {
    public void generatePreview() { ... }
}
Asset a = new VideoAsset();
a.generatePreview();  // Fehler
```
 
a) Beschreiben Sie, warum der Compiler hier einen Fehler meldet.  
b) Nennen Sie mindestens zwei Möglichkeiten, wie man den Code so anpassen kann, dass `generatePreview()` aufrufbar wird.  
c) Diskutieren Sie, welche Lösung Sie bevorzugen und warum.
 
## 3. Welche Rolle spielt die Vererbung in Ihrem Projekt?
a) Welche Rolle spielt die Vererbung in Ihrem Projekt und zeigen Sie das UML-Diagramm hierzu. Es müssen nicht alle und nur die zentralen Vererbungsstrukturen erklärt und im UML-Diagramm dargestellt sein.  
b) Begründen Sie, warum sie hier Vererbung einsetzen. Gehen Sie konkret auf die Aspekte der Vererbung ein.  
c) Beschreiben Sie mögliche Änderungen und Erweiterungen in Ihrem Projekt und diskutieren Sie, wie gut Ihre Vererbungsstruktur damit zurechtkommt.  
d) Beschreiben Sie Ihren Vorschlag der Vererbung einer KI/LLM Ihrer Wahl und zeigen Sie den Unterschied zwischen Ihrem Vorschlag und möglichen Verbesserungsvorschlägen der KI. Diskutieren Sie, ob diese Sinn machen, ihr Projekt verbessern oder verschlechtern?  