neche

Code

Feb 28th, 2024
907
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.78 KB | None | 0 0
  1. # Definisikan class Karyawan sebagai parent class
  2. class Karyawan:
  3.     def __init__(self, nama, usia, pendapatan, insentif_lembur):
  4.         self.nama = nama
  5.         self.usia = usia
  6.         self.pendapatan = pendapatan
  7.         self.pendapatan_tambahan = 0
  8.         self.insentif_lembur = insentif_lembur
  9.     def lembur(self):
  10.         self.pendapatan_tambahan += self.insentif_lembur
  11.     def tambahan_proyek(self,jumlah_tambahan):
  12.         self.pendapatan_tambahan += jumlah_tambahan
  13.     def total_pendapatan(self):
  14.         return self.pendapatan + self.pendapatan_tambahan
  15.  
  16. # Definisikan class TenagaLepas sebagai child class dari class Karyawan
  17. class TenagaLepas(Karyawan):
  18.     def __init__(self, nama, usia, pendapatan):
  19.         super().__init__(nama, usia, pendapatan, 0)
  20.     def tambahan_proyek(self, nilai_proyek):
  21.         self.pendapatan_tambahan +=int(nilai_proyek * 0.01)
  22.  
  23. # Definisikan class AnalisData sebagai child class dari class Karyawan
  24. class AnalisData(Karyawan):
  25.     def __init__(self, nama, usia = 21, pendapatan = 6500000,
  26.                  insentif_lembur = 100000):
  27.         super().__init__(nama, usia, pendapatan, insentif_lembur)
  28.  
  29. # Definisikan class IlmuwanData sebagai child class dari class Karyawan
  30. class IlmuwanData(Karyawan):
  31.     def __init__(self, nama, usia = 25, pendapatan = 12000000,
  32.                  insentif_lembur = 150000):
  33.         super().__init__(nama, usia, pendapatan, insentif_lembur)
  34.     def tambahan_proyek(self, nilai_proyek):
  35.         self.pendapatan_tambahan +=int(0.1 * nilai_proyek)
  36.  
  37. # Definisikan class PembersihData sebagai child class dari class TenagaLepas
  38. class PembersihData(TenagaLepas):
  39.     def __init__(self, nama, usia, pendapatan = 4000000):
  40.         super().__init__(nama, usia, pendapatan)
  41.  
  42. # Definisikan class DokumenterTeknis sebagai child class dari class TenagaLepas
  43. class DokumenterTeknis(TenagaLepas):
  44.     def __init__(self, nama, usia, pendapatan = 2500000):
  45.         super().__init__(nama, usia, pendapatan)
  46.        
  47. # Definisikan class Perusahaan
  48. class Perusahaan:
  49.     def __init__(self, nama, alamat, nomor_telepon):
  50.         self.nama = nama
  51.         self.alamat = alamat
  52.         self.nomor_telepon = nomor_telepon
  53.         self.list_karyawan = []
  54.     def aktifkan_karyawan(self, karyawan):
  55.         self.list_karyawan.append(karyawan)
  56.     def nonaktifkan_karyawan(self, nama_karyawan):
  57.         karyawan_nonaktif = None
  58.         for karyawan in self.list_karyawan:
  59.             if karyawan.nama == nama_karyawan:
  60.                 karyawan_nonaktif = karyawan
  61.                 break
  62.         if karyawan_nonaktif is not None:
  63.             self.list_karyawan.remove(karyawan_nonaktif)
  64.     def total_pengeluaran(self):
  65.         pengeluaran = 0
  66.         for karyawan in self.list_karyawan:
  67.             pengeluaran += karyawan.total_pendapatan()
  68.         return pengeluaran
  69.     def cari_karyawan(self, nama_karyawan):
  70.         for karyawan in self.list_karyawan:
  71.             if karyawan.nama == nama_karyawan:
  72.                 return karyawan
  73.         return None
  74.  
  75. # Create object karyawan sesuai dengan tugasnya masing-masing
  76. # seperti yang dinyatakan dalam tabel.
  77. ani = PembersihData('Ani', 25)
  78. budi = DokumenterTeknis('Budi', 18)
  79. cici = IlmuwanData('Cici')
  80. didi = IlmuwanData('Didi', 32, 20000000)
  81. efi = AnalisData('Efi')
  82. febi = AnalisData('Febi', 28, 12000000)
  83.  
  84. # Create object perusahaan
  85. perusahaan = Perusahaan('ABC', 'Jl. Jendral Sudirman, Blok 11', '(021)95812XX')
  86.  
  87. # Aktifkan setiap karyawan yang telah didefinisikan
  88. perusahaan.aktifkan_karyawan(ani)
  89. perusahaan.aktifkan_karyawan(budi)
  90. perusahaan.aktifkan_karyawan(cici)
  91. perusahaan.aktifkan_karyawan(didi)
  92. perusahaan.aktifkan_karyawan(efi)
  93. perusahaan.aktifkan_karyawan(febi)
  94.  
  95. # Cetak keseluruhan total pengeluaran perusahaan
  96. print(perusahaan.total_pengeluaran())
Advertisement
Add Comment
Please, Sign In to add comment