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!
Спасибо за чтение! Счастливого кодинга! 🚀🌟