Назад
Вперед
Содержание
Варианты задач
В каждом варианте создать абстрактный и его дочерние классы.
Абстрактные методы переопределить в дочерних классах.
В методе Main:
- Описать переменную абстрактного класса.
- В цикле из трех витков случайным образом получать значения.
- В зависимости от условия задачи присвоить описанной переменной объект одного из дочерних классов.
- Применить к созданному объекту переопределенные методы.
Вариант 1
Создать абстрактный класс Press (пресса) содержащий:
Поля: название, цена за единицу.
В классе должны быть абстрактные методы:
- метод SetPrice (без параметров) – установка цены.
- Метод Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
На его основе реализовать дочерние классы:
- Magazine - журнал,
- Book- книга.
Класс Magazine содержит:
Кроме полей родительского класса, содержит поля: тип журнала (глянцевый или нет ), а также количество номеров в год.
Конструктор с параметрами: название, тип журнала, количество номеров в год
Переопределить методы:
- SetPrice присваивает значение полю цена. Если журнал глянцевый, то 200. Если журнал обычный, то 100.
- Info формирует строку с значениями полей.
Класс Book содержит:
Кроме полей родительского класса содержит поля: автор, количество страниц, тип обложки (мягкая, твердая)
Конструктор с тремя параметрами: автор, название, количество страниц, тип обложки.
Переопределить методы:
- SetPrice присваивает значение полю цена.
Ценa книги = количество страниц * 0,2 + 5 (если обложка мягкая) или + 15
(если обложка твердая).
- Info формирует строку со значениями полей.
Отработка:
Вариант 2
Создать абстрактный класс Transport (транспорт) содержащий:
Поля:
- скорость;
- себестоимость перевозки груза;
- стоимость перевозки груза.
В классе должны быть абстрактные методы:
- метод Cost (без параметров) – вычисление стоимости перевозки груза.
- Метод Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
На его основе реализовать дочерние классы:
- Marine - морской транспорт,
- Ground - наземный транспорт.
Класс Marine содержит:
Все поля наследуются из родительского класса.
Конструктор с двумя параметрами: скорость и себестоимость перевозки груза.
Переопределить методы:
- Cost - вычисляет стоимость перевозки груза по формуле: себестоимость/скорость. Заполняет поле стоимость перевозки груза.
- Info формирует строку с значениями полей.
Класс Ground содержит:
Кроме полей родительского класса, содержит поле дорожный сбор.
Конструктор с тремя параметрами: скорость, себестоимость перевозки груза и дорожный сбор.
Переопределить методы:
- Cost - вычисляет стоимость перевозки груза по формуле: себестоимость/скорость+ дорожный сбор. Заполняет поле стоимость перевозки груза.
- Info формирует строку со значениями полей.
Отработка:
Вариант 3
Создать абстрактный класс Solution (уравнения) без полей
В классе должны быть абстрактные методы:
- Existence логический метод. Определяет, есть ли корни.
- Root, строка содержащая значения корней.
На его основе реализовать дочерние классы:
- Linear - линейное уравнение (по двум коэффициентам)
- Square - квадратное уравнение (по трем коэффициентам)
Класс Linear содержит:
Два поля – коэффициенты линейного уравнения ax+b=0.
Конструктор с двумя параметрами.
Переопределить методы Existence и Root.
Класс Square содержит:
Три поля – коэффициенты квадратного уравнения ax2+bx+c=0.
Конструктор с тремя параметрами.
Переопределить методы Existence и Root.
Отработка:
Вариант 4
Создать абстрактный класс Lines (линия) содержащий:
Поля: числа a,b, которые характеризуют линию.
В классе должны быть абстрактные методы:
- метод F(x,y)определяющий, лежит ли точка с координатами (х,y) на линии или нет.
- Метод Info - (без параметров), который возвращает строку, содержащую информацию об объекте.
На его основе реализовать дочерние классы:
- StraightLine - прямая. Уравнение прямой: y = ax + b
- Ellipse -эллипс. Уравнение эллипса:
x2/a2 + y2/b2 = 1
- Hyperbola - гипербола. Уравнение гиперболы:
x2/a2 - y2/b2 = 1
Во всех дочерних классах:
Все поля наследуются из родительского класса.
Конструктор с двумя параметрами, заполняющими поля a, b.
Переопределить методы: F(x,y) и Info.
Отработка 1:
Отработка 2:
Вариант 5
Создать абстрактный класс Oval без полей
В классе должны быть абстрактные методы:
- Square - вычисления площади,
- Length - вычисления длины линии,
- Str - возвращающий строку со значениями полей.
На его основе реализовать дочерние классы:
- Ellips - эллипс (по двум полуосям)
- Krug - круг (по радиусу)
Класс Ellips содержит:
Поля: числа a и b - полуоси эллипса
Конструктор с двумя параметрами.
Переопределить методы:
- Square - вычисления площади = a*b*pi
- Length -mвычисления длины линии =(a+b)*pi
- Str - возвращающий строку со значениями полей.
Класс Krug содержит:
Поле число r - радиус круга.
Конструктор с одним параметром.
Переопределить методы:
- Square - вычисления площади = pi*r2
- Length - вычисления длины линии =2*pi*r
- Str - возвращающий строку со значениями полей.
Отработка:
Вариант 6
Создать абстрактный класс Progression (прогрессия) содержащий:
Поля:
- первый член,
- разность (или знаменатель),
- n (номер члена или количество членов).
В классе должны быть абстрактные методы:
- вычисления n-го элемента,
- вычисления суммы n элементов прогрессии,
- возвращающий строку со значениями полей.
На его основе реализовать дочерние классы:
- Linear - арифметическая прогрессия
- Exponential - геометрическая прогрессия
Класс Linear содержит:
Все поля наследуются из родительского класса.
Конструктор с тремя параметрами: первый член, разность, n (номер члена или количество членов).
Переопределить все абстрактные методы
Формулы:
Класс Exponential содержит:
Все поля наследуются из родительского класса.
Конструктор с тремя параметрами: первый член, знаменатель, n (номер члена или количество членов).
Переопределить все абстрактные методы
Формулы:
Отработка:
Вариант 7
Создать абстрактный класс Triangle без полей
В классе должны быть абстрактные методы:
- Square - вычисления площади,
- Perimeter - вычисления периметра
- Str - возвращающий строку со значениями полей.
На его основе реализовать дочерние классы:
- Isosceles равнобедренный треугольник (по двум сторонам)
- Rectangular прямоугольный треугольник (по двум катетам)
- Equilateral равносторонний треугольник (по одной стороне)
Переопределить все абстрактные методы - Square, Perimeter, Str
Отработка 1:
Отработка 2:
Отработка 3:
Вариант 8
Создать абстрактный класс Student (студент) содержащий:
Поля: фамилия, количество посещенных занятий, логическое поле сдал: или не сдал зачет
В классе должны быть абстрактные методы:
- метод Test (без параметров) – логический метод сдал или не сдал зачет.
- Метод Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
На его основе реализовать дочерние классы:
- Ordinary - обычный студент,
- Clever - умный студент,
- Genius - гениальный студент.
Каждый дочерний класс содержит:
Все поля наследуются из родительского класса.
Конструктор с двумя параметрами: фамилия, количество посещенных занятий.
Переопределить абстрактные методы:
- Test. Заполняет логическое поле.
- Обычный студент сдает зачет, если посетил 20 занятий.
- Умный студент сдает зачет, если посетил больше 10 занятий
- Гениальный студент сдает зачет, если посетил хотя бы одно занятие.
- Info формирует строку с значениями полей.
Отработка:
Вариант 9
Создать абстрактный класс Carriage (железнодорожный вагон) содержащий:
Поля: цена за место, количество мест и общая сумма выручки от вагона
В классе должны быть абстрактные методы:
- метод Cost (без параметров) – вычисляет доход от вагона
- Метод Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
На его основе реализовать дочерние классы:
- General - общий вагон,
- Reserved - плацкартный вагон,
- Sleeping - купейный вагон.
Каждый дочерний класс содержит:
Все поля наследуются из родительского класса.
В классах Reserved и Sleeping есть собственное поле стоимость дополнительных услуг на одно место.
Переопределить абстрактные методы:
- Cost. Заполняет поле общая сумма выручки от вагона.
- В общем вагоне сумма выручки=цена*количество мест.
- В плацкартном вагоне сумма выручки=цена*количество мест+стоимость дополнительных услуг*количество мест*0.5
- В купейном вагоне сумма выручки=количество мест*(цена+стоимость дополнительных услуг)
- Info формирует строку с значениями полей.
Отработка:
Вариант 10
Создать абстрактный класс Body без полей
В классе должны быть абстрактные методы:
- вычисления площади поверхности,
- вычисления объема,
- возвращающий строку со значениями полей.
На его основе реализовать дочерние классы:
- Parallelepiped - прямоугольный параллелепипед (по трем ребрам),
- Cone - конус (по радиусу основания и высоте)
- Ball - cфера (по радиусу).
Переопределить методы вычисления площади поверхности и объема, а также формирование строки со значениями полей.
Сфера. Формулы:
- Площадь поверхности=4*pi*r2
- Объем=4/3*pi*r3
Конус. Формулы:
- Площадь поверхности=pi*r(r+ Sqrt(r*r + h * h));
- Объем=pi*r2*h/3
Параллелепипед. Формулы:
- Площадь поверхности=2(a*b+b*c+a*c)
- Объем=a*b*c
Отработка:
Вариант 11
Создать абстрактный класс Quadrangle (четырехугольник) без полей
В классе должны быть абстрактные методы:
- Square - вычисления площади,
- Diag - вычисления диагоналей,
- Str - возвращающий строку со значениями полей.
На его основе реализовать дочерние классы:
- Par параллелограмм (по двум сторонам и углу),
- Pryam прямоугольник (по двум сторонам),
- Rhombus ромб (по стороне и углу).
Переопределить методы Square, Diag, Str
Pомб. Формулы:
Параллелограмм. Формулы:
Отработка:
Вариант 12
Создать абстрактный класс Tax (налогоплательщик) содержащий:
Поля:
- Поле идентификационный код (четыре цифры);
- Поле год рождения;
- Поле доход;
- Поле налог.
В классе должны быть абстрактные методы:
- метод CalculateTax, вычисления налога. Метод заполняет поле налог. В параметре метода текущий год.
- Метод Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
На его основе реализовать дочерние классы:
- Ordinary, обычный налогоплательщик
- Privilege, имеющий льготы по налогам
Класс Ordinary содержит:
Все поля наследуются из родительского класса.
Конструктор, с тремя параметрами, присваивающий значения первым трем полям.
Переопределить методы:
- CalculateTax: Налог вычисляется так:
- Если возраст меньше 17 лет, то налог=0;
- Если доход меньше 1000, то налог=0;
- Если доход работы от 1000 до 10000 (включительно), то налог=20% от дохода;
- Если доход больше 10000, то налог=25% от дохода.
- Info формирует строку с значениями полей.
Класс Privilege содержит:
Кроме полей, которые наследуются из родительского класса, содержит логическое поле, указывающее, что это льготник.
В конструкторе класса использовать четыре параметра – три поля родительского класса и логическое поле дочернего.
Переопределить методы:
- CalculateTax: Налог вычисляется так:
- Если возраст меньше 17 лет, то налог=0;
- Если доход меньше 10000, то налог=0;
- Если доход работы от 10000 до 50000 (включительно), то налог=10% от дохода;
- Если доход больше 50000, то налог=20% от дохода.
- Info формирует строку со значениями полей.
Отработка:
Вариант 13
Создать абстрактный класс Airplane (самолет) содержащий:
Поля:
- модель
- максимальная скорость
- максимальная высота
- стоимость.
В классе должны быть абстрактные методы:
- метод Cost (без параметров) – вычисление стоимости самолета.
- Метод Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
На его основе реализовать дочерние классы:
- Passenger - пассажирский самолет,
- Bomber - бомбардировщик,
- Destroyer - истребитель.
Класс Passenger содержит:
Все поля наследуются из родительского класса.
Конструктор с тремя параметрами: модель, скорость и высота.
Переопределить методы:
- Cost вычисляет стоимость самолета=скорость*1000+высота*100. Заполняет поле стоимость.
- Info формирует строку с значениями полей.
Класс Destroyer содержит:
Все поля наследуются из родительского класса.
Конструктор с тремя параметрами: модель, скорость и высота.
Переопределить методы:
- Cost вычисляет стоимость самолета=скорость*3000+высота*200. Заполняет поле стоимость.
- Info формирует строку со значениями полей.
Класс Bomber содержит:
Кроме полей родительского класса содержит поле количество бомб.
Конструктор с четырьмя параметрами: модель, скорость, высота и количество бомб
Переопределить методы:
- Cost вычисляет стоимость самолета=скорость*1500+высота*150+ количество бомб*50. Заполняет поле стоимость.
- Info формирует строку со значениями полей.
Отработка:
Вариант 14
Создать абстрактный класс OfficeWorker (служащий) содержащий:
Поля:
В классе должны быть абстрактные методы:
- метод CalculatePay (без параметров) – вычисление зарплаты.
- метод CalculateBonus - (без параметров) вычисление премии.
- Метод Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
На его основе реализовать дочерние классы:
- Employee, служащий получающий фиксированную зарплату,
- Hourly, служащий получающий почасовую зарплату,
- Commissioned, служащий получающий определенный процент от выработки.
Класс Employee содержит:
Все поля наследуются из родительского класса.
Конструктор с двумя параметрами: фамилия и зарплата
Переопределить методы:
- CalculatePay возвращает значение поля зарплата,
- CalculateBonus, вычисляет премию по формуле = (зарплата)*0,25. Заполняет поле премия.
- Info формирует строку с значениями полей.
Класс Hourly содержит:
Кроме полей родительского класса содержит поля: количество отработанных часов и стоимость одного часа.
Конструктор с тремя параметрами: фамилия, количество отработанных часов и стоимость одного часа.
Переопределить методы:
- CalculatePay , вычисляет зарплату= количество отработанных часов*стоимость одного часа. Заполняет поле зарплата.
- CalculateBonus, возвращает значение поля премия. Премия всем по 200. Заполняет поле премия.
- Info формирует строку со значениями полей.
Класс Commissioned содержит:
Кроме полей родительского класса содержит поле сумма продаж.
Конструктор с двумя параметрами: фамилия и сумма продаж.
Переопределить методы:
- CalculatePay , вычисляет зарплату= 10% от суммы продаж. Заполняет поле зарплата.
- CalculateBonus, вычисляет премию= 20% от зарплаты. Заполняет поле премия.
- Info формирует строку со значениями полей.
Отработка:
Вариант 15
Создать абстрактный класс Lodger (квартиросъемщик) содержащий:
Поля:
- номер квартиры;
- предыдущее показание счетчика;
- текущее показание счетчика;
- площадь квартиры;
- плата по счетчику;
- плата за площадь;
- общая плата
В классе должны быть абстрактные методы:
- Метод OnMeter вычисляющий плату по счетчику. В параметре метода тариф.
- Метод OnSqr вычисляющий плату за площадь. В параметре метода тариф.
- метод Sum, вычисляющий итоговую сумму
- Метод Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
На его основе реализовать дочерние классы:
- Ordinary, обычный квартиросъемщик
- Privilege, имеющий льготы по оплате за квартиру
Класс Ordinary содержит:
Все поля наследуются из родительского класса.
Конструктор, с четырьмя параметрами, присваивающий значения первым четырем полям.
Переопределить методы:
- Метод OnMeter вычисляющий плату по счетчику. В параметре метода тариф. Плата по счетчику= тариф *( текущее показание счетчика - предыдущее показание счетчика). Метод заполняет соответствующее поле.
- Метод OnSqr вычисляющий плату за площадь. В параметре метода тариф. Плата за площадь= тариф*площадь квартиры. Метод заполняет соответствующее поле.
- метод Sum, вычисляющий итоговую сумму = Плата по счетчику+ Плата за площадь;
- Info формирует строку с значениями полей.
Класс Privilege содержит:
Кроме полей, которые наследуются из родительского класса, есть еще два собственных поля: логическое поле, указывающее, что это льготник и поле – размер субсидии.
Конструктор, с шестью параметрами, присваивающий значения первым четырем полям базового класса и двум полям собственного класса.
Переопределить методы:
- Метод OnMeter вычисляющий плату по счетчику. В параметре метода тариф. Плата по счетчику= тариф *( текущее показание счетчика - предыдущее показание счетчика)*0.75. Метод заполняет соответствующее поле.
- Метод OnSqr вычисляющий плату за площадь. В параметре метода тариф. Плата за площадь= тариф*площадь квартиры*0.75. Метод заполняет соответствующее поле.
- метод Sum, вычисляющий итоговую сумму = Плата по счетчику+ Плата за площадь-субсидия;
- Info формирует строку со значениями полей.
Отработка:
Назад
Вперед
Содержание