ООП в JavaScript: ключевые моменты для начинающих
ООП (Object-Oriented Programming) – это программная парадигма, в которой основной упор делается на объекты, взаимодействующие между собой и имеющие свойства и методы. ООП используется во многих языках программирования, включая JavaScript.
JavaScript – это мультипарадигмальный язык программирования, который поддерживает ООП и использует термины, понятия и инструменты ООП для работы с объектами.
Основными принципами ООП являются инкапсуляция, наследование и полиморфизм.
Инкапсуляция означает, что данные и методы объекта могут быть скрыты от других объектов и могут быть доступны только через публичные методы.
Пример кода:
class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
getFullName() {
return `${this.firstName} ${this.lastName}`;
}
}
const person = new Person('John', 'Doe');
console.log(person.getFullName()); // Output: John Doe
В примере кода мы создаем класс Person и определяем его свойства (firstName и lastName) и метод getFullName(), который возвращает полное имя объекта.
Наследование позволяет создавать новые классы, которые наследуют свойства и методы из существующих классов.
Пример кода:
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a noise.`);
}
}
class Dog extends Animal {
speak() {
console.log(`${this.name} barks.`);
}
}
const dog = new Dog('Rufus');
dog.speak(); // Output: Rufus barks.
В примере кода мы создаем класс Animal с методом speak() и класс Dog, который наследует свойства и методы от класса Animal. Мы переопределяем метод speak() в классе Dog, чтобы он выводил другую строку, и создаем объект dog с помощью класса Dog, который вызывает переопределенный метод speak().
Полиморфизм позволяет использовать один и тот же метод для разных объектов.
Пример кода:
class Shape {
getArea() {
return 0;
}
}
class Circle extends Shape {
constructor(radius) {
super();
this.radius = radius;
}
getArea() {
return Math.PI * this.radius ** 2;
}
}
class Square extends Shape {
constructor(width) {
super();
this.width = width;
}
getArea() {
return this.width ** 2;
}
}
const circle = new Circle(5);
console.log(circle.getArea()); // Output: 78.53981633974483
const square = new Square(5);
console.log(square.getArea()); // Output: 25
В примере кода мы создаем класс Shape с методом getArea() и создаем классы Circle и Square, которые наследуют свойства и методы от класса Shape. Мы переопределяем метод getArea() в классах Circle и Square, чтобы он возвращал площадь окружности и площадь квадрата соответственно. Создаем объекты circle и square с помощью классов Circle и Square, которые вызывают переопределенный метод getArea().
В заключение, ООП является основным подходом для разработки программного обеспечения в настоящее время, и его принципы широко используются в JavaScript. Это позволяет создавать более структурированный, читаемый и масштабируемый код, который легче поддерживать в долгосрочной перспективе.