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

ДВГТУ, ООП, Май 2004
                                          Вопросы на экзамен по учебной
дисциплине

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


I. Общие вопросы программирования
   1. Развитие языков программирования. Языки программирования C и C++.
   2. Процедурное программирование. Основные идеи структурного
      программирования.
   3. Базовые конструкции структурного программирования, их реализация в Си.
   4. Циклы. Оператор ветвления. Выбор.
   5. Функция, модуль, заголовочный файл, проект.
   6. Функция: передача параметров и возврат значений при вызове. Прототип
      функции.
   7. Передача параметров в функцию по значению и по ссылке.
   8. Массивы. Строки. Динамическое выделение памяти под массив.
   9. Конструирование сложных типов данных. Структуры в С.
  10. Понятие указателя. Работа с указателями.

      Управление памятью. Динамическое выделение памяти. Утечка памяти.
      "Сборка мусора".
  11. Преобразование программы на С/С++ из исходного текста в исполняемый
      модуль.

      Объектный модуль. Сборки загрузочного модуля.
  12. Заголовочные файлы. Препроцессор С/С++.
  13. Препроцессор С, директивы #include, #define, #ifdef, #endif
  14. Проектирование программы, схема иерархии модулей. Структура сложных
      программ.

II. Основы объектно-ориентированного программирования
  15. Основная идея ООП. Классы и объекты. Разделы класса. Интерфейс класса.
  16. Переход к ООП как этап развития технологии разработки ПП.
  17. Основные понятия ООП. Класс и объект.
  18. Принципы ООП. Инкапсуляция. Наследование. Полиморфизм.
  19. Конструирование классов. Контроль доступа к элементам класса, разделы
      класса private и public. Классы и функции – члены класса.
  20. Конструкторы и деструкторы.
  21. Виды объектов в памяти и время их жизни, статические члены класса.
  22. Указатель this, модификатор inline .
  23. Наследование: конструирование нового класса на базе существующего
      класса; раздел класса protected; построение иерархии классов.
  24. Режимы доступа: внешнее, защищенное и внутреннее наследование.
  25. Множественное наследование.
  26. Виртуальные методы.
  27. Чистые виртуальные методы и абстрактные классы.
  28. Переопределение операций для классов. Пример.
  29. "Друзья" класса (friend), переопределение операций ввода/вывода.

III. Практика программирования.
  30. Стиль программирования: правила составления имен, комментирование,
      отступы.
  31. Содержимое заголовочного файла в Вашем проекте.
  32. Анализ заголовочных файлов стандартных библиотек, например, <stdio.h>.
  33. Прототипы функций, назначение, использование в проекте.
  34. Разбиение программы на модули, назначение заголовочных файлов.
  35. Конструирование классов на базе структур данных и функций обработки.
  36. Описание класса и объявление объекта, вызов методов объекта.
  37. Пример наследования классов. Пример множественного наследования.
  38. Управление проектом в интегрированной среде, разбиение проекта на
      модули и состав модулей; контроль размещения исходных файлов,
      назначение директорий.
  39. Типы файлов, создаваемые системой программирования в проекте.

      Обеспечение сохранности файлов проекта, резервное копирование.
  40. Использование отладчика для локализации ошибки в программе.

IV. Ввод/вывод в С/С++.
  41. Понятие потока и файла. Буферизованный и небуферизованный ввод/вывод.
  42. Имена  стандартных потоков в С и в С++, их назначение. Объявление
      потоков, связывание их с файлами, закрытие потоков.
  43. Ввод/вывод в С++. Переопределение операций ввода/вывода.