Metodi astratti in OOP in TypeScript

Succede che le classi figlie devono avere un metodo comune, tuttavia, l'implementazione di questo metodo dipende dal figlio specifico. In questo caso, questo metodo può essere dichiarato nella classe astratta genitore, senza scriverne l'implementazione. E poi i figli saranno obbligati a implementare questi metodi. Tali metodi sono chiamati metodi astratti e sono anche dichiarati utilizzando la parola chiave abstract.

Prendiamo come esempio la nostra classe astratta User. Supponiamo che le classi che ereditano da questa classe debbano obbligatoriamente avere un metodo show, che visualizza i dati dell'oggetto.

L'implementazione di questo metodo, tuttavia, dipenderà dalla classe figlia. Dichiriamo questo metodo come astratto nella classe User:

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

Implementiamo questo metodo nella classe figlia Student:

typescriptclass Student extends User {
  public course: number;

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

Implementiamo questo metodo nella classe figlia 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

Nella classe astratta Figure create metodi astratti per ottenere l'area e il perimetro.

Задание 2

Nelle classi figlie Square e Rectangle scrivete l'implementazione di questi metodi.