Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
0495976_C19D7_shpory_s.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.82 Mб
Скачать
  1. Классы и объекты. Класс как структура.

Класс - это пользовательский тип. Этот раздел знакомит с основными средствами определения класса,

создания его объектов, работы с такими объектами и, наконец, удаления этих объектов после

использования.

Посмотрим, как можно представить в языке понятие даты, используя для этого тип структуры и набор

функций, работающих с переменными этого типа:

struct date { int month, day, year; };

date today;

void set_date(date*, int, int, int);

void next_date(date*);

void print_date(const date*);

// ...

Никакой явной связи между функциями и структурой date нет. Ее можно установить, если описать

функции как члены структуры:

struct date {

int month, day, year;

void set(int, int, int);

void get(int*, int* int*);

void next();

void print();};

Описанные таким образом функции называются функциями-членами.

Класс – это сложная структура данных, определяемая пользователем. В языке С++ под классом понимают производный тип данных, объединенный с множеством функций и операций, работающих с объектами этого типа, и сформированный при помощи описателей class, struct или union. Синтаксис определения класса представляется так:

<описатель> имя_класса [: базовый список] {<список элементов>}

В этом определении <описатель> - это один из описателей class, struct или union Имя_класса – идентификатор из латинских букв и цифр, начинающихся с буквы. В базовом списке перечисляются базовый класс или классы, свойства которых исследуются, а <список элементов> объявляет элементы класса – элементы данных и функции (методы класса). Самым простейшим примером описания класса может служить объявление класса с описателем struct, например:

struct SLine //Класс прямая

{

int XFirst, YFirst; //Начальные и конечные

int XLast, YLast; //Координаты отрезка прямой

COLORREF LineColor; //Цвет прямой

//Инкапсуляция функции в класс

DrawLine(CDC *pDC, int X, int Y); // Отрисовка отрезка начиная

// с координат X,Y.

}

В примере объявлен класс отрезка прямой SLine. Класс содержит основные элементы данных для отрезка прямой и функцию отображения этой прямой на экране.

Для определения объектов класса SLine можно воспользоваться идентификатором SLine как описателем типа:

SLine Line1, Line2,Line3;

В результате такого описания программа отведет три области памяти по структуре и размеру соответствующие элементам класса SLine.

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

  1. Классы. Спецификаторы доступа public, protected, private.

Класс - это пользоваельский тип. Этот раздел знакомит с основными средствами определения класса,

создания его объектов, работы с такими объектами и, наконец, удаления этих объектов после

использования

Каждое объявление внутри класса определяет привилегию доступа к именам класса в зависимости от того, в какой секции имя появляется. Каждая секция начинается с одного из ключевых слов: private, protected и public

class className

private:

<приватные члены данных> <приватные конструкторы> <приватные методы>

protected:

<защищенные члены данных> <защищенные конструкторы> <защищенные методы>

public:

<общедоступные свойства> <общедоступные члены данных> “збщедоступные конструкторы> <общедоступный деструктор> общедоступные методы>

Таким образом, объявление базового класса на C++ предоставляет следующие права доступа и соответствующие области видимости:

• Приватные private имена имеют наиболее ограниченный доступ, разрешенный только методам данного класса. Доступ производных классов к приватным методам базовых классов запрещен.

• Защищенные protected имена имеют доступ, разрешенный методам данного и производных от него классов.

• Общедоступные public имена имеют неограниченный доступ, разрешенный методам всех классов и их объектов.

Следующие правила применяются при образовании различных секций объявления класса:

1. Секции могут появляться в любом порядке, а их названия могут встречаться повторно.

2. Если секция не названа, компилятор считает последующие объявления имен класса приватными. Здесь проявляется отличие объявлений класса и структуры - последняя рассматривается по умолчанию как общедоступная.

3. По мере возможности не помещайте члены данных в общедоступную секцию, если только вы действительно не хотите разрешить доступ к ним отовсюду. Обычно их объявляют защищенными, чтобы разрешить доступ только методам производных классов.

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

5. Конструкторы и деструкторы являются специальными функциями, которые не возвращают значения и имеют имя своего класса. Конструктор строит объект данного класса, а деструктор его удаляет.

6. Методы (так же как конструкторы и деструкторы), которые содержат более одной инструкции C++, рекомендуется объявлять вне класса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]