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

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

При сравнении объектно-ориентированной SCADA с тег-ориентированной SCADA легко провести параллели между отличиями двух парадигм программирования: структурного программирования и объектно-ориентированного программирования (ООП).

Классы и объекты

Класс — это шаблон, по которому создаются объекты (экземпляры класса).

Аналогия

Класс — это чертёж детали, а объект — сама деталь, сделанная по этому чертежу.
Класс - это рецепт пирожка, а объект — сам пирожок, испечённый по этому рецепту.


Класс обладает свойствами (атрибутами) и методами (функциями) работы с этими свойствами.

Аналогия

Класс: ЗАДВИЖКА.
Свойства: ОТКРЫТЬ, ЗАКРЫТЬ, ОТКРЫТА, ЗАКРЫТА, ЦВЕТ, ЗВУК.
Метод:
Если ОТКРЫТЬ и через 10 секунд ОТКРЫТА, то ЦВЕТ зелёный, в противном случае включить ЗВУК и менять ЦВЕТ с красного на белый с частотой 1 секунда.
Если ЗАКРЫТЬ и через 10 секунд ЗАКРЫТА, то ЦВЕТ красный, в противном случае включить ЗВУК и менять ЦВЕТ с красного на белый с частотой 1 секунда.

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

Инкапсуляция — свойство ООП, которое позволяет скрыть от программиста код объекта. Программисту не обязательно знать, как реализованы методы объекта и какие данные хранятся в объекте. Ему достаточно знать интерфейс объекта.

Аналогия

Водителю не обязательно знать, как устроен автомобиль.

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

Объект наследует свойства и методы класса, из которого он создан.
Объект является потомком класса, а класс является родителем объекта.
Класс может быть потомком другого класса, при этом он может унаследовать от своего предка все его свойства и методы или только их часть.
Те свойства и методы, которые не наследуются потомком от своего предка, можно переопределить.

Аналогия

Семейка классов 1:
Животное → млекопитающее → хищник → кошачье → тигр → амурский → самец.
Семейка классов 2: Животное → млекопитающее → хищник → кошачье → кошка → сиамская→ самка.

Полиморфизм

Полиморфизм — это свойство ООП, которое позволяет пользователю одинаковым образом использовать классы с одинаковым интерфейсом, но с разной реализацией.

Аналогия

Родительский класс: вендинговый автомат.
Классы-потомки: кофейный автомат и автомат по продаже снеков.
Интерфейс одинаковый: кнопка выбора и купюроприёмник.

Контроль доступа

Три уровня доступа к свойствам и методам класса:

  • Публичный — отовсюду
  • Защищённый — доступ к свойствам и методам текущего класса и наследуемым свойствам и методам всех классов-потомков
  • Приватный — доступ к свойствам и методам только текущего класса.

Аналогия

Просмотр фильма:

  • С публикой в кинотеатре
  • Со своей семьёй по телевизору
  • В полном одиночестве на экране своего смартфона.

Конструкторы

Конструктор — это метод класса, который вызывается только при создании нового объекта и инициализирует его свойства начальными значениями.

Статические свойства и методы классов

Статические свойства и методы класса являются общими для всех экземпляров данного класса.

Абстрактные классы

Из абстрактного класса можно создать только другой класс и нельзя создать объект. Абстрактные классы не имеют собственной реализации, а служат лишь наследственным материалом для конструирования других классов.