en.javascript.info/1-js/8-oop/1-about-oop/article.md
Ilya Kantor 87bf53d076 update
2014-11-16 01:40:20 +03:00

3.8 KiB
Raw Blame History

Введение

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

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

Например, "пользователь", "меню", "компонент интерфейса"...

Чтобы ООП-подход "работал", объект должен представлять собой законченную, интуитивно понятную сущность.

[warn header="ООП -- это не просто объекты"] В JavaScript объекты часто используются просто как коллекции.

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

При таком использовании объектов мы не можем сказать, что "применён объектно-ориентированный подход". В частности, никакую "единую сущность" Math из себя не представляет. [/warn]

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

//+ run
function User(name) {

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

}

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

Здесь мы видим ярко выраженную сущность -- User (посетитель).

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

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

Далее мы поговорим подробно как про ООП, так и об основных принципах, которых нужно придерживаться.