Abstraktne metode v OOP v TypeScript

Zgodi se, da morajo imeti izpeljani razredi skupno metodo, vendar je izvedba te metode odvisna od posameznega potomca. V tem primeru lahko to metodo deklariramo v abstraktnem razredu starša, ne da bi napisali njeno implementacijo. In potem bodo potomci obvezni implementirati te metode. Takšne metode imenujemo abstraktne in so prav tako deklarirane s ključno besedo abstract.

Vzemimo za primer naš abstraktni razred User. Naj imajo potomci tega razreda obvezno metodo show, ki izpiše podatke objekta.

Izvedba te metode pa bo odvisna od potomca. V razredu User deklarirajmo to metodo kot abstraktno:

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

Implementirajmo to metodo v izpeljanem razredu Student:

typescriptclass Student extends User {
  public course: number;

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

Implementirajmo to metodo v izpeljanem razredu 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

V abstraktnem razredu Figure naredite abstraktni metodi za pridobitev površine in obsega.

Задание 2

V izpeljanih razredih Square in Rectangle napišite implementacijo teh metod.