Что такое ООП?
Объектно-ориентированное программирование (ООП) — это парадигма программирования, основанная на классах и объектах. Классы подобны чертежам, а объекты подобны экземплярам класса.
Некоторые темы, которые мы должны знать, прежде чем переходить к деталям.
Класс: Классы — это чертежи, из которых мы можем создавать/ создавать экземпляры объектов. Классы могут иметь атрибуты и методы.
Объект:Объекты — это экземпляры класса, которые ведут себя как переменные.
Конструктор:Конструктор — это метод класс, который вызывается во время создания объекта. Он инициализирует состояние объектов.
Деструктор. Деструкторы автоматически вызываются в конце жизненного цикла объекта. Деструкторы обычно используются для освобождения памяти и очистки объекта при его уничтожении. Деструктор вызывается для объекта класса, когда этот объект выходит за пределы области видимости или явно удаляется.

Основные принципы ООП?
В принципе, есть 4 основных принципа ООП. Абстракция, наследование, инкапсуляция, полиморфизм. Здесь мы кратко обсудим эти темы с примерами на TypeScript.
Инкапсуляция.Инкапсуляция — это объединение данных в единый блок. Это снижает сложность и увеличивает возможность повторного использования.

class Pen {
constructor(name, color, price) {
this.name = name;
this.color = color;
this.price = price;
}
showPrice() {
console.log(`Price of ${this.name} is ${this.price}`);
}
}
const pen1 = new Pen('Marker', 'Blue', '$3');
pen1.showPrice(); // Price of Marker is $3

Абстракция. Абстракция — это способ скрыть детали реализации и показать пользователям только функциональные возможности. Уменьшите сложность от пользователей.

class Vehicle {
constructor(name) {
this.name = name;
}
createVehicle() {
console.log(`${this.name} vehicle creation done.`);
}
}
const tata = new Vehicle('Tata');
tata.createVehicle();
view raw abstraction.js hosted with ❤ by GitHub

Здесь мы создаем метод с именем createVehicle, которыйсодержит все функции создания транспортного средства. После создания объекта с помощью этого класса мы можем просто создать транспортное средство с помощью метода createVehicle, нам не нужно знать функциональность этого метода. Это абстракция на самом деле.

Наследование. Наследование — это процедура, при которой один класс может наследовать атрибуты и методы другого класса. Это помогает устранить избыточный код.

В этом примере Person является нашим родительским классом. Другой класс Student наследуется от Person, что означает, что класс Student может получать доступ к атрибутам и методам класса Person. Вот почему мы можем получить доступ к методу great в объекте student1, экземпляр которого создается из Student.

Полиморфизм. Слово полиморфизм означает наличие множества форм. Проще говоря, мы можем определить полиморфизм как способность сообщения отображаться более чем в одной форме.
Реальный пример полиморфизма: Человек одновременно может иметь разные характеристики. Как мужчина одновременно и отец, и муж, и работник. Так что один и тот же человек в разных ситуациях ведет себя по-разному. Это называется полиморфизмом. Это помогает реорганизовать уродливые операторы switch/case.

Существует два типа полиморфизма.
1. Переопределение метода (полиморфизм времени выполнения)
2. Перегрузка метода (полиморфизм времени компиляции)
Переопределение метода: объявление метода в подклассе, который уже присутствует в родительском классе, называется переопределением метода. В методе, переопределяющем типы данных аргументов, количество аргументов и последовательность должны быть точно такими же, как в родительском методе. Он также известен как полиморфизм времени выполнения. (Позднее связывание)
Перегрузка метода. Перегрузка метода — это функция, которая позволяет классу иметь несколько методов с одинаковыми именами, но их список аргументов должен отличаться. Он также известен как полиморфизм времени компиляции. (Раннее связывание)

Что такое статический метод?
Статический метод класса привязан только к классу, поэтому мы не можем использовать его с экземпляром класса, но можем использовать его непосредственно с классом.

Модификатор доступа. Модификаторы доступа в классе используются для настройки специальных возможностей (видимости) для членов класса.

Существует три типа модификаторов доступа:
Public: все члены класса, объявленные с помощью модификатора public, будут доступны всем.

Private: к членам класса, объявленным как private, могут получить доступ только функции-члены внутри класса.

Защищено:модификаторы protected также похожи на private, но к ним также можно получить доступ из их собственного класса и любого подкласса этого класса.

Реализация шаблона проектирования Singleton с использованием TypeScript
Шаблон Singleton
— это шаблон проектирования программного обеспечения, который ограничивает создание экземпляра класса единственным экземпляром.

Добро пожаловать в эту статью, и любые комментарии и предложения приветствуются.
Кстати, это моя первая статья на Medium.