ООП - вопросы к экзамену и время/место проведения экзамена

Экзамен по ООП состоится 19 июня 2010 года в 327 аудитории 3 корпуса в 9:00
Консультация перед экзаменом, а также по приему долгов пройдет в четверг, 17 июня 2010 года, с 9:00 до 11:30 в 522 аудитории.
Под катом - вопросы к экзамену

1. Типы данных языка C++. Целочисленные типы данных. Типы данных с плавающей запятой. Перечислимый тип. Объявление переменных и констант в языке Си++.
2. Типы данных языка C++. Структуры. Объединения. Массивы. Указатели. Ключевое слово typedef. Способы выделения памяти для хранения данных в языке Си. Статическое, автоматическое и динамическое размещение данных. Особенности и различия.
3. Операторы языка C++. Арифметические операторы, операторы отношения, логические операторы, операторы манипулирования битами.
4. Операторы инкремента и декремента. Операторы и выражения присваивания. Условное выражение. Приоритет и очередность выполнения операторов
5. Условное выражение. Инструкции и блоки. Оператор if. Оператор switch. Средства организации циклов языка C++ (for, while, do-while). Вложенные циклы. Инструкции break и continue. Инструкция goto.
6. Средства организации подпрограмм и функций в языке C++. Локальные и статические переменные функций. Аргументы функций. Передача параметров по значению, ссылке, указателю. Возвращение результата функции. Тип void. Статические функции.
7. Организация памяти в языке Си. Указатели. Взятие адреса переменной. Разыменование указателя. Инициализация указателей. Копирование указателей. Указатели и аргументы функций. Указатели на функции.
8. Массивы в языке Си++. Связь между указателями и массивами. Адресная арифметика. Строковые константы. Различия между массивами и указателями. Массивы указателей.
9. Двумерные и многомерные массивы. Указатели на указатели. Указатели на структуры. Инкремент и декремент указателя. Работа с динамической памятью в языке Си++ – функции malloc, calloc, realloc, free. Операторы new и delete.
10. Перегрузка функций. Выбор нужной функции компилятором. Разрешение неоднозначностей при перегрузке функций. Стандартные значения параметров функций. Ссылки. Инициализация ссылок. Ссылки на временные объекты. Пространства имен.
11. STL - стандартная библиотека шаблонов языка C++. Контейнеры STL (вектор, двусвязный список, множество, карта (отображение), двусторонняя очередь) Итераторы. Алгоритмы STL.
12. Основные принципы ООП. Абстракция. Инкапсуляция. Наследование. Полиморфизм. Классы и объекты. Методы, данные и свойства. Ограничение доступа к полям классам.
13. Указатель this. Константные методы класса. Изменчивые данные класса. Инициализация и деинициализация экземпляра класса. Копирование объектов. Запрещение копирования объектов.
14. Перегрузка операций. Способы перегрузки операций. Перегрузка присваивающих выражений. Дружественные операции. Умные указатели. Перегрузка унарного плюса и минуса. Перегрузка оператора присваивания. Запрет оператора присваивания.
15. Перегрузка операций. Способы перегрузки операций. Перегрузка оператора индексации. Перегрузка операций инкремента и декремента. Перегрузка операторов потокового ввода/вывода. Перегрузка операторов приведения типа. Перегрузка оператора (). Функторы.
16. Модульное тестирование. Разработка через тестирование. Этапы разработки в стиле TDD. Преимущества использования модульных тестов и TDD. Возможные проблемы, затрудняющие модульное тестирование классов и способы их решения. Закон Деметра.
17. Дружественные функции и классы. Дружественные операции. Статические данные и методы класса. Вложенные классы. Идиома Pimpl.
18. Композиция. Наследование. Способы наследования. Открытое, закрытое и защищенное наследование. Вызов конструкторов и деструкторов при наследовании.
19. Перегрузка методов в классе-наследнике. Виртуальные функции. Абстрактные классы. Интерфейс. Приведение типов по иерархии классов.
20. Множественное наследование. Ромбовидное наследование. Проблемы. Виртуальное наследование. Преимущества использования наследования. Недостатки использования наследования.
21. Способы обработки ошибок. Выбрасывание и перехват исключений. Разработка кода, безопасного к возникновению исключений.
22. Обобщенное программирование. Шаблоны функций. Шаблонные операторы. Шаблоны классов. Параметры шаблонов, не являющиеся типами.
23. Обобщенное программирование. Специализация шаблонов. Шаблонные методы класса. Шаблоны и наследование. Преимущества и недостатки использования шаблонов.
24. Паттерны проектирования. Абстрактная фабрика. Назначение. Структура. Отношения между участниками паттерна. Применение. Пример использования. Преимущества и недостатки.
25. Паттерны проектирования. Строитель. Назначение. Структура. Применение. Пример использования. Преимущества и недостатки.
26. Паттерны проектирования. Фабричный метод. Назначение. Структура. Применение. Пример использования. Преимущества и недостатки.
27. Паттерны проектирования. Прототип. Назначение. Структура. Применение. Пример использования. Преимущества и недостатки.
28. Паттерны проектирования. Одиночка. Назначение. Структура. Применение. Пример использования. Преимущества и недостатки. Особенности реализации паттерна «Одиночка» в C++.
29. Паттерны проектирования. Адаптер. Назначение. Структура. Применение. Пример использования. Преимущества и недостатки. Адаптер класса. Адаптер объекта. Способы реализации сменных адаптеров.
30. Паттерны проектирования. Компоновщик. Назначение. Структура. Применение. Пример использования. Преимущества и недостатки. Ссылки на родителей. Разделение компонентов. Управление дочерними компонентами.
31. Паттерны проектирования. Декоратор. Назначение. Структура. Применение. Пример использования. Преимущества и недостатки.
32. Паттерны проектирования. Заместитель. Назначение. Структура. Применение. Пример использования. Преимущества и недостатки. Удаленный заместитель. Виртуальный заместитель. Защищающий заместитель. Умный указатель. Оптимизация «Copy-on-write».
33. Паттерны проектирования. Команда. Назначение. Структура. Применение. Пример использования. Преимущества и недостатки. Диаграмма взаимодействий. Поддержка отмены и повтора операций.
34. Паттерны проектирования. Посетитель. Назначение. Структура. Применение. Пример использования. Преимущества и недостатки. Диаграмма взаимодействий.
35. Паттерны проектирования. Наблюдатель. Назначение. Структура. Применение. Пример использования. Преимущества и недостатки. Диаграмма взаимодействий. Наблюдение за несколькими субъектами. Инициирование обновления. Висячие ссылки и борьба с ними. Гарантирование непротиворечивости состояния субъекта перед отправкой уведомления. Трансляция информации о характере изменения субъекта, модель вытягивания, модель проталкивания. Явное специфицирование представляющих интерес модификаций.

0