
- •Рязанская государственная радиотехническая академия Объектно-ориентированное программирование
- •Рязань 2003
- •390005, Рязань, ул. Гагарина, 59/1.
- •1. Программирование линейных алгоритмов Основные понятия
- •Идентификаторы
- •Объявление переменных
- •Стандартные типы данных
- •Представление констант
- •Символьные константы
- •Строковые константы
- •Ввод – вывод данных
- •Математические функции
- •Контрольные вопросы
- •Варианты заданий
- •2. Программирование алгоритмов разветвляющейся структуры Операторы управления
- •Контрольные вопросы
- •Цикл с параметром
- •Контрольные вопросы
- •Варианты заданий
- •4. Массивы. Классы памяти переменных Классы памяти переменных
- •Распределение памяти
- •Массивы
- •Инициализация
- •Указатели
- •Связь одномерных массивов с указателями
- •Связь двумерных массивов с указателями
- •Динамические массивы
- •Контрольные вопросы
- •Варианты заданий
- •5. Функции пользователя
- •Передача параметров в функции
- •Шаблоны функций
- •Контрольные вопросы
- •Варианты заданий
- •6. Структуры, объединения, битовые поля Структуры
- •Объединение
- •Битовые поля
- •Контрольные вопросы
- •Варианты заданий
- •7. Файлы
- •Типовые операции с файлами
- •Функции форматного ввода и вывода данных
- •Определение длины файла:
- •Спецификаторы доступа
- •Конструкторы и деструкторы
- •Наследование
- •Наследование и контроль доступа
- •Указатель this
- •Перегрузка операций
- •Константные объекты и константные методы
- •Статические элементы класса
- •Виртуальные функции
- •Абстрактные классы
- •9. Варианты заданий на курсовое проектирование
- •Оглавление
Абстрактные классы
Абстрактные классы могут использоваться только в качестве базовых для других классов. Предполагается, что абстрактный класс содержит одну или несколько чистых виртуальных функций.
Определять объекты абстрактного класса нельзя, но можно определять ссылку или указатель на абстрактный класс. Нельзя использовать абстрактный класс в качестве параметра функции. Производный от абстрактного класса также считается абстрактным, если в нем не определена хотя бы одна чистая виртуальная функция.
Как всякий класс, абстрактный класс может иметь явно определенный конструктор. Из конструктора возможен вызов методов класса, но любые прямые или опосредованные обращения из конструктора к чистым виртуальным функциям приведут к ошибкам во время выполнения программы.
Механизм абстрактных классов разработан для представления общих понятий, которые в дальнейшем предполагается конкретизировать. Эти общие понятия обычно невозможно использовать непосредственно, но на их основе можно, как на базе, построить частные производные классы, пригодные для описания конкретных объектов.
Таким образом, механизм абстрактных классов используется при создании сложных иерархий наследования.
В качестве иллюстрации вышесказанного рассмотрим пример для расчета площади треугольника и прямоугольника:
// Создание абстрактного класса
# include <iostream.h>
class area
{double dim1, dim2; //размеры фигуры
public:
void setarea(double dim1,double dim2)
{dim1=d1;
dim2=d2;
}
void getdim(double &dim1,double &dim2)
{d1=dim1;
d2=dim2;
}
virtual double getarea()=0; //чистая виртуальная функция
};
class rectangle: public area
{ public:
double getarea()
{double d1,d2;
getdim(d1,d2);
return d1*d2;
}
};
class triangle: public area
{ public:
double getarea()
{double d1,d2;
getdim(d1,d2);
return 0.5*d1*d2;
}
};
int main()
{area *p;
rectangle r;
triangle t;
r.setarea(3.3,4.5);
t.setarea(4.0,5.0);
p=&r;
cout<< “Площадь прямоугольника:”<<p->getarea()<<’\n’;
p=&t;
cout<< “Площадь треугольника:”<<p->getarea()<<’\n’;
return 0;
}
Теперь то, что функция getarea() является чистой виртуальной, гарантирует ее обязательную подмену в каждом производном классе.
9. Варианты заданий на курсовое проектирование
Создать иерархию классов для реализации свойств и методов объектов из предметной области. В основной программе продемонстрировать работу всех методов.
Таблица 3.
№ |
Предметная область |
Объекты предметной области |
Основные методы классов |
|
Графические объекты |
Точка, окружность, прямая, прямоугольник, закрашенная область |
Перемещение, наложение, масштабирование |
|
Звездное небо |
Вращающееся звездное небо, расширяющееся звездное небо |
Добавление звезд, удаление звезд, изменение скорости движения звезд |
|
Окна в Windows |
Диалоговые окна, окна с дочерними документами, модальные диалоговые окна |
Перемещение, закрытие, открытие окон, наложение окон, изменение размера |
|
Часы |
Стрелочные часы, песочные часы, электронные часы |
Изменение времени, переход на летнее/зимнее время, изменение даты |
|
Комплексные числа |
Комплексные числа в обычной форме записи, показательной записи |
Выполнение действий: сложение, вычитание, деление, умножение, извлечение корня |
Продолжение таблицы 3.
№ |
Предметная область |
Объекты предметной области |
Основные методы классов |
|
Длинные целые числа |
Целые числа без знака в десятичной системе исчисления, длиной более 100 разрядов |
Выполнение действий: сложение, вычитание, деление, умножение |
|
Книги |
Художественные книги, учебные и методические пособия |
Добавление, удаление книг в библиотеку, поиск книг по различным параметрам |
|
Деревья |
Бинарные деревья, n-арные деревья, деревья поиска |
Добавление узла в дерево, удаление узла из дерева, поиск по дереву |
|
Языки разметки |
Языки разметки документов XML, HTML, MathML |
Получение количества узлов в документе, удаление и добавление узла, получение значение узла |
|
Животные |
Рыбы, птицы, млекопитающие |
Перемещение, питание, рождение, смерть |
|
Числа в различных системах исчисления |
Числа в системах исчисления с основанием 2, 8, 10, 16 |
Выполнение действий: сложение, вычитание, деление, умножение |
|
Архиваторы |
Rar, Zip, Arj |
Сжатие, извлечение, удаление данных, смена пароля |
|
Аудиотека |
Аудиотреки, музыкальные альбомы |
Добавление, удаление кассет и дисков, поиск книг по различным параметрам |
|
Видеотека |
Фильмы на VHS и DVD носителях |
Добавление, удаление видеокассет дисков, поиск книг по различным параметрам |
|
Компьютерные комплектующие |
Различные комплектующие для компьютера, совместимого с IBM PC AT |
Добавление комплектующего, удаление комплектующего, сборка, включение/выключение компьютера |
Окончание таблицы 3.
№ |
Предметная область |
Объекты предметной области |
Основные методы классов |
|
Шифрование |
Шифраторы с различными алгоритмами шифрования |
Шифрование, дешифрование, изменение ключа шифра, изменение алгоритма кодирования |
|
Алгоритмы |
Линейный, разветвляющийся, циклический алгоритм, блок операторов |
Добавление блока операторов, изменение блока операторов, добавление оператора трассировка программы |
|
Графические кнопки |
Обычные кнопки, кнопки с надписями, кнопки с изображениями |
Изменение размера кнопки, перемещение кнопки, изменение картинки и надписи, изменение положения картинки относительно надписи |
|
Шумы и помехи |
Аддитивная помеха, мультипликативная помеха |
Добавление шума, наложение шумов, удаление шума |
|
Картотека документов |
Различные финансовые платежные документы: счета, расходные и приходные ордера |
Поиск документа по его параметрам, формирование списка документов по различным условиям отбора, добавление документа, удаление документа из картотеки, изменение параметров документа |