class Karyawan: def __init__(self, id_karyawan, nama, gaji_pokok): self.id_karyawan = id_karyawan self.nama = nama self.gaji_pokok = gaji_pokok def hitung_total_gaji(self): return self.gaji_pokok class KaryawanTetap(Karyawan): def __init__(self, id_karyawan, nama, gaji_pokok, tunjangan): super().__init__(id_karyawan, nama, gaji_pokok) self.tunjangan = tunjangan # Method overriding def hitung_total_gaji(self): return self.gaji_pokok + self.tunjangan def tampilkan_data(self): print("=== KARYAWAN TETAP ===") print(f"ID Karyawan : {self.id_karyawan}") print(f"Nama : {self.nama}") print(f"Gaji Pokok : Rp{self.gaji_pokok:,}") print(f"Tunjangan : Rp{self.tunjangan:,}") print(f"Total Gaji : Rp{self.hitung_total_gaji():,}") class KaryawanKontrak(Karyawan): def __init__(self, id_karyawan, nama, gaji_pokok, hari_kerja, upah_harian): super().__init__(id_karyawan, nama, gaji_pokok) self.hari_kerja = hari_kerja self.upah_harian = upah_harian # Method overriding def hitung_total_gaji(self): return self.gaji_pokok + (self.hari_kerja * self.upah_harian) def tampilkan_data(self): print("=== KARYAWAN KONTRAK ===") print(f"ID Karyawan : {self.id_karyawan}") print(f"Nama : {self.nama}") print(f"Gaji Pokok : Rp{self.gaji_pokok:,}") print(f"Hari Kerja : {self.hari_kerja} hari") print(f"Upah Harian : Rp{self.upah_harian:,}") print(f"Total Gaji : Rp{self.hitung_total_gaji():,}") # Membuat object Karyawan Tetap karyawan_tetap = KaryawanTetap( "T001", "Budi Santoso", 5_000_000, 1_500_000 ) # Membuat object Karyawan Kontrak karyawan_kontrak = KaryawanKontrak( "K002", "Siti Aminah", 2_000_000, 20, 100_000 ) # Menampilkan data karyawan_tetap.tampilkan_data() print() karyawan_kontrak.tampilkan_data()