Méthodes abstraites en POO dans TypeScript

Il arrive que les classes descendantes doivent avoir une méthode commune, cependant, l'implémentation de cette méthode dépend de la descendante spécifique. Dans ce cas, cette méthode peut être déclarée dans la classe parente abstraite, sans écrire son implémentation. Et alors les descendantes seront obligées d'implémenter ces méthodes. De telles méthodes sont appelées abstraites et sont également déclarées à l'aide du mot-clé abstract.

Prenons pour exemple notre classe abstraite User. Supposons que les héritiers de cette classe doivent obligatoirement avoir une méthode show, affichant les données de l'objet.

L'implémentation de cette méthode, cependant, dépendra de la descendante. Déclarons cette méthode comme abstraite dans la classe User :

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

Implémentons cette méthode dans la classe descendante Student :

typescriptclass Student extends User {
  public course: number;

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

Implémentons cette méthode dans la classe descendante 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

Dans la classe abstraite Figure, créez des méthodes abstraites pour obtenir l'aire et le périmètre.

Задание 2

Dans les classes descendantes Square et Rectangle, écrivez l'implémentation de ces méthodes.