oop&c++
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ И ЯЗЫК С++

учебная программа
Оригинал лежит здесь

Предисловие
Содержание курса
Вопросы для самостоятельного изучения
Перечень лабораторных занятий
Литература
Контрольные вопросы

ПРЕДИСЛОВИЕ

Целью курса является дать представление студентам об основных принципах объектно-ориентированного программирования на языке С++. Основной задачей курса является подготовка специалистов, владеющих современными методами и средствами разработки алгоритмов и программ, знающих современную технологию программирования и умеющих применять ее при решении сложных прикладных задач. Курс лекций расчитан на студентов, имеющих подготовку по информатике и программированию на языке С.

к началу


СОДЕРЖАНИЕ КУРСА
  1. Типы данных
  2. Методология программирования
  3. Введение в объектно-ориентированное программирование
  4. Объектно-ориентированные расширения С++
  5. Классы и объекты
  6. Наследование в языке С++
  7. Дружественные функции
  8. Виртуальные методы
  9. Шаблоны (параметризованные типы)
  10. Библиотека iostream

к началу

ВОПРОСЫ ДЛЯ САМОСТОЯТЕЛЬНОГО ИЗУЧЕНИЯ
  1. Виртуальные классы
  2. Обработка исключений

к началу

ПЕРЕЧЕНЬ ЛАБОРАТОРНЫХ ЗАНЯТИЙ
(* отмечены задачи для любителей трудностей)
  1. Создание класса и объектов типа "полином" с динамическим выделением памяти под элементы, для которого определены основные операции: сложение, вычитание, присваивание, *умножение, *деление. Реализация различных типов конструкторов для одного типа, включая конструктор копирования. Использование переопределенных операторов потокового ввода-вывода для этого нового типа.
    Иллюстрация на простом примере использования объектов нового типа.
  2. Создание нескольких (не менее двух) типов для графических объектов, используя механизм наследования от классов Point или Circle. (например: квадрат, прямоугольник, возможно закрашенный, круг, сектор, *3D- объекты и т.п.)
    Иллюстрация на простом примере использования объектов нового типа.
  3. Создание двухуровневой иерархии классов, где в качестве родительского класса выступает абстрактный класс, на примере абстрактного типа "график функции". При этом вид функции определяется в производном классе. Реализация операций сложения функций и умножения на константу, используя дружественные функции.
    Иллюстрация на простом примере использования объектов нового типа.
  4. Использование шаблонов классов и механизма наследования для создания нового шаблона "очередь" с контролем количества элементов в очереди. В качестве базового используется шаблон класса "queue" из библиотеки classlib.
    Иллюстрация на простом примере использования объектов нового типа.

к началу

ЛИТЕРАТУРА
  1. Шилдт Герберт. Самоучитель С++ (2-ред)./Пер. с англ.-СПб.: BHV-Санкт-Петербург, 1997.-512с. (+дискета с примерами)
  2. Бруно Бабэ. Просто и ясно о Borland C++: Версии 4.0 и 4.5/ Пер. с англ. -М.:БИНОМ, 1994. - 400с.
  3. Страуструп Б. Язык программирования С++ (2-ред)./Пер. с англ.-М.: Радио и связь, 1995. - 352с.
  4. Клочков Д.П., Павлов Д.А. Введение в объектно-ориентированное программирование. / Учебно-методическое пособие. - Изд. Нижегор. ун-та, 1995. - 70с.
  5. Элиас М., Страуструп Б. Справочное руководство по языку С++ с комментариями. /Пер. с англ. -М.:Мир, 1992.- с.

к началу

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

к началу

Жмите на картинку, если хотите заработать.
Если не хотите, все равно нажмите:
сделать доброе дело - это же так просто.

MEDIAhits: нажми и заработай денежку

HOME | Новинки | C++ | Генетика | Денежки | Ссылки
Оставить запись | Просмотреть книгу

Исаев Сергей
пишите: sergey.isaev @ mailcity.com