Menu
Coddy logo textTech

Zusammenfassung – Mitarbeiter-Hierarchie

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

challenge icon

Aufgabe

Einfach

Lassen Sie uns ein Mitarbeiter-Hierarchiesystem für ein Unternehmen aufbauen, das zeigt, wie Komposition reale Organisationsstrukturen elegant modelliert. Sie erstellen einen Basis-Mitarbeitertyp, den spezialisierte Rollen mit ihren eigenen einzigartigen Verhaltensweisen erweitern können.

Sie organisieren Ihren Code in drei Dateien:

  • employee.go: Erstellen Sie die Grundlage mit einem Employee-Struct, das die Felder ID, Name und BaseSalary (float64) enthält. Geben Sie ihm zwei Methoden:
    • Info() string, die [ID] [Name] zurückgibt
    • CalculateBonus() float64, die 10% des Grundgehalts zurückgibt
  • roles.go: Erstellen Sie 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. Überschreiben (Shadowing) Sie die Methode CalculateBonus, um dies zu implementieren.
    • Developer mit einem Language-Feld (string) — Entwickler behalten den Standardbonus, überschreiben (Shadowing) jedoch die Methode Info, um ihre Programmiersprache anzuhängen: [ID] [Name] ([Language])
  • main.go: Lesen Sie die Mitarbeiterdetails aus der Eingabe ein, erstellen Sie einen Manager und einen Developer und zeigen Sie dann die Informationen und den berechneten Bonus jedes Mitarbeiters an.

Die folgenden Eingaben werden bereitgestellt:

  • Zeile 1: Manager ID
  • Zeile 2: Manager name
  • Zeile 3: Manager base salary (float64)
  • Zeile 4: Manager team size (integer)
  • Zeile 5: Developer ID
  • Zeile 6: Developer name
  • Zeile 7: Developer base salary (float64)
  • Zeile 8: Developer programming language

Geben Sie für jeden Mitarbeiter seine Informationen gefolgt von seinem Bonus in der nächsten Zeile aus. Formatieren Sie Boni mit zwei Dezimalstellen.

Zum Beispiel, gegeben M001, Sarah Chen, 80000, 5, D001, Alex Rivera, 65000 und Go, sollte Ihre Ausgabe wie folgt aussehen:

M001 Sarah Chen
16500.00
D001 Alex Rivera (Go)
6500.00

Beachten Sie, wie sich die Bonusberechnung des Managers (20% von 80000 + 5×100 = 16500) vom Standardbonus von 10% des Entwicklers unterscheidet, während der Entwickler anpasst, wie seine Informationen angezeigt werden. 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))

	// Entwickler-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: Erstellen Sie einen Manager mit den gelesenen Werten
	// Hinweis: Verwenden Sie Komposition - Manager bettet Employee ein

	// TODO: Erstellen Sie einen Entwickler mit den gelesenen Werten
	// Hinweis: Verwenden Sie Komposition - Entwickler bettet Employee ein

	// TODO: Manager-Informationen und Bonus ausgeben (Bonus auf 2 Dezimalstellen formatiert)
	// Verwenden Sie fmt.Printf mit "%.2f" zur Formatierung

	// TODO: Entwickler-Informationen und Bonus ausgeben (Bonus auf 2 Dezimalstellen formatiert)
}

Alle Lektionen in Objektorientierte Programmierung