Краткое введение в объектно-ориентированное программирование
При сравнении объектно-ориентированной SCADA с тег-ориентированной SCADA легко провести параллели между отличиями двух парадигм программирования: структурного программирования и объектно-ориентированного программирования (ООП).
Классы и объекты
Класс — это шаблон, по которому создаются объекты (экземпляры класса).
Аналогия
Класс — это чертёж детали, а объект — сама деталь, сделанная по этому чертежу.
Класс - это рецепт пирожка, а объект — сам пирожок, испечённый по этому рецепту.
Класс обладает свойствами (атрибутами) и методами (функциями) работы с этими свойствами.
Аналогия
Класс: ЗАДВИЖКА.
Свойства: ОТКРЫТЬ, ЗАКРЫТЬ, ОТКРЫТА, ЗАКРЫТА, ЦВЕТ, ЗВУК.
Метод:
Если ОТКРЫТЬ и через 10 секунд ОТКРЫТА, то ЦВЕТ зелёный, в противном случае включить ЗВУК и менять ЦВЕТ с красного на белый с частотой 1 секунда.
Если ЗАКРЫТЬ и через 10 секунд ЗАКРЫТА, то ЦВЕТ красный, в противном случае включить ЗВУК и менять ЦВЕТ с красного на белый с частотой 1 секунда.
Инкапсуляция
Инкапсуляция — свойство ООП, которое позволяет скрыть от программиста код объекта. Программисту не обязательно знать, как реализованы методы объекта и какие данные хранятся в объекте. Ему достаточно знать интерфейс объекта.
Аналогия
Водителю не обязательно знать, как устроен автомобиль.
Наследование
Объект наследует свойства и методы класса, из которого он создан.
Объект является потомком класса, а класс является родителем объекта.
Класс может быть потомком другого класса, при этом он может унаследовать от своего предка все его свойства и методы или только их часть.
Те свойства и методы, которые не наследуются потомком от своего предка, можно переопределить.
Аналогия
Семейка классов 1:
Животное → млекопитающее → хищник → кошачье → тигр → амурский → самец.
Семейка классов 2:
Животное → млекопитающее → хищник → кошачье → кошка → сиамская→ самка.
Полиморфизм
Полиморфизм — это свойство ООП, которое позволяет пользователю одинаковым образом использовать классы с одинаковым интерфейсом, но с разной реализацией.
Аналогия
Родительский класс: вендинговый автомат.
Классы-потомки: кофейный автомат и автомат по продаже снеков.
Интерфейс одинаковый: кнопка выбора и купюроприёмник.
Контроль доступа
Три уровня доступа к свойствам и методам класса:
- Публичный — отовсюду
- Защищённый — доступ к свойствам и методам текущего класса и наследуемым свойствам и методам всех классов-потомков
- Приватный — доступ к свойствам и методам только текущего класса.
Аналогия
Просмотр фильма:
- С публикой в кинотеатре
- Со своей семьёй по телевизору
- В полном одиночестве на экране своего смартфона.
Конструкторы
Конструктор — это метод класса, который вызывается только при создании нового объекта и инициализирует его свойства начальными значениями.
Статические свойства и методы классов
Статические свойства и методы класса являются общими для всех экземпляров данного класса.
Абстрактные классы
Из абстрактного класса можно создать только другой класс и нельзя создать объект. Абстрактные классы не имеют собственной реализации, а служат лишь наследственным материалом для конструирования других классов.
Шаблон проектирования Model-View-Controller
Сравнение объектно-ориентированной SCADA с тег-ориентированной SCADA