Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты по ООП.doc
Скачиваний:
4
Добавлен:
14.04.2019
Размер:
596.48 Кб
Скачать

Билеты по ООП. Ответы.

11-13.

Объектно-ориентированное программирование

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

11. Инкапсуляция

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

12. Полиморфизм

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

13. Наследование

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

14. Классы С++

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

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

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

private:

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

protected:

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

public:

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

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

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

В С++ можно ограничить видимость данных и функций класса при помощи меток 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

}