ООП

Объектно-ориентированное программирование

Объе́ктно-ориенти́рованное программи́рование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса, а классы образуют иерархию наследования[1].

OOП (Объектно-Ориентированное Программирование) это подход в программировании, согласно которому, данные инкапсулированы внутри objects, а сам объект существует как составная часть целого.

JavaScript сильно объекто-ориентирован. Он следует модели, базирующейся на прототипах (в отличии от модели, базирующейся на классах).

Языки программирования которые относятся к объектно ориентированным языкам (ООП)[mdn]:

 

Инкапсуляция

Инкапсуляция (англ. encapsulation, от лат. in capsula) — в информатике размещение в одном компоненте данных и методов, которые с ними работают. Также может означать скрытие внутренней реализации от других компонентов. Например, доступ к скрытой переменной может предоставляться не напрямую, а с помощью методов для чтения (геттер) и изменения (сеттер) её значения.

Инкапсуляция

Абстракция

Абстра́кция в объектно-ориентированном программировании — это использование только тех характеристик объекта, которые с достаточной точностью представляют его в данной системе. Основная идея состоит в том, чтобы представить объект минимальным набором полей и методов и при этом с достаточной точностью для решаемой задачи.

Абстракция

Наследование

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

Наследование

Полиморфизм

Полиморфизм в языках программирования и теории типов — способность функции обрабатывать данные разных типов[1][2][3].

Полиморфизм

А где здесь JavaScript?

JavaScript — это объектно-ориентированный язык, основанный на прототипировании, а не на классах.

Сравнение языков на основе классов (Java) и на базе прототипов (JavaScript)

Основанные на классах (Java) Основанные на базе прототипов (JavaScript)
Класс и экземпляр являются разными сущностями. Все объекты могут наследовать свойства другого объекта.
Определяем класс с помощью определения класса; создаем экземпляр класса с помощью метода-конструктора. Определение и создание объекта происходит с помощью функций-конcтрукторов.
Создание отдельного объекта с помощью оператора new. Так же.
Иерархия объектов строится с помощью определения классов и их подклассов.
Построение иерархии объектов происходит путем присвоения объекта в качестве прототипа функции-конструктора.
Наследование свойств в цепочке классов. Наследование свойств в цепочке прототипов.
Определение класса определяет все свойства всех экземпляров класса. Нельзя динамически добавлять свойства во время выполнения. Функция-конструктор или прототип задает начальный набор свойств. Можно добавить или удалить свойства динамически к отдельным объектам или всей совокупности объектов.

Что дальше?

Driven Development

TDDx2, BDD, DDD, FDD, MDD, PDD

Ссылки

oop

By Andrew Bogomolov