Advertisement
alvinfnaldi

Typescript OOP

Sep 21st, 2023
1,044
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {
  2.     // interface Lembur {
  3.     //     getTunjanganLembur()
  4.     //     getStatusKaryawan()
  5.     // }
  6.  
  7.     abstract class AbstrakKaryawan {
  8.     constructor(public TahunLahir:number){}
  9.     abstract getSisaMasaPensiun():any
  10.     getTahunLahir():any{
  11.         console.log(`${this.TahunLahir}`)
  12.     }
  13. }
  14.  
  15. class Karyawan extends AbstrakKaryawan  {
  16.     constructor(private Firstname:string, private Lastname:string, public TahunMasuk: number, TahunLahir:number){
  17.         super(TahunLahir)
  18.     }
  19.  
  20.     getNamaLengkap():any{
  21.         return(`Nama Lengkap : ${this.Firstname} ${this.Lastname}`)
  22.     }
  23.  
  24.     protected getDataKaryawan():any{
  25.         console.log(`${this.Firstname} ${this.Lastname} ${this.TahunMasuk}`)
  26.     }
  27.     setNamaKaryawan(setfirsname:string, setlastname:string):any {
  28.         this.Firstname = setfirsname
  29.         this.Lastname = setlastname
  30.         console.log(`${this.Firstname} ${this.Lastname}`)
  31.     }
  32.     getSisaMasaPensiun() {
  33.         let year = new Date().getFullYear()
  34.         let sisa_pensiun = 60 - (year - this.TahunLahir)
  35.         console.log(sisa_pensiun)
  36.     }
  37.  
  38.     //override
  39.     getStatusKaryawan():any {
  40.         let year = new Date().getFullYear()
  41.         let masakerja = year - this.TahunMasuk
  42.         if (masakerja < 1) {
  43.             return(`Masih dalam Masa Probation`)
  44.         } else {
  45.             return(`Adalah Karyawan Tetap`)
  46.         }
  47.     }
  48.  
  49.     //overload
  50.     getTunjanganLembur():any
  51.     getTunjanganLembur(hour:any):any
  52.     getTunjanganLembur(hour?:any):any {
  53.         if(hour>=1) {
  54.             let tambahan = new Intl.NumberFormat("id-ID", {
  55.                 style: "currency",
  56.                 currency: "IDR",
  57.               }).format(hour * 100_000);
  58.               console.log(`Lembur ${hour} jam mendapatkan tunjangan lembur : ${tambahan}`)
  59.         } else {
  60.             console.log(`Tidak mendapatkan tunjangan lembur`)
  61.         }
  62.     }
  63.  
  64. }
  65.  
  66. class inheritanceKaryawan extends Karyawan {
  67.     constructor(Firstname:string, Lastname:string, TahunMasuk:number, TahunLahir:number, public gaji:number, public posisi:string) {
  68.         super(Firstname, Lastname, TahunMasuk, TahunLahir)
  69.     }
  70.  
  71.     getDetailDataKaryawan() {
  72.         console.log(`${this.getNamaLengkap()} tahun masuk ${this.TahunMasuk} tahun lahir ${this.TahunLahir} gaji ${this.gaji} posisi ${this.posisi}`)
  73.     }
  74.  
  75.     getBonus(){
  76.         const tahun = new Date().getFullYear()
  77.         const bonus = tahun - this.TahunMasuk
  78.         if(bonus > 1) {
  79.             console.log("Mendapatkan bonus 1 bulan gaji")
  80.         } else {
  81.             console.log("Belum mendapatkan bonus gaji")
  82.         }
  83.     }
  84.  
  85.     getStatusKaryawan():any {
  86.         console.log(`${this.getNamaLengkap()} `+super.getStatusKaryawan())
  87.     }
  88. }
  89.  
  90. // const emp = new Karyawan("Dan", "Jon", 2016, 1999)
  91. // emp.getNamaLengkap()
  92. // emp.setNamaKaryawan("Alvin", "Faiz")
  93. // emp.getNamaLengkap()
  94.  
  95. // emp.getSisaMasaPensiun()
  96.  
  97. const emp2 = new inheritanceKaryawan("Alvin", "Faiz", 2021, 1999, 5_000_000, "Programmer")
  98. // emp2.getBonus()
  99. emp2.getStatusKaryawan()
  100. emp2.getTunjanganLembur(5)
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement