5.3 KiB
Введение
На протяжении долгого времени в программировании применялся процедурный подход. При этом программа состоит из функций, вызывающих друг друга.
Гораздо позже появилось объектно-ориентированное программирование (ООП), которое позволяет группировать функции и данные в единой сущности -- "объекте".
При объектно-ориентированной разработке мы описываем происходящее на уровне объектов, которые создаются, меняют свои свойства, взаимодействуют друг с другом и (в случае браузера) со страницей, в общем, живут.
Например, "пользователь", "меню", "компонент интерфейса"... При объектно-ориентированном подходе каждый объект должен представлять собой интуитивно понятную сущность, у которой есть методы и данные.
[warn header="ООП -- это не просто объекты"] В JavaScript объекты часто используются просто как коллекции.
Например, встроенный объект Math содержит функции (Math.sin
, Math.pow
, ...) и данные (константа Math.PI
).
При таком использовании объектов мы не можем сказать, что "применён объектно-ориентированный подход". В частности, никакую "единую сущность" Math
из себя не представляет, это просто коллекция независимых функций с общим префиксом Math
.
[/warn]
Мы уже работали в ООП-стиле, создавая объекты такого вида:
//+ run
function User(name) {
this.sayHi = function() {
alert("Привет, я " + name);
};
}
var vasya = new User("Вася"); // создали пользователя
vasya.sayHi(); // пользователь умеет говорить "Привет"
Здесь мы видим ярко выраженную сущность -- User
(посетитель). Используя терминологию ООП, такие конструкторы часто называют классами, то есть можно сказать "класс User
".
[smart header="Класс в ООП"] Классом в объектно-ориентированной разработке называют шаблон/программный код, предназначенный для создания объектов и методов.
В JavaScript классы можно организовать по-разному. Говорят, что класс User
написан в "функциональном" стиле. Далее мы также увидим "прототипный" стиль.
[/smart]
ООП -- это наука о том, как делать правильную архитектуру. У неё есть свои принципы, например SOLID.
По приёмам объектно-ориентированной разработки пишут книги, к примеру:
- Объектно-ориентированный анализ и проектирование с примерами приложений. Гради Буч и др..
- Приемы объектно-ориентированного проектирования. Паттерны проектирования. Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес.
Здесь мы не имеем возможности углубиться в теорию ООП, поэтому чтение таких книг рекомендуется. Хотя основные принципы, как использовать ООП правильно, мы, всё же, затронем.