Назад
Вперед
Содержание
Варианты задач
В каждом варианте создать родительский и дочерний классы.
Виртуальные методы в родительском классе переопределить в дочернем классе.
В виртуальном и в переопределяемом методе должны быть комментарии, которые идентифицирует метод.
В методе Main:
- Описать переменную родительского класса.
- В цикле из трех витков случайным образом получать значения.
- В зависимости от условия задачи присвоить описанной переменной объект или родительского класса или дочернего класса.
- Применить к созданному объекту виртуальные методы.
- Если нужно, применить к созданному объекту методы родительского класса, которые наследуются.
- Если в дочернем классе есть собственные методы, то нужно создать еще один объект дочернего класса и применить к нему собственные методы.
Вариант 1
Создать класс Pryam, описывающий прямоугольник по двум сторонам и содержащий:
- Поле длина первой стороны;
- Поле длина второй стороны;
- Конструктор, с двумя параметрами, присваивающий значения этим полям.
- Виртуальный метод Sqr – нахождение площади прямоугольника.
- Виртуальный метод Diag –нахождение диагонали прямоугольника.
Создать дочерний класс Kvadrat, описывающий квадрат и содержащий:
- Конструктор. В конструкторе класса использовать один параметр – сторону квадрата.
- Переопределить виртуальный метод Sqr из родительского класса.
- Переопределить виртуальный метод Diag из родительского класса.
- Собственный метод Radius, вычисляющий радиус вписанной окружности. Радиус равен половине стороны.
Отработка:
Вариант 2
Создать класс Ellips, описывающий эллипс и содержащий:
- Поле a - длина большей полуоси;
- Поле b - длина меньшей полуоси;
- Конструктор, с двумя параметрами, присваивающий значения этим полям.
- Виртуальный метод Sqr - нахождение площади эллипса (произведение двух его полуосей на число пи);
- Метод Eks–нахождение эксцентриситета:
Создать дочерний класс Krug описывающий круг и содержащий:
- Конструктор. В конструкторе класса использовать один параметр r– радиус круга.
- Переопределить виртуальный метод Sqr из родительского класса.
- Собственный метод Leng вычисления длины окружности.
Отработка:
Вариант 3
Создать класс Parall, описывающий параллелепипеды и содержащий:
- Поле a - длина;
- Поле b - ширина;
- Поле c - высота;
- Конструктор, с тремя параметрами, присваивающий значения этим полям.
- Виртуальный метод Sqr - площадь поверхности параллелепипеда =2*(a*b+b*c+a*c);
- Виртуальный метод V- объем параллелепипеда = a*b*c.
Создать дочерний класс Kub описывающий куб содержащий:
- Конструктор. В конструкторе класса использовать один параметр – ребро куба.
- Переопределить виртуальный метод Sqr. Площадь вычислять по формуле площадь=6*a*a.
- Переопределить виртуальный метод V. Площадь вычислять по формуле площадь=6*a*a.
- Добавить собственный метод Radius вычисления радиуса шара, описанного вокруг куба. Радиус шара равен:
Отработка:
Вариант 4
Создать класс Romb, описывающий ромбы по его диагоналям и содержащий:
- Поле d1 - первая диагональ
- Поле d2 - вторая диагональ
- Конструктор, с двумя параметрами, присваивающий значения этим полям.
- Метод Sqr - площадь ромба = d1*d2/2;
- Виртуальный метод Side - вычисление стороны ромба
Создать дочерний класс Kvadrat, описывающий квадрат и содержащий:
- Конструктор. В конструкторе класса использовать один параметр – диагональ квадрата.
- Переопределить виртуальный метод Side:
- Собственный метод Radius, вычисляющий радиус описанной окружности. Радиус равен половине диагонали.
Отработка:
Вариант 5
Создать класс Par, описывающий параллелограмм по двум сторонам и углу, и содержащий:
- Поле длина первой стороны;
- Поле длина второй стороны;
- Поле угол между сторонами (в радианах)
- Конструктор, с тремя параметрами, присваивающий значения этим полям. В конструкторе перевести угол из градусов в радианы.
- Виртуальный метод Sqr - нахождение площади параллелограмма (произведение двух его сторон на синус угла между ними);
- Метод Diag –нахождение диагоналей параллелограмма по теореме косинусов. Метод должен возвращать одну диагональ через return, а вторую через параметр с атрибутом out.
Создать дочерний класс Romb, описывающий ромб и содержащий:
- Конструктор. В конструкторе класса использовать два параметра – сторону ромба и угол между сторонами.
- Переопределить виртуальный метод Sqr - нахождение площади ромба (квадрат стороны на синус угла между сторонами);
- Описать собственный метод Radius, вычисляющий радиус вписанной окружности.
Отработка:
Вариант 6
Создать класс Cylinder, описывающий цилиндры и содержащий:
- Поле r – радиус основания;
- Поле h - высота;
- Конструктор, с двумя параметрами, присваивающий значения этим полям.
- Виртуальный метод Sqr - площадь всей поверхности цилиндра
- Виртуальный метод V- объем цилиндра
Создать дочерний класс Equilateral, описывающий равносторонний цилиндр (диаметр основания равен высоте) и содержащий:
- Конструктор. В конструкторе класса использовать один параметр – радиус основания.
- Переопределить виртуальный метод Sqr. Площадь вычислять по формуле
- Переопределить виртуальный метод V. Объем вычислять по формуле
- Добавить собственный метод Volume вычисления объема шара, вписанного в цилиндр. Объем шара равен:
Отработка:
Вариант 7
Создать класс Employee, описывающий сотрудника фирмы и содержащий:
- Поле идентификационный код (четыре цифры);
- Поле год принятия на работу;
- Поле оклад;
- Поле премия;
- Конструктор, с тремя параметрами, присваивающий значения первым трем полям.
- Метод Print – вывод значений полей на экран.
- Виртуальный метод Bonus, вычисления премии. Метод заполняет поле премия. В параметре метода текущий год. Премия начисляется так:
- Если стаж работы меньше 5 лет, то премия=10% от оклада.
- Если стаж работы от 5 до 10 (включительно), то премия=15% от оклада
- Если стаж работы больше 10, то премия=20% от оклада
Создать класс Vip, дочерний к Employee, описывающий Vip менеджера и содержащий:
- Логическое поле, указывающее, что это Vip сотрудник.
- Конструктор. В конструкторе класса использовать четыре параметра – три поля родительского класса и логическое поле дочернего.
- Переопределяется метод Bonus. Метод заполняет поле премия. Премия начисляется так:
- Если стаж работы меньше 5 лет, то премия=20% от оклада.
- Если стаж работы от 5 до 10 (включительно), то премия=30% от оклада
- Если стаж работы больше 10, то премия=50% от оклада
Отработка:
Вариант 8
Создать класс Triangle, описывающий треугольник по трем его сторонам и содержащий:
- Поле длина первой стороны;
- Поле длина второй стороны;
- Поле длина третьей стороны;
- Конструктор, с тремя параметрами, присваивающий значения этим полям.
- Метод Print – вывод значений полей на экран.
- Метод Perimeter –нахождение периметра треугольника.
- Виртуальный метод Sqr –нахождение площади треугольника по формуле Герона.
- Логический метод Exists – условие существования треугольника.
Создать дочерний класс Equilateral, описывающий равносторонний треугольник и содержащий:
- Конструктор. В конструкторе класса использовать один параметр – сторона равностороннего треугольника.
- Переопределяем метод Sqr– вычисление площади равностороннего треугольника по формуле
- Описать собственный метод Radius, вычисляющий радиус вписанной окружности:
Отработка:
Вариант 9
Создать класс PointSpace, описывающий точку в пространстве и содержащий:
- Поле координата x;
- Поле координата y;
- Поле координата z;
- Конструктор, с тремя параметрами, присваивающий значения этим полям.
- Метод Print – вывод значений полей на экран.
- Виртуальный метод Leng –нахождение расстояния от этой точки до начала координат.
Создать дочерний класс PointPlane, описывающий точки на плоскости и содержащий:
- Конструктор. В конструкторе класса использовать два параметра – координаты точки на плоскости. Третьей координате присвоить 0.
- Переопределяем метод Leng –нахождение расстояния от этой точки до начала координат
Отработка:
Вариант 10
Создать класс Triangle, описывающий треугольник по двум сторонам и углу между ними, и содержащий:
- Поле длина первой стороны;
- Поле длина второй стороны;
- Поле угол между сторонами (в радианах)
- Поле c- длина третьей стороны;
- Поле p - полупериметр.
- Конструктор, с тремя параметрами (две стороны и угол), присваивающий значения всем полям.
В конструкторе перевести угол из градусов в радианы, а также вычислить величину третьей стороны и полупериметр.
Сторону определять по теореме косинусов:
- Виртуальный метод Sqr - нахождение площади треугольника по формуле Герона.
- Метод Radius–нахождение радиуса вписанной окружности треугольника.
Создать дочерний класс Rectangular, описывающий прямоугольный треугольник и содержащий:
- Конструктор. В конструкторе класса использовать два параметра – катеты прямоугольного треугольника. Углу присвоить значение pi/2
- Переопределить виртуальный метод Sqr, вычисляющий площадь прямоугольного треугольника как половину произведения его катетов.
- Описать собственный метод RadiusOp, вычисляющий радиус описанной окружности:
Отработка:
Вариант 11
Создать класс Tax, описывающий налогоплательщика и содержащий:
- Поле идентификационный код (четыре цифры);
- Поле год рождения;
- Поле доход;
- Поле налог.
- Конструктор, с тремя параметрами, присваивающий значения первым трем полям.
- Метод Print – вывод значений всех полей на экран.
- Виртуальный метод CalculateTax, вычисления налога. Метод заполняет поле налог. В параметре метода текущий год. Налог вычисляется так:
- Если возраст меньше 17 лет, то налог=0;
- Если доход меньше 1000, то налог=0;
- Если доход работы от 1000 до 10000 (включительно), то налог=20% от дохода;
- Если доход больше 10000, то налог=25% от дохода.
Создать класс Privilege, дочерний к Tax, описывающий льготника и содержащий:
- Логическое поле, указывающее, что это льготник.
- Конструктор. В конструкторе класса использовать четыре параметра – три поля родительского класса и логическое поле дочернего.
- Переопределить метод CalculateTax:
- Если возраст меньше 17 лет, то налог=0;
- Если доход меньше 10000, то налог=0;
- Если доход работы от 10000 до 50000 (включительно), то налог=10% от дохода;
- Если доход больше 50000, то налог=20% от дохода.
Отработка:
Вариант 12
Создать класс Par, описывающий параллелограмм и содержащий:
- Поле длина первой стороны;
- Поле длина второй стороны;
- Поле угол между сторонами (в радианах)
- Конструктор, с тремя параметрами, присваивающий значения этим полям. В конструкторе перевести угол из градусов в радианы.
- Виртуальный метод Sqr - нахождение площади параллелограмма (произведение двух его сторон на синус угла между ними);
- Метод Diag –нахождение диагоналей параллелограмма по теореме косинусов. Метод должен возвращать одну диагональ через return, а вторую через параметр с атрибутом out.
Создать дочерний класс Pryam описывающий прямоугольник, содержащий:
- Конструктор. В конструкторе класса использовать два параметра – стороны прямоугольника (третьему полю присвоить значение pi/2).
- Переопределить виртуальный метод Sqr. Площадь прямоугольника вычислять как произведение его сторон.
- Описать собственный метод Radius, вычисляющий радиус описанной окружности:
Отработка:
Вариант 13
Создать класс Lodger, описывающий рядовых плательщиков за квартиру и содержащий:
- Поле номер квартиры;
- Поле предыдущее показание счетчика;
- Поле текущее показание счетчика;
- Поле площадь квартиры;
- Поле плата по счетчику;
- Поле плата за площадь;
- Конструктор, с четырьмя параметрами, присваивающий значения первым четырем полям.
- Метод OnMeter вычисляющий плату по счетчику. В параметре метода тариф.
Плата по счетчику= тариф *( текущее показание счетчика - предыдущее показание счетчика).
Метод заполняет соответствующее поле.
- Метод OnSqr вычисляющий плату за площадь. В параметре метода тариф.
Плата за площадь= тариф*площадь квартиры. Метод заполняет соответствующее поле.
- Метод Print. Выводит на экран всю информацию, кроме итоговой суммы.
- Виртуальный метод Sum, вычисляющий итоговую сумму= Плата по счетчику+ Плата за площадь;
- Виртуальный метод PrintSum. Выводит на экран итоговую сумму оплаты.
Создать дочерний класс PrivilegeMan, описывающий плательщиков за квартиру, которые получают субсидию и содержащий:
- Логическое поле, указывающее, что это льготник.
- Поле – размер субсидии.
- Конструктор. В конструкторе класса использовать шесть параметров: четыре из родительского класса и два заполняющие собственные поля.
- Переопределить виртуальный метод Sum. Сумму вычислять так: Плата по счетчику+ Плата за площадь-Субсидия;
- Переопределить виртуальный метод PrintSum. Выводить на экран итоговую сумму и субсидию.
Отработка:
Вариант 14
Создать класс Avto , описывающий автомобиль и содержащий:
- Поле марка;
- Поле скорость;
- Поле стоимость;
- Конструктор с двумя параметрами: марка и скорость.
- Виртуальный метод метод Cost (без параметров) – возвращает стоимость автомобиля, рассчитываемую по формуле скорость * 100 и присваивает это значение полю стоимость.
- Виртуальный метод Update - обновление (без параметров и без возвращаемого значения), увеличивающий скорость на 10.
- Виртуальный метод Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте: Марка, Скорость и Стоимость.
Создать класс Vip, дочерний к Avto, описывающий вип автомобиль и содержащий:
Поле стоимость тюнинга;
Конструктор с тремя параметрами: марка, скорость и стоимость тюнинга.
Переопределить метод Cost, который возвращает число, равное скорость * 200+стоимость тюнинга.
Переопределить метод Update, который увеличивает скорость на 20 км/ч и тюнинг на 1000.
Переопределить метод Info, который возвращает строку, содержащую информацию об объекте: Марка, Скорость, Стоимость автомобиля и Стоимость тюнинга.
Создать класс Truck, дочерний к Avto, описывающий грузовик и содержащий:
Поле грузоподъемность;
Конструктор с тремя параметрами: марка, скорость и грузоподъемность.
Переопределить метод Cost, который возвращает число, равное
скорость * 150 + грузоподъемность * 20.
Переопределить метод Update, который увеличивает скорость на 15 км/ч и грузоподъемность на 1 тонну.
Переопределить метод Info, который возвращает строку, содержащую информацию об объекте: Марка, Скорость, Стоимость и грузоподъёмность
В главной программе:
Случайным образом в цикле создавать автомобили разных классов со случайной скоростью, для грузовика с грузоподъемностью, для випа стоимостью тюнинга. Применять к ним методы Cost, Update и Info.
Отработка 1:
Отработка 2:
Вариант 15
Создать класс Employee , описывающий служащего и содержащий:
- Поле фамилия;
- Поле заплата;
- Поле премия;
- Конструктор с двумя параметрами: фамилия и зарплата.
- Виртуальный метод метод CalculatePay (без параметров) – возвращает зарплату.
- Виртуальный метод CalculateBonus - (без параметров) возвращает значение поля премия. Вычисляет премию по формуле=(зарплата)*0,25 и присваивает это значение соответствующему полю.
- Виртуальный метод Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте: фамилия, зарплата и премия.
Создать класс Hourly, дочерний к Employee , описывающий служащего с почасовой оплатой и содержащий:
Поле количество отработанных часов;
Поле стоимость одного часа.
Конструктор с тремя параметрами: фамилия, стоимость одного часа и количество отработанных часов.
Переопределить метод CalculatePay, который вычисляет и возвращает зарплату= (стоимость одного часа) * (количество отработанных часов)
Переопределить метод CalculateBonus, который вычисляет и возвращает премию=200.
Создать класс Commissioned, дочерний к Employee , описывающий служащего с комиссионной оплатой и содержащий:
Поле количество проданных товаров;
Поле плата за продажу единицы товара.
Конструктор с тремя параметрами: фамилия, ставка, плата за продажу единицы товара и количество проданных товаров.
Переопределить метод CalculatePay, который вычисляет и возвращает зарплату= ставка+(плата за продажу единицы товара) * (количество проданных товаров)
Переопределить метод CalculateBonus, который вычисляет и возвращает премию=100*( количество проданных товаров).
В главной программе:
Случайным образом в цикле создавать сотрудников разных классов со случайными значениями: ставка (1000, 2000), стоимость 1 часа (100,300), количество отработанных часов (6, 12), количество проданных товаров (10, 30), оплата за единицу товара (100, 200) . Применять к ним методы CalculatePay, CalculateBonus и Info.
Отработка 1:
Отработка 2:
Назад
Вперед
Содержание