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 des employés pour une entreprise, qui 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 dans trois fichiers :

  • employee.go : créez les fondations avec une structure Employee contenant les champs ID, Name et BaseSalary (float64). Donnez-lui deux méthodes :
    • Info() string qui renvoie [ID] [Name]
    • CalculateBonus() float64 qui renvoie 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 une prime plus élevée : 20 % du salaire de base plus 100 $ par membre de l’équipe. Masquez la méthode CalculateBonus pour implémenter ce comportement.
    • Developer avec un champ Language (string) : les développeurs conservent la prime standard, mais masquent la méthode Info afin d’ajouter leur langage de programmation : [ID] [Name] ([Language])
  • main.go : lisez les informations des employés depuis l’entrée, créez un Manager et un Developer, puis affichez les informations et la prime calculée de chaque employé.

Les entrées suivantes seront fournies :

  • Ligne 1 : identifiant 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 : identifiant 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, puis sa prime à la ligne suivante. Formatez les primes avec deux décimales.

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

M001 Sarah Chen
16500.00
D001 Alex Rivera (Go)
6500.00

Remarquez comment le calcul de la prime du Manager (20 % de 80000 + 5×100 = 16500) diffère de la prime 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 lorsque cela est 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
	// Indice : Utiliser la composition - Manager intègre Employee

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

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

	// TODO: Afficher les infos du developer et le bonus (bonus formaté à 2 décimales)
}

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur Go en ligne