- •Министерство образования и науки украины
- •Лабораторная работа № 1
- •Ход работы
- •Требования к отчетам
- •Отчёт должен содержать
- •Вопросы для контроля и самостоятельной работы
- •Лабораторная работа №2
- •Символы типа
- •Ход работы
- •Вопросы для контроля и самостоятельной работы
- •Лабораторная работа №3 Разработка программ со скалярными типами данных (2 часа)
- •Теоретические сведения
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №4 Разработка программ с циклическими вычислительными процессами
- •Теоретические сведения
- •Алгоритм работы оператора цикла for ():
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №5 Разветвляющийся вычислительный процесс с различными логическими условиями: оператор if... Else, условная операция (?:), оператор switch, оператор break, оператор goto (2 часа)
- •Теоретические сведения
- •Условная тернарная операция (?:)
- •Оператор варианта switch
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №6 Операции с, их приоритеты и использование. Преобразование типов (4 часа)
- •Теоретические сведения
- •Приоритет операций и порядок выполнения (ассоциативность)
- •Преобразование типов
- •(Новый_тип) операнд
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №7
- •Синтаксис определения функций в с
- •Использование локальных и глобальных переменных в функциях. Вызов функции
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №8 Разработка программ с указателями (2 часа)
- •Теоретические сведения
- •Основные операции с указателями
- •Указатели и целые величины
- •Динамическое размещение указателей в памяти
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №9 Массивы. Селективная обработка массивов
- •Теоретические сведения
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №10
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №11
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 12
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 13
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 14
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 15 Использование указателей для работы с составными типами данных (2часа)
- •Теоретические сведения
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 16
- •Указатели как параметры функции
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №17
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 18
- •Использование администратора проектов
- •Lab18.Cpp- Основной файл проекта
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 19
- •Доступ к пикселям
- •Графические примитивы
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №20 Разработка программ с использованием классов (2 часа)
- •Теоретические сведения
- •Объявление и определение класса
- •Тело класса
- •Использование класса
- •Инкапсуляция. Управление доступом к членам класса
- •Классы памяти для объектов
- •Использование данных-членов класса
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №21
- •Инициализация объектов класса
- •Деструкторы
- •Вызов деструкторов
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №22 Использование наследования для создания иерархии классов (2 часа)
- •Теоретические сведения
- •"Друзья" классов (friend)
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №23 Использование виртуальных и указателей для работы с объектами классов (2 часа)
- •Теоретические сведения
- •Виртуальные базовые классы
- •Виртуальные деструкторы
- •Ход работы
- •Литература
- •Выходные данные
Контрольные вопросы для подготовки и самостоятельной работы
Что означает оператор (::)?
Что означает понятие наследования?
Какой класс называется базовым?
Какой класс является наследником?
Сколько базовых классов может быть у производного класса?
Может производный класс быть базовым?
Можно ли задавать спецификаторы для базовых классов при наследовании (объявление произвольного класса)?
Как изменяется доступ к элементам базового класса при наследовании с различными спецификаторами доступа: из разделов класса, из программы, из других классов?
В чём разница между простым и множественным наследованием?
Что означает выражение «неполное объявление» класса?
Можно ли уточнить доступ к членам базового класса в производном классе? Как это осуществляется?
Какие функции называются друзьями класса?
Как объявляются и определяются функции–друзья класса?
Может ли класс быть дружественным?
Могут ли два класса быть друзьями друг другу?
Можно ли из класса-наследника получить доступ к private части базового класса, если спецификатор доступа при наследовании private ?
Таблица 22.1 - Варианты понятий для базовых классов
Вариант |
Понятие |
Вариант |
Понятие |
1 |
Растения |
15 |
Мебель |
2 |
Животные |
16 |
Строения |
3 |
Небесные тела |
17 |
Мосты |
4 |
Спортивные соревнования |
18 |
Бритвы |
5 |
Печатная продукция |
19 |
Принтеры |
6 |
Промышленное производство |
20 |
Плоттеры |
7 |
Телефоны |
21 |
Разъёмы электрические |
8 |
Железнодорожно-транспортные средства |
22 |
Манипуляторы для ввода информации |
9 |
Автомобильный транспорт |
23 |
Устройства записи информации |
10 |
Осветительные приборы |
24 |
Сканеры |
11 |
Средства связи |
25 |
ЭВМ |
12 |
Телевизоры |
26 |
Нагревательные устройства |
13 |
Корабли |
27 |
Устройства передачи крутящего момента |
14 |
Мебель мягкая |
28 |
|
Лабораторная работа №23 Использование виртуальных и указателей для работы с объектами классов (2 часа)
Цель работы: изучить и научиться использовать виртуальные функции в языке С.
Теоретические сведения
Виртуальные функции-члены объявляются в классе c ключевым словом virtual.
Если базовый класс (БК) base содержит виртуальную функцию (virtual) vf () и производный класс (ПК) derived также содержит эту функцию, то при вызове функции vf() для объекта базового класса мы получим base:: vf(), а для объекта производного класса мы получаем derived::vf(). Например:
Базовый класс |
Производный класс |
|
struct base {….. virtual void vf (void); void f (void); }; base_1 class {… public: virtual void vf(void)=0 void f(void); }; |
struct derived : public base {….. virtual void vf (void); // virtual в последнем // ПК можно опустить void f (void); };
|
derived d; // объект производ- // ного класса d.vf(); // вызов функции класса d // erived::vf() d.f(); // вызов функции класса // derived::f() base* bp = &d; // указатель на // БК адресует объект ПК bp->vf (); // вызов виртуальной // функции derived::vf() bp->f (); // вызов функции-члена // класса base // base:: f() |
Тип объектов классов с виртуальными функциями определяется во время выполнения программы.
Поэтому при вызовах с помощью указателя bp на БК функций vf() и f() для объекта ПК с именем d вызываются, соответственно, derived::vf(), но base::vf(). Вызов нужной виртуальной функции vf() зависит от типа объекта, для которого она вызывается (derived d), в то время как вызов невиртуальной функции f() зависит только от типа указателя (base*bp), адресующего данный объект.
Если производный класс содержит функцию с тем же именем, что и имя виртуальной функции в базовом классе, то они должны иметь один и тот же тип. Функция vf() в ПК от БК, в котором содержится виртуальная функция vf(), также считается виртуальной. Виртуальная функция может быть определена в базовом классе. Виртуальную функцию, которая уже определена в базовом классе, в производном классе можно не определять. В этом случае при использовании указателя на БК для адресации ПК при всех обращениях используется функция, определенная в базовом классе. Если виртуальная функция в классе заканчивается нулём (=0), то она называется чистой виртуальной функцией. Чистая виртуальная функция не имеет определения в базовом классе, но определяется в производных. Класс, содержащий хотя бы одну такую функцию, называется абстрактным. Нельзя создать объект абстрактного класса.