Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 400107.doc
Скачиваний:
5
Добавлен:
30.04.2022
Размер:
568.32 Кб
Скачать

3.2. Средства объектно-ориентированного

программирования С++

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

На сегодняшний день С++ - самый распространенный язык для ООП среди универсальных языков програмирования.

      1. Понятие “класс”

Классом в С++ называется именованный набор компонентов, включающий структуры данных и связанные с ними функции их обработки. Классы бывают трёх видов:

структуры;

объединения;

классы (в узком смысле)

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

Struct

Mystr

{ int i;

char str [21];

double d;};

mystr s, *ps=&s, arr[10];

/* s имеет тип структуры mystr, ps указатель на тип структуры mystr с начальным значением адрес s, arr массив структур */

s.i=3; // присвоение

ps->d=1.23; // компонентам mystr

Объединеие является производным типом, разделяющим многие синтаксические и функциональные свойства типов структур. Главное отличае между ними состоит в том, что объединение позволяет быть “активным” только одному компоненту. Размер объединения равен размеру своего максимального по размеру компонента. Одновременно в памяти может находиться только один компонент объединения. Пример. Union

Myun

{int i; // 2 байта

double d; // 8 байтов

char ch; // 1 байт

} mu, *myptr=μ

sizeof(mu) возвращает значение 8, все 8 байтов используются только тогда, когда хранится значение d. Доступ к компонентам объединения выполняется при помощи операций выбора компоненты структуры (.и->), но требуется соблюдать осторожность (какому именно компоненту было присвоено значение).

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

<ключ-класса> <имя-класса> [:базовый список]

{[список компонентов]};

<ключ-класса> это class, struct, union.

Имя-класса это любой идентификатор, уникальный в пределах своей сферы действия.

Базовый список (необязательный) перечисляет базовый класс или классы, из которого данный класс наследует данные и правила. Если объявлены базовые классы, то класс имя-класса называется производным классом.

Примечание. Объединение (union) не могут быть производными от класса или быть базовым классом.

<Список-компонентов> - это последовательность объявлений данных и функций.

Объявление класса создаёт уникальный тип, тип класса имя-класса. Это позволяет объявлять следующие объекты-класса (или экземпляры класса) данного типа. Пример:

class X{…};

X x, *xptr, xarr[10], &xr; // объявлены объекты х типа Х,

// указатель на Х (без начального значения)

// массив объектов класса Х

// ссылка на Х

С++ допускает неполное объявление класса

class X; // еще нет

struct Y; // компонентов

union Z;

Неполные объявления допускают некоторые ссылки к именам X, Y, Z до того как классы будут полностью определены. Разумеется, прежде объявить и использовать объекты классов, необходимо выполнить полное объявление классов со всеми их компонентами.