Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
235
Добавлен:
20.03.2016
Размер:
17.83 Mб
Скачать

Глава 8. Классы в С++. Объектно-ориентированное программирование

143

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

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

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

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

Классы

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

Класс — это обыкновенный тип. Если вы программист, то всегда имеете дело с типами и экземплярами, даже если и не используете эту терминологию. Например, вы создаете различные переменные типа int. Можно сказать, что вы фактически создаете различные экземпляры переменных этого типа. Классы обычно более сложны, чем простые типы данных, но они работают тем же способом. Создавая переменные типа заданного класса, вы создаете экземпляры этого класса, а назначая различные значения экземплярам того же типа (как и переменным типа int), вы можете выполнять разные задачи. Поэтому наша цель — научиться пользоваться классами для написания приложений, а создание самих классов оставить их разработчикам.

Класс — это собрание связанной информации, которая включает в себя и данные, и функции (программы для работы с данными). Эти функции в классах называются методами. Класс — это дальнейшее развитие структур: в них тоже объединяются данные разных типов. Это такой же шаблон, под который (как и под структуру) память выделяется только тогда, когда мы создаем "переменную типа этого шаблона". Вспомним, что если у нас была некая структура А, то чтобы работать с ней, мы создавали экземпляр этой структуры а путем объявления А а;, а затем уже работали с экземпляром а. Можно сказать, что мы объявляли переменную а типа А.

Точно так же поступают и для класса: если есть класс А (шаблон, под него память не выделяется), то объявляют переменную а типа А путем объявления А а;, после чего можно работать уже как бы с самим классом, а на самом деле — с его экземпляром а. Как и при использовании структур, к членам класса (данным и методам) можно обращаться по тем же правилам: если объявлено А а;, то обращение к члену класса с именем аа будет записываться как а.аа, а если был объявлен указатель на класс (например, как А *а;), то обращение к члену класса с именем аа будет записываться как а->аа.

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