Объектно-ориентированное программирование для чайников
Концепции основные программирования объектно-ориентированного вам излагать пытаться я буду. Основная ошибка как учащихся, так и обучающих, состоит в том, что пробежав по основным
понятиям ООП «галопом по европам» и те, и другие бросаются в пропасть
практики на конкретном языке программирования, так толком и не осознав,
зачем это надо, куда это применять и каким образом.
Если случится невероятное, и мои тексты окажутся слегка более понятными,
чем первое предложение в верхнем абзаце, быстрая писанина
«блоговода-зарабатывателя» и занудная лекция по бумажке того несчастного
преподавателя математики, которым заткнули дыру в расписании
по IT-дисциплине — я буду рад и счастлив.
А вы, в свою очередь, попытайтесь «запрограммировать» в голове
(желательно — в своей) окружающий вас мир (мебель дома, девчонок
на улице, транспорт и т.п.) в соответствии с объектно-ориентированным
подходом.
До появления объектно-ориентированного подхода, когда программисты работали на каменных клавиатурах, во многих языках программирования давно уже возникла потребность в несколько более расширенных типах данных, чем простые целые и вещественные числа, логические «истина-ложь» и текстовые строки. Попросту говоря, при большом количестве атрибутов какой-либо сущности работать с несколькими массивами весьма затруднительно.
Наследование — важный механизм объектно-ориентированного подхода, позволяющий расширить и/или изменить структуру уже существующего (родительского) класса, путём написания нового класса (потомка), который полностью наследует все свойства и методы и, плюс, добавляет что-то своё. Далее можно начинать создавать и использовать в программе новые объекты с расширенными возможностями.
Инкапсуляция (по-русски: «сокрытие») — это свойство объектов скрывать некоторые свои данные и способы их обработки (методы) от окружающей его цифровой среды и, в частности, от кривых ручонок малоопытных программистов, оставляя «снаружи» только необходимые и/или требуемые свойства и функциональные возможности.