Классы в C++. ООП (общие сведения)

   
На этом шаге мы приведем общие сведения об объектно-ориентированном программировании.

   
Концепция объектно-ориентированного программирования (ООП) включает в себя понятия объектов, классов,
инкапсуляции и наследования.

   
Объект - это некая математически-программно описанная сущность, элемент окружающего нас мира,
с которым мы встречаемся в повседневной жизни. Например, ваша конкретная собака, ваш конкретный телевизор, ваш
конкретный автомобиль - это все объекты. Реальные объекты имеют две характеристики: состояние, которое определяется
набором свойств объекта, и поведение. Например, собака имеет состояние, определяемое следующим набором ее свойств:
имя, цвет шерсти, порода, характер и т. д. А ее поведение определяется тем, что она в данный момент может лаять,
вилять хвостом и т. д. Поведение объекта определяется набором функций, заданных в объекте, которые здесь называются методами.

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

   
Объектно-ориентированное программирование - это способ программирования с ориентацией на объекты.
При таком способе создаются крупные программные образования - классы, куда закладываются общие свойства будущих
объектов, которые станут получаться по определенным правилам из этих классов, куда закладываются варианты поведения
будущих объектов через создаваемые в классах параметрические подрограммы (методы классов). Такой способ значительно
ускоряет разработку программного обеспечения и облегчает труд программиста. Вспомним, что одним из первых средств
автоматизации труда программиста были так называемые стандартные программы, которые выполняли часто встречающиеся
действия (например, перевод десятичных чисел в двоичные, вычисление тригонометрических функций и т. п.). Такие программы
объединялись в библиотеки стандартных программ. Сегодня на более высоком уровне мы имеем библиотеки
классов, которые поставляют нашим программам необходимые им объекты (рисунки, фотографии, средства мультимедиа и т. п.),
тем самым повышая качество и эффективность современного программирования.

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

   
Методы обрабатывают внутренние состояния объекта и обеспечивают механизм взаимодействия между объектами. Например,
возьмем класс велосипедов. Свойствами, характеризующими состояния объектов этого класса, будут: текущая скорость,
текущее состояние переключателя педали (измененение скорости), количество шестеренок и текущая шестеренка, за счет которой
скорость изменяется. Методами, которые изменяют состояние велосипеда будут: смена шестеренки, переключение педали
и изменение скорости. Весь этот механизм изменения свойств методами класса спрятан внутри самого класса. Такой принцип
взаимодействия элементов класса носит название инкапсуляции данных. Это фундаментальный принцип
объектно-ориентированного программирования.

   
В чем же фактическая польза от механизма классов-объектов?

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

   
Вo-вторых, механизм работы такого модуля скрыт внутри самого модуля и не отвлекает программиста на выяснение различных мелких деталей алгоритма.

   
В-третьих, имеется возможность многократного использования элемента (как и когда-то многократное использование библиотеки стандартных программ).

   
В-четвертых, обеспечивается легкая сменяемость элементов в общей программе (в приложении): если такой элемент выходит
из строя, его можно легко заменить аналогичным элементом, не разрушая всю задачу.

   
Итак, ООП основано на использовании классов. Использование классов - это основное отличие языка C++ от языка С.

   
На следующем шаге мы рассмотрим классы.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий