# Basisklasse Tier type Tier* = ref object of RootObj name*: string # Öffentlich zugänglicher Name des Tieres alter: int # Privates Feld für das Alter des Tieres # Getter für das Alter proc getAlter*(t: Tier): int = t.alter # Setter für das Alter mit Apostroph-Syntax proc `alter=`*(t: var Tier, value: int) = if value >= 0: t.alter = value else: echo "Alter kann nicht negativ sein." # Methode gibLaut für die Basisklasse proc gibLaut*(t: Tier): string = result = "..." # Abgeleitete Klasse Hund type Hund* = ref object of Tier # Überschreibe die Methode gibLaut für Hund proc gibLaut*(h: Hund): string = result = "Wuff" # Abgeleitete Klasse Katze type Katze* = ref object of Tier # Überschreibe die Methode gibLaut für Katze proc gibLaut*(k: Katze): string = result = "Miau" # Hauptprogramm zum Testen var hund: Hund = Hund(name: "Rocky") katze: Katze = Katze(name: "Garfield") # Setze Alter für Hund und Katze mit Apostroph-Syntax hund.alter = 3 katze.alter = 2 # Ausgabe der Details echo "Name des Hundes: ", hund.name echo "Alter des Hundes: ", hund.getAlter() echo hund.name, " sagt: ", hund.gibLaut() echo "\nName der Katze: ", katze.name echo "Alter der Katze: ", katze.getAlter() echo katze.name, " sagt: ", katze.gibLaut() # Ändere Alter für beide Tiere mit Apostroph-Syntax hund.alter = 4 katze.alter = 3 # Ausgabe des neuen Alters echo "\n", hund.name, "'s neues Alter: ", hund.getAlter() echo katze.name, "'s neues Alter: ", katze.getAlter()