Menu
Coddy logo textTech

Özet - Çalışan Hiyerarşisi

Coddy'nin GO Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 40 / 107.

challenge icon

Görev

Kolay

Gerçek dünyadaki organizasyon yapılarını bileşimin nasıl zarif bir şekilde modellediğini gösteren bir şirket için çalışan hiyerarşisi sistemi oluşturalım. Uzmanlaşmış rollerin kendi benzersiz davranışlarıyla genişletebileceği temel bir çalışan türü oluşturacaksınız.

Kodunuzu üç dosyaya ayıracaksınız:

  • employee.go: Employee, ID ve Name (float64) alanlarını içeren bir BaseSalary struct'ı ile temeli oluşturun. Buna iki metot ekleyin:
    • Info() string, [ID] [Name] döndürür
    • CalculateBonus() float64, temel maaşın %10'unu döndürür
  • roles.go: Employee'ı gömen iki uzmanlaşmış çalışan türü oluşturun:
    • Manager, bir TeamSize alanına (int) sahip olur: yöneticiler daha yüksek bonus alır: temel maaşın %20'si artı ekip üyesi başına $100. Bunu uygulamak için CalculateBonus metodunu gölgeleyin.
    • Developer, bir Language alanına (string) sahip olur: geliştiriciler standart bonusu korur, ancak programlama dillerini eklemek için Info metodunu gölgeler: [ID] [Name] ([Language])
  • main.go: Çalışan ayrıntılarını girdiden okuyun, bir Manager ve bir Developer oluşturun, ardından her çalışanın bilgilerini ve hesaplanan bonusunu görüntüleyin.

Aşağıdaki girdiler sağlanacaktır:

  • 1. satır: Manager ID'si
  • 2. satır: Manager adı
  • 3. satır: Manager temel maaşı (float64)
  • 4. satır: Manager ekip büyüklüğü (tam sayı)
  • 5. satır: Developer ID'si
  • 6. satır: Developer adı
  • 7. satır: Developer temel maaşı (float64)
  • 8. satır: Developer programlama dili

Her çalışan için bilgilerini yazdırın ve bir sonraki satırda bonusunu yazdırın. Bonusları iki ondalık basamakla biçimlendirin.

Örneğin M001, Sarah Chen, 80000, 5, D001, Alex Rivera, 65000 ve Go verildiğinde çıktınız şöyle olmalıdır:

M001 Sarah Chen
16500.00
D001 Alex Rivera (Go)
6500.00

Manager'ın bonus hesaplamasının (80000'in %20'si + 5×100 = 16500) Developer'ın standart %10 bonusundan nasıl farklı olduğuna dikkat edin; Developer ise bilgilerinin görüntülenme biçimini özelleştirir. Her iki tür de gömülü Employee alanlarına erişmeye ve gerektiğinde özgün metotları çağırmaya devam eder.

Kendin dene

package main

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

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

	// Manager detaylarını oku
	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 detaylarını oku
	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: Okunan değerleri kullanarak bir Manager oluştur
	// Hint: Bileşim kullan - Manager, Employee'yi gömer

	// TODO: Okunan değerleri kullanarak bir Developer oluştur
	// Hint: Bileşim kullan - Developer, Employee'yi gömer

	// TODO: Manager bilgilerini ve bonusunu yazdır (bonus 2 ondalık basamağa biçimlendirilmiş)
	// Biçimlendirme için "%.2f" ile fmt.Printf kullan

	// TODO: Developer bilgilerini ve bonusunu yazdır (bonus 2 ondalık basamağa biçimlendirilmiş)
}

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Go derleyicisi