Menu
Coddy logo textTech

Récapitulatif - Hiérarchie des employés

Fait partie de la section Programmation Orientée Objet du Journey GO de Coddy — leçon 40 sur 107.

challenge icon

Défi

Facile

Construisons un système de hiérarchie d'employés pour une entreprise qui démontre comment la composition modélise élégamment les structures organisationnelles du monde réel. Vous allez créer un type d'employé de base que des rôles spécialisés pourront étendre avec leurs propres comportements uniques.

Vous organiserez votre code sur trois fichiers :

  • employee.go : Créez la fondation avec une structure Employee contenant les champs ID, Name, et BaseSalary (float64). Donnez-lui deux méthodes :
    • Info() string qui retourne [ID] [Name]
    • CalculateBonus() float64 qui retourne 10 % du salaire de base
  • roles.go : Créez deux types d'employés spécialisés qui intègrent Employee :
    • Manager avec un champ TeamSize (int) — les managers reçoivent un bonus plus élevé : 20 % du salaire de base plus 100 $ par membre de l'équipe. Masquez (shadow) la méthode CalculateBonus pour implémenter cela.
    • Developer avec un champ Language (string) — les développeurs conservent le bonus standard mais masquent la méthode Info pour ajouter leur langage de programmation : [ID] [Name] ([Language])
  • main.go : Lisez les détails des employés à partir de l'entrée, créez un Manager et un Developer, puis affichez les informations et le bonus calculé de chaque employé.

Les entrées suivantes seront fournies :

  • Ligne 1 : ID du Manager
  • Ligne 2 : Nom du Manager
  • Ligne 3 : Salaire de base du Manager (float64)
  • Ligne 4 : Taille de l'équipe du Manager (entier)
  • Ligne 5 : ID du Developer
  • Ligne 6 : Nom du Developer
  • Ligne 7 : Salaire de base du Developer (float64)
  • Ligne 8 : Langage de programmation du Developer

Pour chaque employé, affichez ses informations suivies de son bonus sur la ligne suivante. Formatez les bonus avec deux décimales.

Par exemple, avec M001, Sarah Chen, 80000, 5, D001, Alex Rivera, 65000, et Go, votre sortie devrait être :

M001 Sarah Chen
16500.00
D001 Alex Rivera (Go)
6500.00

Remarquez comment le calcul du bonus du Manager (20 % de 80000 + 5×100 = 16500) diffère du bonus standard de 10 % du Developer, tandis que le Developer personnalise l'affichage de ses informations. Les deux types ont toujours accès aux champs Employee intégrés et peuvent appeler les méthodes d'origine si nécessaire.

Essayez vous-même

package main

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

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

	// Lire les détails du Manager
	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))

	// Lire les détails du Developer
	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: Créer un Manager en utilisant les valeurs lues
	// Astuce : Utilisez la composition - Manager intègre Employee

	// TODO: Créer un Developer en utilisant les valeurs lues
	// Astuce : Utilisez la composition - Developer intègre Employee

	// TODO: Afficher les informations du manager et son bonus (bonus formaté à 2 décimales)
	// Utilisez fmt.Printf avec "%.2f" pour le formatage

	// TODO: Afficher les informations du développeur et son bonus (bonus formaté à 2 décimales)
}

Toutes les leçons de Programmation Orientée Objet