Menu
CoddyTech

Rangkuman: Hierarki Karyawan

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan C++ di Coddy. Pelajaran 55 dari 104.

challenge icon

Tantangan

Mudah

Mari kita buat sistem hierarki karyawan lengkap yang menggabungkan semua konsep pewarisan yang telah kamu pelajari di bab ini. Kamu akan membuat struktur perusahaan dengan berbagai jenis karyawan yang memiliki atribut umum, tetapi perilakunya khusus.

Kamu akan mengatur kodemu dalam empat file:

  • Employee.h: Definisikan class dasar Employee yang akan menjadi induk bagi semua jenis karyawan. Setiap karyawan memiliki nama, ID, dan gaji pokok. Sertakan:
    • Anggota protected untuk nama (std::string), id (int), dan baseSalary (double)
    • Konstruktor yang menginisialisasi ketiga nilai
    • method virtual displayInfo() yang mencetak: Employee: <name> (ID: <id>)
    • method virtual calculateSalary() yang mengembalikan gaji pokok
    • Destruktor virtual
  • Manager.h: Definisikan class Manager yang mewarisi Employee secara publik. Manager menerima bonus berdasarkan ukuran tim:
    • Anggota int teamSize yang bersifat private
    • Konstruktor yang menerima nama, id, gaji pokok, dan ukuran tim: teruskan argumen dengan benar ke konstruktor dasar
    • Timpa displayInfo() agar mencetak: Manager: <name> (ID: <id>) - Team of <teamSize>
    • Timpa calculateSalary() agar mengembalikan gaji pokok ditambah 500 untuk setiap anggota tim
  • Developer.h: Definisikan class Developer yang mewarisi Employee secara publik. Developer memiliki bahasa pemrograman spesialisasi dan mendapat bonus keterampilan:
    • Anggota std::string language yang bersifat private
    • Konstruktor yang menerima nama, id, gaji pokok, dan bahasa pemrograman
    • Timpa displayInfo() agar mencetak: Developer: <name> (ID: <id>) - <language>
    • Timpa calculateSalary() agar mengembalikan gaji pokok ditambah bonus keterampilan sebesar 1000
  • main.cpp: Baca enam input, masing-masing pada baris terpisah:
    1. Nama Manager
    2. ID Manager
    3. Gaji pokok Manager
    4. Nama Developer
    5. ID Developer
    6. Gaji pokok Developer

    Buat Manager dengan ukuran tim 4 dan Developer yang berspesialisasi dalam "C++". Simpan pointer ke keduanya dalam sebuah array berisi pointer Employee*. Lakukan perulangan pada array untuk memanggil displayInfo() dan mencetak gaji yang dihitung untuk setiap karyawan dengan format berikut:

    <displayInfo output>
    Salary: $<calculated salary>

    Cetak satu baris kosong di antara karyawan. Setelah menampilkan semua karyawan, hapus object yang dialokasikan secara dinamis dengan benar.

Contohnya, dengan input Sarah, 101, 5000, Mike, 102, dan 4500:

Manager: Sarah (ID: 101) - Team of 4
Salary: $7000

Developer: Mike (ID: 102) - C++
Salary: $5500

Tantangan ini menunjukkan polimorfisme dalam praktik: pemanggilan method virtual melalui pointer class dasar akan menjalankan implementasi class turunan yang tepat. Ingat untuk menggunakan kata kunci override dan menyertakan destruktor virtual di class dasar agar pembersihan berjalan dengan benar.

Coba sendiri

#include <iostream>
#include <string>
#include "Employee.h"
#include "Manager.h"
#include "Developer.h"

using namespace std;

int main() {
    // Baca input Manager
    string managerName;
    int managerId;
    double managerSalary;
    
    getline(cin, managerName);
    cin >> managerId;
    cin >> managerSalary;
    cin.ignore();
    
    // Baca input Developer
    string developerName;
    int developerId;
    double developerSalary;
    
    getline(cin, developerName);
    cin >> developerId;
    cin >> developerSalary;
    
    // TODO: Buat Manager dengan ukuran tim 4
    // TODO: Buat Developer yang ahli dalam "C++"
    
    // TODO: Buat array pointer Employee* untuk menyimpan kedua karyawan
    
    // TODO: Lakukan perulangan pada array dan untuk setiap karyawan:
    //   - Panggil displayInfo()
    //   - Cetak: Salary: $<gaji yang dihitung>
    //   - Cetak baris kosong di antara karyawan (jangan setelah karyawan terakhir)
    
    // TODO: Hapus object yang dialokasikan secara dinamis
    
    return 0;
}

Semua pelajaran di Pemrograman Berorientasi Object

Latihan sendiri: Compiler C++ online