Введение

На протяжении долгого времени в программировании применялся процедурный подход. При этом программа состоит из функций, вызывающих друг друга.

Гораздо позже появилось объектно-ориентированное программирование (ООП), которое позволяет группировать функции и данные в единой сущности – «объекте».

При объектно-ориентированной разработке мы описываем происходящее на уровне объектов, которые создаются, меняют свои свойства, взаимодействуют друг с другом и (в случае браузера) со страницей, в общем, живут.

Например, «пользователь», «меню», «компонент интерфейса»… При объектно-ориентированном подходе каждый объект должен представлять собой интуитивно понятную сущность, у которой есть методы и данные.

ООП – это не просто объекты

В JavaScript объекты часто используются просто как коллекции.

Например, встроенный объект Math содержит функции (Math.sin, Math.pow, …) и данные (константа Math.PI).

При таком использовании объектов мы не можем сказать, что «применён объектно-ориентированный подход». В частности, никакую «единую сущность» Math из себя не представляет, это просто коллекция независимых функций с общим префиксом Math.

Мы уже работали в ООП-стиле, создавая объекты такого вида:

function User(name) {

  this.sayHi = function() {
    alert( "Привет, я " + name );
  };

}

var vasya = new User("Вася"); // создали пользователя
vasya.sayHi(); // пользователь умеет говорить "Привет"

Здесь мы видим ярко выраженную сущность – User (посетитель). Используя терминологию ООП, такие конструкторы часто называют классами, то есть можно сказать "класс User".

Класс в ООП

Классом в объектно-ориентированной разработке называют шаблон/программный код, предназначенный для создания объектов и методов.

В JavaScript классы можно организовать по-разному. Говорят, что класс User написан в «функциональном» стиле. Далее мы также увидим «прототипный» стиль.

ООП – это наука о том, как делать правильную архитектуру. У неё есть свои принципы, например SOLID.

По приёмам объектно-ориентированной разработки пишут книги, к примеру:

Здесь мы не имеем возможности углубиться в теорию ООП, поэтому чтение таких книг рекомендуется. Хотя основные принципы, как использовать ООП правильно, мы, всё же, затронем.

Карта учебника

Комментарии

перед тем как писать…
  • Приветствуются комментарии, содержащие дополнения и вопросы по статье, и ответы на них.
  • Для одной строки кода используйте тег <code>, для нескольких строк кода — тег <pre>, если больше 10 строк — ссылку на песочницу (plnkr, JSBin, codepen…)
  • Если что-то непонятно в статье — пишите, что именно и с какого места.