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

1. Объектно-ориентированный подход в программировании:

2. Объектно-ориентированные средства C++:

3. Наследование в языке C++:

4. Виртуальные функции:

5. «Дружественные» функции:

6. Шаблоны функций и классов:

Контрольные вопросы

  1. Какие существуют механизмы для создания новых типов?
  2. Парадигма ООП. Специфика интерфейса ОО программ.
  3. Преимущества ООП.
  4. Понятие класса. Отношение «объект – класс».
  5. Понятие полиморфизма. Проявления полиморфизма.
  6. Механизм наследования.
  7. Модификаторы доступа и наследования. Как изменяются атрибуты элементов класса при наследовании?
  8. Смысл инкапсуляции.
  9. В чем разница между struct, class и union?
  10. Что такое конструктор, деструктор и когда они вызываются?
  11. Что такое встраиваемая функция? В чем ее преимущества и недостатки?
  12. Какие два способа существуют для создания встраиваемой функции?
  13. Как можно передать в функцию в качестве аргумента адрес объекта?
  14. Что такое дружественная функция?
  15. Когда следует переопределять операторы с помощью дружественных функций, а когда с помощью функций элементов класса?
  16. Что происходит при присваивании одного объекта другому (без переопределенной операции =) и какие побочные эффекты могут возникнуть?
  17. При передаче объекта в функцию в качестве аргумента создается копия этого объекта. Изменение копии в теле функции не отражается на оригинале. Возможно ли нарушение этого правила?
  18. Какая функция может иметь доступ к защищенным членам одного класса? ... двух классов?
  19. Что такое указатель this. Приведите пример использования этого указателя.
  20. Что такое ссылка? Какое имеется преимущество при использовании ссылки в качестве параметра функции, а в чем недостаток? В чем разница между ссылкой и указателем?
  21. Назовите причины, по которым может понадобиться перегрузка конструкторов и деструкторов (в одном классе).
  22. Какова основная форма конструктора копирования и когда он вызывается?
  23. Что такое аргумент по умолчанию? Как аргумент по умолчанию связан с перегрузкой функций?
  24. Почему может потребоваться перегрузка оператора присваивания?
  25. Как можно ли изменить приоритет перегруженного оператора?
  26. Что такое виртуальная функция?
  27. Какие функции не могут быть виртуальными?
  28. Что такое абстрактный класс и чем может быть вызвана необходимость построений абстрактного класса?
  29. Чем виртуальные функции отличаются от перегружаемых?
  30. Раннее и позднее связывание.
  31. Совместимость типов. Какую роль в достижении совместимости объектов могут играть абстрактные классы?
  32. Почему шаблоны называют параметризованными типами?
  33. Когда следует в программе применять шаблоны, а когда нет?
  34. Чем шаблоны лучше макроподстановок?
  35. Для каких типов данных может применяться конкретный шаблон, а для каких нет?
  36. В чем разница между классом и шаблоном класса?
  37. Что может выступать в качестве параметра для шаблона класса?

Литература

  1. Шилдт Г. Самоучитель C++ / Г. Шилдт; пер. с англ. – СПб. : БХВ-Петербург, 1997. – 512с.
  2. Страуструп Б. Язык программирования С++ / Б. Страуструп; пер. с англ. - М. : Радио и связь, 1995. - 352с.
  3. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений / Г. Буч, Роберт А. Максимчук, Майкл У. Энгл, Бобби Дж. Янг, Джим Коналлен, Келли А. Хьюстон. – Вильямс, 2008. – 720с.
  4. Чернышов М.К. Введение в объектно-ориентированное программирование (с примерами на C++). I часть (учебно-методическое пособие) // М.К. Чернышов. Воронеж : ИПЦ ВГУ, 2006. – Тираж 50. – 54 с.
  5. Чернышов М.К. Основы языка программирования C++ с применением технологии объектно-ориентированного программирования (учебно-методическое пособие) // М.К. Чернышов. Воронеж: ИПЦ ВГУ, 2007. – 72с.