Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Задания для выполнения лабораторной работы №14.




«Полиморфизм и виртуальные функции»

 

Разработайте программу на языке С++, используя полиморфизм и виртуальные функции. При создании абстрактного базового класса, определите в нем чистые виртуальные функции. Эти функции определяются в производных классах. В базовых классах должны быть объявлены чистые виртуальные функции ввода/вывода, которые реализуются в производных классах. Вызывающая программа должна продемонстрировать все варианты вызова виртуальных функций с помощью указателей на базовый класс. Напишите функцию вывода, получающую параметры базового класса по ссылке и демонстрирующую виртуальный вызов.

Вариант 1. Создайте класс Point (точка на плоскости), характеризующийся двумя координатами. Создайте производный класс ColoredPoint (цветная точка), в котором добавить поле, отвечающее за цвет точки. Разработайте программу, в которой продемонстрирован доступ к методам производного класса ColoredPoint с помощью указателя на базовый класс Point.

Вариант 2. Создайте абстрактный базовый класс Pet (домашний питомец), в котором определено поле, соответствующее имени питомца. Создайте производные классы Cat (кошка) Dog (собака). В программе определите массив указателей на объекты базового класса, которые проинициализированы объектами производных классов.

Вариант 3. Создайте абстрактный класс Figure (геометрическая фигура), в котором определены две чисто виртуальные функции: вычисление площади и периметра. Создайте иерархию классов, которые наследуются от данного класса. Иерархия классов должна включать следующие классы: Triangle (треугольник), Circle (окружность), Parallelogram (параллелограмм), Rectangle (прямоугольник), Square (квадрат). Разработайте программу, в которой множество геометрических фигур хранится в виде массива. Организуйте вывод на экран значений периметра и площади для каждой геометрической фигуры.

Вариант 4. Создайте абстрактный базовый класс Number (число) с виртуальными методами – арифметическими операциями сложения, вычитания, умножения, деления, возведения в степень, получения остатка от деления. Создайте производные классы Integer (целое) и Real (действительное).

Вариант 5. Создайте абстрактный базовый класс Function (функция) с виртуальными методами вычисления значения функции в заданной точке x и вывода результата на экран. Определите производные классы CubePolinom, Hyperbola с собственными функциями вычисления y в зависимости от входного параметра x. Уравнение полинома: . Уравнение гиперболы: .

Вариант 6. Создайте абстрактный базовый класс Integer (целое) с виртуальными арифметическими операциями и функцией вывода на экран. Определите производные классы Decimal (десятичное) и Binary (двоичное), реализующие собственные арифметические операции и функцию вывода на экран. Число представляется массивом, каждый элемент которого – цифра.

Вариант 7. Издательская компания продает книги и аудио версии печатной продукции. Создайте класс Publication (публикация), хранящий название (строка) и цену (тип float) публикации. Создайте два порожденных класса: Book (книга), в котором происходит изменение счетчика страниц (тип int) и Tape (лента), в котором происходит изменение счетчика записанных на кассету минут. Каждый из классов должен иметь метод getdata(), запрашивающий информацию у пользователя, и putdata() для вывода данных на экран.

Вариант 8. Создайте абстрактный базовый класс Series (прогрессия) с виртуальными функциями вычисления элемента прогрессии и суммы пргрессии. Определите производные классы: Linear (арифметическая) и Exponential (геометрическая). Арифметическая прогрессия . Сумма арифметической прогрессии: . Геометрическая прогрессия: Сумма геометрической прогрессии: .

Вариант 9. Создайте абстрактный класс Norm (норма) с виртуальной функцией вычисления нормы и модуля. Определите производные классы Complex, Vector3D с собственными функциями вычисления нормы и модуля. Модуль для комплексного числа вычисляется как корень из суммы квадратов действительной и мнимой частей; норма для комплексных чисел вычисляется как модуль в квадрате. Модуль вектора вычисляется как корень квадратный из суммы квадратов координат; норма вектора вычисляется как максимальное из абсолютных значений координат

Вариант 10. Создайте абстрактный базовый класс Pair (пара чисел) с виртуальными арифметическими операциями. Создайте производные классы FazzyNumber для работы с нечеткими числами, которые представляются тройками чисел : для чисел и арифметические операции выполняются по следующим формулам:

- сложение

- вычитание

- умножение

- обратное число

- деление и Fraction для работы с дробными числами (число представляется двумя полями: целая часть – длинное целое со знаком, дробная часть – беззнаковое короткое целое) с арифметическими операциями сложения, вычитания, умножения и сравнения

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных