Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Абстрактные классы.rtf
Скачиваний:
6
Добавлен:
10.07.2019
Размер:
2.25 Mб
Скачать

2.1. Пользовательский тип — класс

К

private:

данные

операторы

ласс — это определяемый пользователем тип с данными и функциями (методами), называемыми членами (members) класса. Переменная типа класс называется объект (object). Класс создает различные уровни доступа к его членам, разделяя объявление на части: private, protected и public. Часть private (закрытая) объекта может быть доступна только для функций-членов в этом классе. Часть public (открытая) объекта может быть доступна для внешних элементов программы, в области действия которых находится этот объект (рис. 3.1). Protected (защищенные) члены используются с производными классами и описываются в главе, посвященной наследованию.

Члены класса

public:

Данные

операторы

Внешние программные единицы

Рис. 2.1. Доступ к методам класса

2.1.1. Объявление класса

Объявление класса начинается с заголовка класса (class head), состоящего из зарезервированного слова class, за которым следует имя класса. Члены класса определяются в теле класса (class body), которое заключается в фигурные скобки и заканчивается точкой с запятой. Зарезервированные слова public и private разделяют члены класса, и эти спецификаторы доступа заканчиваются двоеточием. Члены класса объявляются как переменные C++, а методы задаются как объявления функций C++. Общая форма объявления класса такова:

class Class_Name

{

private: //Закрытые данные

//Объявление закрытых методов

//

public: //Открытые данные

//Объявление открытых методов

//

};

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

Пример 1.

Класс Rectangle

При геометрических измерениях прямоугольник определяется его длиной и шириной. Это позволяет нам вычислять периметр и площадь фигуры. Параметры длины и ширины и операции объединяются для образования абстрактного типа данных прямоугольной фигуры. Вы должны самостоятельно подготовить спецификацию ADT в качестве упражнения, освоив самостоятельно главу 1, а здесь будет разработан класс Rectangle C++, который реализует этот ADT. Класс содержит конструктор и набор методов — GetLength, PutLength, GetWidth и PutWidth, имеющих доступ к закрытым членам класса. Объявление класса Rectangle следующее:

class Rectangle

{

private:

//длина и ширина прямоугольного объекта

float length, width

public:

//конструктор

Rectangle(float l=0, float w=0);

//методы для нахождения и изменения закрытых данных

float GetLength(void) const;

void PutLength(float 1);

float GetWidth(void) const;

void PutWidth(float w);

//вычислять и возвращать измерения прямоугольника

float Perimeter(void) const;

float Area(void) const; I

}

Обратите внимание, что методы GetLength, GetWidth, Perimeter и Area имеют ключевое слово const после списка параметров. Это объявляет каждый метод как константный. В определении константного метода никакой элемент данных не может быть изменен. Иначе, выполнение метода, объявленного как const, не изменяет состояния объекта Rectangle.

Если первый спецификатор доступа опускается, начальные члены в классе являются закрытыми по умолчанию. Члены класса являются закрытыми до первого появления открытой или защищенной спецификации. C++ позволяет программисту чередовать закрытую, защищенную и открытую секции, хотя это обычно не рекомендуется.