OOP-də Abstract Metodlar TypeScript-də

Elə hallar olur ki, törəmə siniflərin ümumi metodu olmalıdır, lakin bu metodun realizasiyası konkret törəmədən asılıdır. Bu halda bu metod, onun realizasiyasını yazmadan, ana abstrakt sinifdə elân edilə bilər. Və onda törəmələr bu metodları realizə etməyə məcbur olacaqlar. Belə metodlar abstrakt metodlar adlanır və abstract açar sözü ilə də elan olunur.

Nümunə üçün bizim abstrakt User sinfimizi götürək. Qoy bu sinfin varisləri mütləq obyektin məlumatlarını çıxaran show metoduna malik olsun.

Lakin bu metodun realizasiyası törəmədən asılı olacaq. Gəlin User sinfində bu metodu abstrakt kimi elan edək:

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

Gəlin bu metodu Student törəmə sinfində realizə edək:

typescriptclass Student extends User {
  public course: number;

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

Gəlin bu metodu Employee törəmə sinfində realizə edək:

typescriptclass Employee extends User {
  public salary: number;

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

Abstrakt Figure sinfində sahəni və perimetri almaq üçün abstrakt metodlar yaradın.

Задание 2

Square və Rectangle törəmə siniflərində bu metodların realizasiyasını yazın.