тест 4 экзамен

Инкапсуляция, пакетирование (Encapsulation) — это это слияние

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

абстрактные типы данных, определяемые пользоватем

Наследование (Inheritance) — это  возможность передачи некоторых

свойств одного объекта другому объекту

Полиморфизм (Polymorphism) — многоформенность — это

многоформенность — это способность объекта отреагировать на

некоторый запрос сообразно своему типу, даже если на стадии

компиляции тип объекта, к которому направлен запрос, еще не

известен

Объектно — ориентированное программирование — это технология

создания новых объектов (типов данных), которые наследуют

определенные черты существующих (ранее созданных) объектов

(типов данных)

Классы — это структуры, которые содержат не только объявления

данных, но и функций, называемых функциями — членами

(member functions) и определяющих, что может делать класс

Операция :: — это уточнение области действия

Спецификатор доступа private означает собственный, локальный. К

ним имеют доступ только функции — члены данного класса и

функции — друзья класса.

Спецификатор доступа public означает общедоступный,

глобальный. Предназначены для обеспечения интерфейса

объектов класса с программой, в которой они существуют.

Спецификатор доступа protected означает защищенный.

Доступны функциям — членам данного класса и

дружественным функциям производных классов.

Класс можно определить с помощью конструкции:

Для описания объекта класса используется конструкция:  имя_класса

имя_объекта;

Обращение к компонентам класса с помощью квалифицированных

имен: имя_объекта.имя_класса :: имя_компонента

Обращаться к компонентам класса с помощью уточненного имени:

имя_объекта.имя_элемента

Инициализация статического компонента тип имя_класса ::

имя_компонента инициализатор;

Обращение к статическому компоненту через имя конкретного объекта:

имя_объекта.имя_компонента

имя_объекта.имя_класса :: имя-компонента

Способ доступа к элементам объекта класса через явное использование

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

указатель_на_объект_класса -> имя_элемента

Вызов компонентной функции через уточненное имя

указатель_на_объект_класса -> имя_элемента

Вызов компонентной функции через указатель на объект класса:

указатель_на_объект_класса ->

обращение_к_компонентной_функции

Обращение к статическому компоненту через квалифицированное имя:

имя_класса :: имя_компонента

Обращение к статическому компоненту через имя конкретного объекта:

имя_объекта.имя_компонента

имя_объекта.имя_класса :: имя-компонента

Определение конструктора в теле класса

имя_класса(список_формальных_параметров)

{

операторы_тела_конструктора

}

Явный вызов конструктора при непустом списке фактических

параметров: имя_класса

имя_объекта(фактические_параметры_конструктора);

Явный вызов конструктора, приводящий к созданию объекта, не

имеющего имени: имя_класса

(фактические_параметры_конструктора);

Определение деструктора имеет вид: ~имя_класса() {

операторы_тела деструктора };

Явный вызов деструктора имеет вид

Обращение к компонентным данным объекта из операторов,

выполняемых вне определения классов, с помощью уточненного имени

по известному имени объекта: имя_объекта.имя_элемента

Обращение к компонентным данным объекта из операторов,

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

объект: укаэатель_на_объект -> имя_элемента

Вызов статической компонентной функции используя

квалифицированное имя:

Определение указателя на принадлежащие классу функции:

тип_возвращаемого_функцией_значения (имя_класса ::

*имя_указателя_на_метод)

(спецификация_параметров_функции);

Определение указателя на компонентные данные класса

тип_данных(имя_класса :: *имя_указателя);

Определение указателя и его явная инициализация, с использованием

адреса компонента: &имя_класса :: имя_компонента

Внешнее определении компонентной функции (квалифицированное имя

компонентной функции) имеет вид: имя_класса :: имя_компонентной_функции

При внешнем определении компонентной функции в теле класса

помещается ее прототип: тип

имя_функции(спецификация_и_инициалиэация_параметров);

Вне тела класса компонентная функция определяется таким образом:

тип имя_класса ::

имя_функции(спецификация_формальных_параметров)



{

тело_принадлежащей_классу_функции

}

Разыменование указателей на компоненты класса

имя_объекта.*указатель_на_компонент_данных

имя_объекта.*укаэатель_на_метод(параметры)

Доступ к компонентам конкретных объектов через указатель

указатель_на_объект_класса ->

*указатель_на_компонент_данных

указатель_на_объект_класса ->

*указатель_на_метод(параметры)

Объектно — ориентированная программа не имеет жесткого алгоритма работы,

представляет собой систему объектов, каждый из которых

может выполнять какие-то функции в ответ на полученное

сообщение

Компонентная функция — конструктор используется для

инициализации объектов класса

Функции деструкторы классов (destructor)  вызываются неявно,

автоматически для возврата системе памяти, выделенной под

объект, как только объект класса уничтожается

Спецификаторы доступа  можно использовать для изменения

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

Указатель

this имя_класса * const this = адрес_объекта; имеет фиксированное имя

незаметно для программиста определен в каждой функции класса

Классы, включающие виртуальные функции, носят название

полиморфные

Классы, в которых есть хотя бы одна чистая (пустая) виртуальная

функция носят название бстрактные Абстрактные классы пользуются

«ограниченными правами»:

невозможно создать объект абстрактного класса,

абстрактный класс нельзя употреблять для задания типа

параметра функции или в качестве типа возвращаемого

функцией значения,

абстрактный класс нельзя использовать при явном

приведении типов. В то же время можно определять

указатели и ссылки на абстрактные классы.

объект абстрактного класса не может быть формальным

параметром функции, однако формальным параметром может

быть указатель абстрактного класса, что дает возможность

передавать в вызываемую функцию в качестве фактического

параметра значение указателя на производный объект, заменяя

им указатель на абстрактный базовый класс.

Классы, объявленные внутри блока, например внутри определения

функции, носят название

Функции, которые, не являясь компонентом класса, имеют доступ к его защищенным и собственным компонентам называются

дружественные

Классы, на основе которых строятся другие классы, называются

базовые

Классы, построенные на основе базовых классов, называются

производные

Определение операции-функции имеет вид:

тип_возвращаемого_значения operator знак_операции

(спецификация_параметров_операции-функции)

{

операторы_тела_операции-функции

}

Для задания шаблона производного класса используется синтаксис: class имя_производного_класса : необязательный_атрибут

имя_базового_класса

{

тело_производного_класса

} объекты_производного_класса (через запятую);

Чистой виртуальной функцией называется компонентная функция,

которая имеет определение: virtual тип

имя_функции(список_формальных_параметров) = 0;

Конструкция, называемая чистый спецификатор

Пример описания чистой виртуальной функции: virtual void

fpure(void) = 0;

Что означает данное описание для класса example

example X1, ex1(55), D;

example X1, ex1(55), D;

- объекты данного класса

example *point = &D;

- указатель на объект данного класса

example dim[8];

- массив объектов данного класса

example &Name = X1;

- ссылка на объект данного класс

В определении класса

ключ_класса имя_класса

{

список компонентов

} объекты класса (через запятую);

ключ класса — это одно из служебных слов class, struct, union 

имя_класса — это произвольно выбираемый идентификатор 

список_компонентов это определения и описания

типизированных данных и принадлежащих классу функций

(компонентные функции

Какой смысл во фрагменте программы

class AZ

{

int ii; float ее; char сс;

public:

AZ(int in, float en, char cn) :

ii(5), ee(ii * en + in), cc(cn)

{ } …

};

имеет строка программы

   AZ A(2, 3.0, ‘d’);

   AZ Х = AZ(0, 2.0, ‘d’);

   AZ A(5, 2.0, ‘d’);

   AZ A(2, 5.0, ‘d’);

   AZ Х = AZ(5, 2.0, ‘d’);




Предыдущий:

Следующий: