Абстрактныя метады в ААП у TypeScript

Бывае так, што ў класаў-нашчадкаў павінен быць агульны метад, аднак, рэалізацыя гэтага метаду залежыць ад канкрэтнага нашчадка. У гэтым выпадку гэты метад можна аб'явіць у абстрактным класе бацькі, не напісаўшы яго рэалізацыю. І тады нашчадкі будуць абавязаны рэалізаваць гэтыя метады. Такія метады называюцца абстрактнымі і таксама аб'яўляюцца з дапамогай ключавога слова abstract.

Давайце для прыкладу возьмем наш абстрактны клас User. Хай нашчадкі гэтага класа абавязкова павінны мець метад show, які выводзіць дадзеныя аб'екта.

Рэалізацыя гэтага метаду, аднак, будзе залежаць ад нашчадка. Давайце ў класе User аб'явім гэты метад абстрактным:

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

Рэалізуем гэты метад у класе-нашчадку Student:

typescriptclass Student extends User {
  public course: number;

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

Рэалізуем гэты метад у класе-нашчадку 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

У абстрактным класе Figure зрабіце абстрактныя метады для атрымання плошчы і перыметра.

Задание 2

У класах-нашчадках Square і Rectangle напішыце рэалізацыю гэтых метадаў.