Шаг 69.
Microsoft Visual C++ 2010. Язык С/С++.
Классы в C++. ООП (общие сведения)

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

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

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

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

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

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

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

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

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

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

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

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

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

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




Предыдущий шаг Содержание Следующий шаг