ВОПРОСЫ ПО КУРСУ «ООП» ДЛЯ ЭТМО (2003/04 ГГ.)
Лектор: старший преподовотель кафедры ВТ Березовский А.В.
Примечания.
-
Число в скобках – количество в штуках. Например: аддитивные (2) – при ответе нужно рассмотреть 2 аддитивные операции + и –.
-
или – необходимо привести поясняющий(ие) пример(ы).
-
Сравнение С и С++: основатели, концепции. ООП и его основные черты: инкапсуляция, полиморфизм, наследование. Этапы формирования исполняемого файла из исходного текста.
-
Операции (operator) в С++. Унарные операции (): взятия адреса, разыменования, изменения знака, инверсии, отрицания, инкремента, декремента, размера объекта. Бинарные операции (): аддитивные (2), мультипликативные (3), сдвига (2), поразрядные (3), отношения (6), присваивания (10), выбора элементов (2), особые (2), области видимости (1), разделитель (1). Тернарная операция ().
-
Динамическое распределение памяти: этапы (5), с картой памяти. Приоритеты операций: 16 рангов, ассоциативность. на приоритеты и ассоциативность.
-
Типы данных в С++ (11): размеры, диапазон, иерархия. Скалярные (4) и агрегатные (4) типы. Производные типы (6) и способы их образования (). Тип void ().
-
Операции преобразования типов (2 формы и ограничение) и правила применения ().
-
Области действия и видимости переменных. Локальные и глобальные переменные. с использованием операции ::. Время жизни переменных.
-
Условные операторы и циклы в С++ (синтаксис, особенности, ): if/else, switch/case, while, пустой оператор, do while, прерывания выполнения (3).
-
Пользовательские типы (синтаксис, ): переименование типов и перечисляемые типы. Структуры, объединения (синтаксис, , особенности размещения в памяти, размер).
-
Структуры (struct). Инициализация полей. Доступ к ним через указатели и ссылки. Программа, реализующая двунаправленный список.
-
Объединения (union). Представление структур и объединений в памяти. Выравнивание по четным адресам. Правила инициализации и работы с объединениями.
-
Символьные массивы и основные функции из библиотеки string.h. использования.
-
Препроцессор С++. Директивы, назначение, ограничения на них и : #define, #undef, #, ##, #include, макросы с параметрами. Недостатки.
-
Препроцессор С++. Условная компиляция и ее директивы (4). Правила условной компиляции (6). Операторы (): #defined, #line, #error. Предопределенные макросы (): __LINE__, __FILE__, __DATE__, __TIME__. (2) макросов с параметрами. защиты заголовочного файла от повторного включения.
-
Функции, описание функции (прототип), определение функции, вызов, список аргументов, возвращаемое значение, взаимодействие функций main с операционной системой. Рекурсии. Оператор передачи возвращаемого значения.
-
Вызов функции (). Фактические и формальные параметры (). Значения по умолчанию (правила, ). Техника работы с функциями, имеющих переменное количество параметров (явное указание количества, стандартные макросы va_ ), .
-
Массивы и функции. Способы работы с многомерными массивами: преобразование к одномерному, массивы указателей, использование классов. Индексная арифметика.
-
Указатели и техника работы с ними. Константные указатели и указатели на константу. Указатели void*-типа ().
-
Указатели на функции. Массив указателей на функции. Передача указателей на функцию. использования стандартной функции qsort.
-
Ссылки и правила (3) работы с ними. Ограничения. Способы инициализации ссылок. Ссылки при работе с функциями: формальные параметры, ссылки на функцию, ссылка как возвращаемое значение. Ссылки и массивы.
-
Классы и объекты. Управление доступом и перекрытие данных в классах, структурах и объединениях (таблица, ). Определение элементов-функций (ЭФ) внутри и вне класса. Встроенные ЭФ. Указатель на ЭФ и операции ,* и ->* (). Операторы доступа (2) к ЭД и ЭФ. Указатель this.
-
Специальные элементы-функции, назначение: конструктор, деструктор.
-
Перегрузка элементов-функций (ЭФ) и операций класса. Правила и ограничения.
-
Друзья класса. Назначение и правила. Указатель this, дружественная функция и операция присваивания. Перегруженные операции-друзья. для operator + с операндами «объект», «целое» в произвольном порядке.
-
Бинарные операции: операции отношения и логические операции. Особенности и . Перегрузка унарных операторов как элемент класса и с помощью friend.
-
Наследование классов и полиморфизм ООП. Концепция иерархии классов. Базовый и производный классы: определения и синтаксис. Комбинации ключей доступа, доступа в базовом и производном классах (таблица).
-
Конструкторы и деструкторы в наследовании. Правила (4) и .
-
Виртуальные функции и классы. Отличие виртуальных функций от перегруженных функций. Условия работы для виртуальных функций.
-
Правила для виртуальных функций. Причины и правила использования чистой виртуальной функции.
-
Множественное наследование и базовые классы. Постановка и решение проблемы двух базовых классов в иерархии классов.
-
Множественное наследование. Абстрактные классы и чистые виртуальные функции. .
-
Ввод-вывод в С++. Библиотеки. Потоки и буферы. Подключаемые файлы и классы. Виды потоков по направлению Иерархия потоковых классов. Базовые классы для потоков. Достоинства потоков. Стандартные потоки (4) для базовых типов. Перегрузки потоков для пользовательских типов.
-
Форматирование потоков ввода-вывода С++. Форматирующие функции-элементы и : ширина поля, заполняющий символ, точность вещественных чисел. Флаги форматирования и : методы, флаги.
-
Манипуляторы потоков С++, особенности и : простые , параметризированные . Ошибки потоков и : тип io_state, функции опроса и установки состояния потока.
-
Файловый ввод-вывод с использованием потоков. Применяемые классы. Конструкторы файловых потоков. посимвольной перезаписи из файла в файл.
-
Режимы доступа в потоках С++: тип open_mode. . Закрытие файла.
-
Неформатированный ввод-вывод С++. Функции и : read, write, get(2), getline, ignore, gcount, peek, putback, seekg, seekp.
-
Шаблоны функций С++, .
-
Шаблоны классов С++, . Достоинства и недостатки шаблонов.
-
Управление исключениями в С++ и достоинства механизма.
-
Неассоциативные контейнеры, использования vector<>.
-
Ассоциативные контейнеры, использования map<>.
-
Стандартные объекты-функции, использования. Конструирование О-Ф.
-
Алгоритмы стандартной библиотеки шаблонов. Группы алгоритмов, .
Экзаменационный билет состоит из 2 вопросов и 1 задачи. Список задач оглашается на консультации.
Продолжительность письменного ответа на билет – 60 мин.