3 фундаментальных понятия в Javascript ООП

Привет, красавчики 👋 Вы когда-нибудь чувствовали, что ваши коды — это беспорядочная каша из функций-спагетти?

Да, мне тоже.

Вот тут-то и приходит на помощь объектно-ориентированное программирование (ООП) — один из самых мощных инструментов для создания организованного, многократно используемого кода в программировании.

Подумайте об этом, как о создании LEGO для ваших приложений. Каждый объект — это кирпичик, со своими данными и суперспособностями (методами). Скрепите их вместе, и у вас вдруг получится модульный шедевр, который легко поддерживать и настраивать ✨ ООП привносит такую же структуру в наш код, делая его более модульным, многоразовым и легким для понимания.

Концепции ООП в действии

Инкапсуляция
Это объединение данных (атрибутов) и методов (функций), которые работают с данными, в единое целое, известное как класс. Это помогает скрыть внутренние детали работы объекта.

class Dog {
  constructor(name) {
    this.name = name;
  }

  bark() {
    console.log(`${this.name} says Woof!`);
  }
}

const myDog = new Dog('Nicky');
myDog.bark(); // Nicky says Woof!

Наследство

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

class Animal {
  constructor(name) {
    this.name = name;
  }

  makeSound() {
    console.log("Generic animal sound");
  }
}

class Dog extends Animal {
  bark() {
    console.log(`${this.name} says Woof!`);
  }
}

class Cat extends Animal {
  meow() {
    console.log(`${this.name} says Meow!`);
  }
}

const myDog = new Dog("Nicky");
myDog.makeSound(); // Generic animal sound (inherited from Animal)
myDog.bark();      // Nicky says Woof!

const myCat = new Cat("Milo");
myCat.makeSound(); // Generic animal sound (inherited from Animal)
myCat.meow();      // Milo says Meow!

Полиморфизм

Это относится к способности объектов принимать различные формы. В JavaScript это часто связано с использованием интерфейсов или перегрузки методов для создания гибких и взаимозаменяемых компонентов.

interface AnimalSound {
  makeSound(): void;
}

class Dog implements AnimalSound {
  // ... (same as before)
}

class Cat implements AnimalSound {
  // ... (same as before)
}

function makeAnimalSound(animal: AnimalSound) {
  animal.makeSound();
}

const myDog = new Dog("Nicky");
const myCat = new Cat("Milo");

makeAnimalSound(myDog);  // Nicky says Woof!
makeAnimalSound(myCat);  // Milo says Meow!

Спасибо за чтение! Счастливого кодинга! 🚀🌟

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии