Menu
Coddy logo textTech

Rückblick – Mitarbeiterhierarchie

Teil des Abschnitts Objektorientierte Programmierung der GO-Journey von Coddy. Lektion 40 von 107.

challenge icon

Aufgabe

Einfach

Erstellen wir ein Hierarchiesystem für Mitarbeiter eines Unternehmens, das zeigt, wie Komposition reale Organisationsstrukturen elegant modelliert. Du erstellst einen grundlegenden Mitarbeitertyp, den spezialisierte Rollen mit ihrem eigenen, individuellen Verhalten erweitern können.

Du strukturierst deinen Code über drei Dateien:

  • employee.go: Erstelle die Grundlage mit einer Employee-Struktur, die die Felder ID, Name und BaseSalary (float64) enthält. Gib ihr zwei Methoden:
    • Info() string, die [ID] [Name] zurückgibt
    • CalculateBonus() float64, die 10 % des Grundgehalts zurückgibt
  • roles.go: Erstelle zwei spezialisierte Mitarbeitertypen, die Employee einbetten:
    • Manager mit einem TeamSize-Feld (int): Manager erhalten einen höheren Bonus: 20 % des Grundgehalts plus 100 $ pro Teammitglied. Überschreibe die CalculateBonus-Methode, um dies zu implementieren.
    • Developer mit einem Language-Feld (string): Entwickler behalten den Standardbonus bei, überschreiben aber die Info-Methode, um ihre Programmiersprache anzuhängen: [ID] [Name] ([Language])
  • main.go: Lies die Mitarbeiterdaten aus der Eingabe ein, erstelle einen Manager und einen Entwickler und gib anschließend die Informationen und den berechneten Bonus jedes Mitarbeiters aus.

Die folgenden Eingaben werden bereitgestellt:

  • Zeile 1: Manager-ID
  • Zeile 2: Name des Managers
  • Zeile 3: Grundgehalt des Managers (float64)
  • Zeile 4: Teamgröße des Managers (Ganzzahl)
  • Zeile 5: Entwickler-ID
  • Zeile 6: Name des Entwicklers
  • Zeile 7: Grundgehalt des Entwicklers (float64)
  • Zeile 8: Programmiersprache des Entwicklers

Gib für jeden Mitarbeiter die Informationen aus, gefolgt vom Bonus in der nächsten Zeile. Formatiere die Boni mit zwei Dezimalstellen.

Wenn beispielsweise M001, Sarah Chen, 80000, 5, D001, Alex Rivera, 65000 und Go eingegeben werden, sollte deine Ausgabe folgendermaßen aussehen:

M001 Sarah Chen
16500.00
D001 Alex Rivera (Go)
6500.00

Beachte, wie sich die Bonusberechnung des Managers (20 % von 80000 + 5×100 = 16500) vom Standardbonus des Entwicklers von 10 % unterscheidet, während der Entwickler die Darstellung seiner Informationen anpasst. Beide Typen haben weiterhin Zugriff auf die eingebetteten Employee-Felder und können bei Bedarf die ursprünglichen Methoden aufrufen.

Probier es selbst

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

func main() {
	reader := bufio.NewReader(os.Stdin)

	// Manager-Details lesen
	managerID, _ := reader.ReadString('\n')
	managerID = strings.TrimSpace(managerID)

	managerName, _ := reader.ReadString('\n')
	managerName = strings.TrimSpace(managerName)

	managerSalaryStr, _ := reader.ReadString('\n')
	managerSalary, _ := strconv.ParseFloat(strings.TrimSpace(managerSalaryStr), 64)

	teamSizeStr, _ := reader.ReadString('\n')
	teamSize, _ := strconv.Atoi(strings.TrimSpace(teamSizeStr))

	// Developer-Details lesen
	devID, _ := reader.ReadString('\n')
	devID = strings.TrimSpace(devID)

	devName, _ := reader.ReadString('\n')
	devName = strings.TrimSpace(devName)

	devSalaryStr, _ := reader.ReadString('\n')
	devSalary, _ := strconv.ParseFloat(strings.TrimSpace(devSalaryStr), 64)

	devLanguage, _ := reader.ReadString('\n')
	devLanguage = strings.TrimSpace(devLanguage)

	// TODO: Erstelle einen Manager mit den gelesenen Werten
	// Hinweis: Verwende Komposition - Manager bettet Employee ein

	// TODO: Erstelle einen Developer mit den gelesenen Werten
	// Hinweis: Verwende Komposition - Developer bettet Employee ein

	// TODO: Gib Manager-Info und Bonus aus (Bonus auf 2 Dezimalstellen formatiert)
	// Verwende fmt.Printf mit "%.2f" zur Formatierung

	// TODO: Gib Developer-Info und Bonus aus (Bonus auf 2 Dezimalstellen formatiert)
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Go-Compiler