Цель задания
- Изучение механизма динамического связывания.
- Получение навыков в использовании виртуальных функций.
- Изучение принципов построения абстрактных базовых классов и производных классов, созданных на основе базовых.
- Получение навыков в разработке абстрактных классов с применением чисто виртуальных функций, в построении производных классов с использованием открытого наследования.
Минимальные задания:
ВАРИАНТЫ МИНИМАЛЬНОГО ЗАДАНИЯ 4.1
1. Имеется первичный (основной) базовый класс A:
class A {
int i;
char c;
char v[10];
public:
A(int ni=0,char nc=’*’) {cout<<endl<<«Конструктор класса A «; i=ni; c=nc;}
~A() {cout<<endl<<«Деструктор класса A «;} };
Реализуйте иерархии классов, представленные «деревьями».
Член-данное класса В1: вещественное двойной точности. Член-данные класса В2: вещественное. Член-данное класса С: длинное целое. Классы B1, B2, C должны содержать соответствующие конструкторы и деструкторы аналогичные классу A. Напишите демонстрационную программу, которая поочередно создает объекты классов A, B1, B2, C и выдает их размеры в памяти. Объясните полученные результаты.
2. Составить программу с использованием множественного наследования для изображения на экране дисплея прямоугольника, с текстом внутри, следующего содержания: «GRUPPA 417415». При составлении программы использовать иерархию классов:
Класс Point должен быть виртуальным базовым классом. Для всех классов иерархии определите конструкторы и член-функции в целях перемещения, показа и стирания соответствующих объектов.
Класс Point должен содержать член-данные, характеризующие координаты и цвет точки. Класс Rect должен содержать член-данные, характеризующие координаты левого вернего и правого нижнего углов. Класс Message должен содержать член-данные, характеризующие тип шрифта и адрес сообщения в памяти. Класс MR может не содержать собственных член-данных.
3. Напишите программу создания базового класса num. В этом классе должно храниться целое и определена виртуальная функция shownum( ). Создайте два производных класса outhex и outoct, которые наследуют класс num. Функция shownum( ) должна быть переопределена в производных классах так, чтобы осуществлять вывод на экран значений, в шестнадцатеричной и восьмеричной системах счисления соответственно.
4. Напишите программу, в которой базовый класс dist используется для хранения в переменной типа doubleрасстояния между двумя точками. В классе dist создайте виртуальную функцию trav_time( ), которая выводит на экран время, необходимое для прохождения этого расстояния с учетом того, что расстояние задано в милях, а скорость равна 60 миль в час. В производном классе metricпереопределите функцию trav_time( ) так, чтобы она выводила на экран время, необходимое для прохождения этого расстояния, считая теперь, что расстояние задано в километрах, а скорость равна 100 километров в час.
5. Напишите программу создания базового класса area. В этом классе должны храниться две переменные типа double, определяющие размеры фигуры (например, высота и ширина), определена функция setar( ),задающая значения переменным, и определена виртуальная функция getar( ). Создайте два производных класса rectangle и triangle, которые наследуют класс area. Функция getar( ) должна быть переопределена в производных классах так, чтобы возвращать площадь фигуры, вид которой задается в производном классе.
6. Создать иерархическую структуру классов “точка”, “четырехугольник”, “линия”, “окружность”, “полигон”. Определить для них следующие операции:
- прорисовки;
- перемещения с заданной скоростью в заданном направлении;
- вращения вокруг заданной точки;
- масштабирования.
Организовать движение этих фигур до нажатия клавиши.
7. Разработать программу, моделирующую поведение двух стай рыб, одна из которых является хищником для другой. Представители обеих стай могут “видеть” друг друга в заданном радиусе, изменять в определенных пределах скорость и направление движения. Для стай определены коэффициенты естественной смертности и рождаемости. “Хищники” могут преследовать и “поедать” “жертв”, если окажутся в непосредственной близости. Для визуализации модели воспользуйтесь классами, определенными в предыдущей задаче (“точка”, “четырехугольник”, “линия”, “окружность”, “полигон”).
8. Создать иерархию классов для моделирования взаимодействия “Магазин-склад- Заказчик”. В распоряжении магазина имеется:
- Склад с товарами различных наименований, стоимости и веса;
- Гараж с машинами различной грузоподъемности, вместительности и потребляемой мощности.
В магазин поступают заказы на поставку определенного количества товаров различных наименований в заданный район (задается как расстояние между магазином и районом). Магазин должен выбрать наиболее подходящее транспортное средство (учитывать, что машины могут быть заняты другими заказчиками) и определить счет за поставку товара.
9. Создать иерархию классов следующих элементов интерфейса: “Окно”, “Кнопка”, ‘’Меню”, “Окно редактирования”, ‘Окно вывода текста или графики”, “Кнопка-перключатель”, “Кнопка-Активизатор”, “Радиокнопка”. С помощью созданных классов построить интерфейс к задаче о двух стаях рыб
10. Создать иерархию классов и запрограммировать компьютерную игру “Морской бой”. Игровое поле разбивается на клетки. Палуба корабля занимает одну клетку. Кораблем считается совокупность смежных клеток. Допускаются четыре категории кораблей: одно-, двух-, трех- и четырехпалубные. Двух-, трех- и четырехпалубные корабли могут иметь всевозможные конфигурации и ориентации на игровом поле. Не допускается размещение кораблей в смежных клетках.
Методические указания для выполнения ЗАДАНИЯ 4.2
Каждое задание состоит из двух частей. Одна часть общая для всех вариантов описана в преамбуле. Вторая часть индивидуальная описана в нумерованном списке.
Преамбула. Используя абстрактный базовый класс «фигура», разработанный самостоятельно, определить класс, описанный ниже. Предусмотреть следующие действия с объектами создаваемого класса:
- динамическое создание объектов, в том числе создание массивов объектов;
- динамическое уничтожение объектов;
- изменение параметров объекта (цвет, размер, координаты и т.п.);
- отображение объектов на экране.
ВАРИАНТЫ МИНИМАЛЬНОГО ЗАДАНИЯ 4.2
- Окружность с начерченным радиусом.
- Эллипс с начерченными диаметрами.
- Квадрат с начерченными диагоналями.
- Треугольник.
- Правильный шестиугольник.
- Прямоугольник с начерченными диагоналями.
- Окружность, вписанная в квадрат.
- Эллипс, вписанный в прямоугольник.
- Равнобедренный треугольник.
- Ромб с начерченными диагоналями.
Прикрепленные файлы: |
|
|---|---|
|
Администрация сайта не рекомендует использовать бесплатные работы для сдачи преподавателю. Эти работы могут не пройти проверку на уникальность. Узнайте стоимость уникальной работы, заполните форму ниже: Узнать стоимость |
|
Скачать файлы: |
|
|
|
