HOME
Новенькое
С++
Генетика
Ссылки
FAQ
Гостевая книга |
Предисловие
Содержание курса
Вопросы для самостоятельного изучения
Перечень лабораторных занятий
Литература
Контрольные вопросы
ПРЕДИСЛОВИЕ
Целью курса является дать представление студентам об основных принципах объектно-ориентированного программирования на языке С++. Основной задачей курса является подготовка специалистов, владеющих современными методами и средствами разработки алгоритмов и программ, знающих современную технологию программирования и умеющих применять ее при решении сложных прикладных задач. Курс лекций расчитан на студентов, имеющих подготовку по информатике и программированию на языке С.
Если у вас есть каке-то замечания по поводу изложенного здесь материала - пишите.
СОДЕРЖАНИЕ КУРСА
1. Типы данных
- Современное понятие типа
- Базовые типы
- Основные конструкторы типов
2. Методология программирования
- Декомпозиция и абстракция
- Абстракция через параметризацию
- Абстракция через спецификацию
- Процедурная абстракция
- Абстракция данных
- Классы операций
- Полнота
3. Введение в объектно-ориентированное программирование
- Немного истории
- Объектно – ориентированная технология разработки программ
- Инкапсуляция
- Наследование
- Полиморфизм
4. Объектно-ориентированные расширения С++
- Консольный ввод и вывод в С++
- Введение в классы
- Перегружаемые функции и операторы (overload)
5. Классы и объекты
- Встраиваемые функции
- Конструкторы и деструкторы
- Конструкторы с параметрами и перегрузка конструкторов
- Присваивание объектов
- Передача в функции и возвращение объекта
- Указатели и ссылки на объекты
6. Наследование в языке С++
- Модификаторы наследования
- Конструкторы и деструкторы при наследовании
- Пример построения классов и наследования
- Совместимость типов
7. Дружественные функции
- Переопределение операторов с помощью дружественных функций
8. Виртуальные методы
- Раннее и позднее связывание
- Виртуальные функции
- Полиморфизм и виртуальные методы
- Указатели на базовые классы
- Абстрактный класс
9. Шаблоны (параметризованные типы)
- Шаблоны функций
- Требования к фактическим параметрам шаблона
- Отождествление типов аргументов
- Шаблоны классов
- Шаблоны классов: не только для типов
- Наследование в шаблонах классов
10. Библиотека iostream
- Простое внесение
- Выражение извлечения
- Создание собственных функций внесения и извлечения
- Функции библиотеки iostream
- Манипуляторы ввода –вывода
- Файловые и строковые потоки
ВОПРОСЫ ДЛЯ САМОСТОЯТЕЛЬНОГО ИЗУЧЕНИЯ
- Виртуальные классы
- Обработка исключений
ПЕРЕЧЕНЬ ЛАБОРАТОРНЫХ ЗАНЯТИЙ (* отмечены задачи для любителей трудностей)
- Создание класса и объектов типа "полином" с динамическим выделением памяти под элементы, для которого определены основные операции: сложение, вычитание, присваивание, *умножение, *деление. Реализация различных типов конструкторов для одного типа, включая конструктор копирования. Использование переопределенных операторов потокового ввода-вывода для этого нового типа.
Иллюстрация на простом примере использования объектов нового типа.
- Создание нескольких (не менее двух) типов для графических объектов, используя механизм наследования от классов Point или Circle. (например: квадрат, прямоугольник, возможно закрашенный, круг, сектор, *3D- объекты и т.п.)
Иллюстрация на простом примере использования объектов нового типа.
- Создание двухуровневой иерархии классов, где в качестве родительского класса выступает абстрактный класс, на примере абстрактного типа "график функции". При этом вид функции определяется в производном классе. Реализация операций сложения функций и умножения на константу, используя дружественные функции.
Иллюстрация на простом примере использования объектов нового типа.
ЛИТЕРАТУРА
- Шилдт Герберт. Самоучитель С++ (2-ред)./Пер. с англ.-СПб.: BHV-Санкт-Петербург, 1997.-512с. (+дискета с примерами)
- Бруно Бабэ. Просто и ясно о Borland C++: Версии 4.0 и 4.5/ Пер. с англ. -М.:БИНОМ, 1994. - 400с.
- Страуструп Б. Язык программирования С++ (2-ред)./Пер. с англ.-М.: Радио и связь, 1995. - 352с.
- Клочков Д.П., Павлов Д.А. Введение в объектно-ориентированное программирование. / Учебно-методическое пособие. - Изд. Нижегор. ун-та, 1995. - 70с.
- Элиас М., Страуструп Б. Справочное руководство по языку С++ с комментариями. /Пер. с англ. -М.:Мир, 1992.- с.
КОНТРОЛЬНЫЕ ВОПРОСЫ
- Какие существуют механизмы для создания новых типов?
- В чем смысл декомпозиции при составлении программ?
- В чем различие между видами и методами (способами) абстракции?
- Классы операций абстракции данных. Полнота класса операций.
- Парадигма ООП. Специфика интерфейса ОО программ.
- Преимущества ООП.
- Понятие класса. Отношение "объект - класс".
- Понятие полиморфизма. Проявления полиморфизма.
- Механизм наследования.
- Модификатора доступа и наследования. Как изменяются атрибуты элементов класса при наследовании?
- Смысл инкапсуляции.
- В чем разница между struct, class и union?
- Что такое конструктор, деструктор и когда они вызываются?
- Что такое встраиваемая функция? В чем ее преимущества и недостатки?
- Какие два способа существуют для создания встраиваемой функции?
- Как можно передать в функцию в качестве аргумента адрес объекта?
- Что такое дружественная функция?
- Когда следует переопределять операторы с помощью дружественных функций, а когда с помощью функций элементов класса?
- Что происходит при присваивании одного объекта другому (без переопределенной операции =) и какие побочные эффекты могут возникнуть?
- При передаче объекта в функцию в качестве аргумента создается копия этого объекта. Изменение копии в теле функции не отражается на оригинале. Возможно ли нарушение этого правила?
- Какая функция может иметь доступ к защищенным членам одного класса? ... двух классов?
- Что такое указатель this. Приведите пример использования этого указателя.
- Для чего необходимы операторы new и delete. В чем их отличие от функций malloc() и free()?
- Что такое ссылка? Какое имеется преимущество при использовании ссылки в качестве параметра функции, а в чем недостаток? В чем разница между ссылкой и указателем?
- Назовите причины, по которым может понадобиться перегрузка конструкторов и деструкторов (в одном классе).
- Какова основная форма конструктора копирования и когда он вызывается?
- Что такое аргумент по умолчанию? Как аргумент по умолчанию связан с перегрузкой функций?
- Почему может потребоваться перегрузка оператора присваивания?
- Как можно ли изменить приоритет перегруженного оператора?
- Что такое виртуальная функция?
- Какие функции не могут быть виртуальными?
- Что такое абстрактный класс и чем может быть вызвана необходимость построений абстрактного класса?
- Чем виртуальные функции отличаются от перегружаемых?
- Раннего и позднее связывание.
- Совместимость типов. Какую роль в достижении совместимости объектов могут играть абстрактные классы?
- Почему шаблоны называют параметризованными типами?
- Когда следует в программе применять шаблоны, а когда нет?
- Чем шаблоны лучше макроподстановок?
- Для каких типов данных может применяться конкретный шаблон, а для каких нет?
- В чем разница между классом и шаблоном класса?
- Что может выступать в качестве параметра для шаблона класса?
- В чем основное преимущество использования библиотеки потокового ввода-вывода?
- Как работает операция внесения (на примере)?
- Что такое манипулятор ввода - вывода?
- Организация файлового и строкового потока.
|