Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
распечатать.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
160.66 Кб
Скачать

1. Объявление класса. Примеры. Понятие инкапсуляции, полиформизма, наследования.

Определение класса

Общий вид объявления класса следующий:

class имя_класса{

private: данные и функции

protected: защищённые данные и функции

public: публичные данные и функции

}список объектов;

Элементы класса

Элементы класса делятся на две основные категории:

1. данные, называемые элементами-данными;

2. код, называемый элементами-функциями или методами.

Элементы данных

Элементы-данные классов С++ такие же, как и элементы структур языка С++ с некоторыми дополнениями:

1. элементами-данными могут быть перечислимые типы, битовые поля или представители ранее объявленного класса;

2. элемент-данное класса может быть указателем или ссылкой на представителя этого класса.

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

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

Наследование представляет собой процесс, благодаря которому один объект может наследовать, приобретать свойства от другого объекта.

2. Доступ к членам класса. Управление доступом к членам класса. Указатель this. Примеры.

Управление доступом

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

Метка-спецификатор public используется тогда, когда элементы-данные и функции-элементы класса доступны для функций-элементов и других функций программы, в которой имеется представитель класса.

Метка-спецификатор protected используется в том случае, когда элементы данных и функции-элементы доступны для функций-элементов данного класса и классов производных от него.

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

Элементы класса

Элементы класса делятся на две основные категории:

1. данные, называемые элементами-данными;

2. код, называемый элементами-функциями или методами.

Элементы данных

Элементы-данные классов С++ такие же, как и элементы структур языка С++ с некоторыми дополнениями:

1. элементами-данными могут быть перечислимые типы, битовые поля или представители ранее объявленного класса;

2. элемент-данное класса может быть указателем или ссылкой на представителя этого класса.

Элементы функции

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

Например:

class queue {

int q[100];

int sloc, rloc;

public: void init();

void qput(int i);

int qget();

};

void queue::init()

{

rloc=sloc=0;

}

void queue::qput(int i)

{

if (sloc==99) {

cout << "Queue is full.\n";

return;

}

sloc++;

q[sloc]=i;

}

int queue::qget()

{

if (rloc==sloc) {

cout << "Queue underflow.\n";

return 0;

}

rloc++;

return q[rloc];

}

Доступ к элементам-данным

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

->, применяемых к представителю или указателю на представитель класса.

Пример.

class coord

{

public: int x, y; // координаты x и y

};

void main()

{

coord org; // представитель класса координат

coord *orgptr = &org; // указатель на представитель класса

org.x = 0; // задание значения координаты x

orgptr->y = 0; // задание значения координаты y

}

Указатель this

Каждая нестатическая функция-элемент имеет доступ к объекту, для которого вызвана, через ключевое слово this. Типом this является: тип_класса *.

Пример.

class simple

{

public: simple();

void greet() { cout<<“ Hello!”;};

};

simple::simple()

{

greet(); // вызов

this>greet(); // функции

(*this).greet(); // greet()

}

Т.к. функции-элементы могут обращаться ко всем элементам класса просто по имени, в основном указатель this используется для возврата указателя (return this) или ссылки (return *this) на подразумеваемый объект.