diff --git a/src/03-klassen/KATA/starter.ts b/src/03-klassen/KATA/starter.ts new file mode 100644 index 0000000..66e4914 --- /dev/null +++ b/src/03-klassen/KATA/starter.ts @@ -0,0 +1,24 @@ +// 1. Erstelle die Basisklasse `Person` +class Person { + constructor(public name: string, public age: number) {} + + getInfo(): string { + return `Name: ${this.name}, Alter: ${this.age}`; + } +} + +// 2. Erstelle die Klasse `Employee`, die von `Person` erbt +// TODO: `Employee` Klasse ergänzen mit `position` und `getInfo()` überschreiben + +// 3. Definiere das Interface `IContact` +// TODO: Interface mit `email`, `phone` und `getContactInfo()` erstellen + +// 4. Implementiere `IContact` in `Employee` +// TODO: `Employee` soll auch `IContact` implementieren + +// 5. Erstelle den Type Alias `EmployeeRecord` +// TODO: `EmployeeRecord` als `{ id: number, data: Employee }` definieren + +// 6. Erstelle die Klasse `Company` +// TODO: `Company` soll eine Index-Signatur für `EmployeeRecords` haben +// TODO: Methoden `addEmployee(employee: Employee)` und `getEmployee(id: number)` implementieren diff --git a/src/03-klassen/KATA/uebung.md b/src/03-klassen/KATA/uebung.md new file mode 100644 index 0000000..f72fde4 --- /dev/null +++ b/src/03-klassen/KATA/uebung.md @@ -0,0 +1,37 @@ +# Coding Kata: Benutzerverwaltung mit TypeScript + +## Ziel +Dieses Coding Kata hilft dir, **Klassen, Interfaces, Typen, Index-Signaturen und Type Aliase** in TypeScript praktisch zu üben. Du wirst eine einfache **Benutzerverwaltung** entwickeln. + +## Aufgaben + +### 1. Erstelle die Basisklasse `Person` +- Enthält `name` (string) und `age` (number). +- Methode `getInfo()`, die `"Name: [name], Alter: [age]"` zurückgibt. + +### 2. Abgeleitete Klasse `Employee` +- Erbt von `Person`. +- Zusätzliche Eigenschaft `position` (string). +- Überschreibt `getInfo()`, um `position` hinzuzufügen. + +### 3. Interface `IContact` +- Enthält `email` (string) und `phone` (string). +- Methode `getContactInfo()`, die die Kontaktinformationen als Zeichenkette zurückgibt. + +### 4. Implementiere `IContact` in `Employee` +- `Employee` soll `IContact` implementieren. + +### 5. Type Alias `EmployeeRecord` +- Definiert ein Objekt `{ id: number, data: Employee }`. + +### 6. Klasse `Company` mit Index-Signatur +- Speichert `EmployeeRecords`, wobei `id` als Schlüssel dient. +- Methode `addEmployee(employee: Employee)`, die einen neuen Mitarbeiter hinzufügt. +- Methode `getEmployee(id: number)`, die einen Mitarbeiter anhand der ID zurückgibt. + +## Bonus +- Methode `removeEmployee(id: number)` hinzufügen. +- `Record` als Alternative zur Index-Signatur nutzen. + +## Zeitrahmen +⌛ **30 Minuten** für die Umsetzung.