TypeScript'теги ООП абстракттык класстар

Бизде ата-класстар болгон учурлар болот, алар жалпы касиеттерди жана методдорду камтыйт, жана андан класстар-уулдары мурастайт.

Ошол эле учурда, биз класстар-уулдарынын объекттерин түзө алабыз, бирок ата-класстын объектин түзө албайбыз. Ал бизге жалпы касиеттер жана методдорду топтоо үчүн гана керек.

Бул учурда, ата-класстын объекттерин түзүүнү ачык түрдө тыюу салуу үчүн, аны абстракттык деп жарыялоого болот. Бул abstract ачкыч сөзү менен жасалат.

Келгиле, мисалды карайлы. Биздин User классыбызды алып, аны абстракттык деп жарыялайлы:

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

Келгиле, User дан мурастаган Student класын түзөлү:

typescriptclass Student extends User {
  public course: number;

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

Келгиле, User дан мурастаган Employee класын түзөлү:

typescriptclass Employee extends User {
  public salary: number;

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

Геометриялык фигураны билдирген абстракттык Figure класын түзүңүз. Анда периметр жана аянт үчүн касиеттер болсун.

Задание 2

Figure класынан мурастаган Square класын түзүңүз.

Задание 3

Figure класынан мурастаган Rectangle класын түзүңүз.