Metode Abstrak dalam OOP di TypeScript

Terkadang terjadi bahwa kelas-kelas turunan harus memiliki metode yang sama, namun, implementasi dari metode ini tergantung pada turunan spesifiknya. Dalam kasus ini, metode dapat dideklarasikan di kelas induk abstrak, tanpa menulis implementasinya. Dan kemudian para turunan akan diwajibkan untuk mengimplementasikan metode-metode ini. Metode seperti ini disebut metode abstrak dan juga dideklarasikan menggunakan kata kunci abstract.

Mari kita ambil kelas abstrak kita User sebagai contoh. Biarkan para pewaris dari kelas ini harus memiliki metode show, yang menampilkan data objek.

Implementasi dari metode ini, bagaimanapun, akan tergantung pada turunannya. Mari kita deklarasikan metode ini sebagai abstrak dalam kelas User:

typescriptabstract class User {
  public name: string;
  
  constructor(name: string) {
    this.name = name;
  }
  
  public abstract show(): string;
}

Mari kita implementasikan metode ini di kelas turunan Student:

typescriptclass Student extends User {
  public course: number;

  constructor(name: string, course: number) {
    super(name);
    this.course = course;
  }
  
  show() {
    return this.name + ' ' + this.course;
  }
}

Mari kita implementasikan metode ini di kelas turunan Employee:

typescriptclass Employee extends User {
  public salary: number;

  constructor(name: string, salary: number) {
    super(name);
    this.salary = salary;
  }
  
  show() {
    return this.name + ' ' + this.salary;
  }
}
Задание 1

Dalam kelas abstrak Figure buatlah metode abstrak untuk mendapatkan luas dan keliling.

Задание 2

Dalam kelas-kelas turunan Square dan Rectangle tuliskan implementasi dari metode-metode ini.