Назад
Вперед
Содержание
Варианты задач
В каждом варианте создать интерфейс и реализовать его в классах, его наследующих.
Добавить в свой проект стандартные интерфейсы ICloneable и IComparable.Необходимо дать возможность сортировать один из объектов, а также дать возможность создавать копии другого объекта (по выбору).
В методе Main:
- Описать переменную типа интерфейс.
- Создать объекты каждого дочернего класса.
- В зависимости от условия задачи присвоить описанной переменной объект одного из дочерних классов.
- Применить к созданному объекту реализованные методы интерфейса.
Вариант 1
Создать интерфейс ITransport (транспорт) содержащий:
Свойства:
- скорость;
- себестоимость перевозки груза;
- стоимость перевозки груза.
В классе должны быть методы:
- Cost (без параметров) – вычисление стоимости перевозки груза.
- Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
Создать классы:
- Marine (морской транспорт), реализующий интерфейс ITransport.
- Ground (наземный транспорт),являющейся дочерним классом класса Marine .
Класс Marine содержит:
Конструктор с двумя параметрами: скорость и себестоимость перевозки груза.
Реализовать методы:
- Cost - вычисляет стоимость перевозки груза по формуле: себестоимость/скорость. Заполняет поле стоимость перевозки груза.
- Info формирует строку с значениями полей.
Класс Ground содержит:
Поле дорожный сбор.
Конструктор с тремя параметрами: скорость, себестоимость перевозки груза и дорожный сбор.
Переопределить методы родительского класса:
- Cost - вычисляет стоимость перевозки груза по формуле: себестоимость/скорость+ дорожный сбор.
- Info формирует строку со значениями полей.
Отработка:
Вариант 2
Создать интерфейс IPress (пресса) содержащий:
Свойства: название, цена за единицу, автор, количество страниц, тип обложки.
Методы:
- SetPrice (без параметров) – установка цены.
- Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
Класс Book должны реализовать интерфейс IPress:
Создать классы:
- Класс Book, который должен реализовать интерфейс IPress:
- Класс Magazine - журнал,который будет являться дочерним классом класса Book.
Класс Book содержит:
Конструктор с тремя параметрами: автор, название, количество страниц, тип обложки.
Реализует методы:
- SetPrice присваивает значение полю цена.
Ценa книги = количество страниц * 0,2 + 5 (если обложка мягкая) или + 15
(если обложка твердая).
- Info формирует строку со значениями полей.
Класс Magazine, содержит:
Кроме свойств родительского класса, содержит поле: количество номеров в год.
Конструктор с параметрами:автор, название, количество страниц, тип обложки, количество номеров в год.
Реализовать методы:
- SetPrice присваивает значение полю цена. Если тип обложки глянцевая, то 200. Если нет, то 100.
- Info формирует строку с значениями полей.
Отработка:
Вариант 3
Создать интерфейс ILines (линия) содержащий:
Свойства: числа a,b, которые характеризуют линию.
В классе должны быть методы:
- F(x,y)определяющий, лежит ли точка с координатами (х,y) на линии или нет.
- Info - (без параметров), который возвращает строку, содержащую информацию об объекте.
Создать классы,реализующие интерфейс ILines:
- StraightLine - прямая. Уравнение прямой: y = ax + b
- Ellipse -эллипс. Уравнение эллипса: x2/a2 + y2/b2 = 1
- Hyperbola - гипербола. Уравнение гиперболы:x2/a2 - y2/b2 = 1
Во всех классах, реализующих интерфейс:
Конструктор с двумя параметрами, заполняющими поля a, b.
Реализовать методы: F(x,y) и Info.
Отработка 1:
Отработка 2:
Вариант 4
Создать интерфейс ISolution (уравнения)
В классе должны быть свойства:
- коллекция коэффициентов List koeff.
В классе должны быть методы:
- Existence логический метод. Определяет, есть ли корни.
- Root, строка содержащая значения корней.
Создать классы,реализующие интерфейс ISolution:
- Linear - линейное уравнение (по двум коэффициентам).
- Square - квадратное уравнение (по трем коэффициентам).
Класс Linear содержит:
В коллекции коэффициентов – коэффициенты линейного уравнения ax+b=0.
Конструктор с двумя параметрами.
Реализовать методы Existence и Root.
Класс Square содержит:
В коллекции коэффициентов – коэффициенты квадратного уравнения ax2+bx+c=0.
Конструктор с тремя параметрами.
Реализовать методы Existence и Root.
Отработка:
Вариант 5
Создать интерфейс IProgression (прогрессия) содержащий:
Свойства:
- первый член,
- разность (или знаменатель),
- n (номер члена или количество членов).
В классе должны быть методы:
- вычисления n-го элемента,
- вычисления суммы n элементов прогрессии,
- возвращающий строку со значениями полей.
Создать классы,реализующие интерфейс IProgression:
- Linear - арифметическая прогрессия.
- Exponential - геометрическая прогрессия.
Класс Linear содержит:
Конструктор с тремя параметрами: первый член, разность, n (номер члена или количество членов).
Реализовать все методы интерфейса.
Формулы:
Класс Exponential содержит:
Конструктор с тремя параметрами: первый член, знаменатель, n (номер члена или количество членов).
Реализовать все методы интерфейса.
Формулы:
Отработка:
Вариант 6
Создать интерфейс IOval без свойств:
В классе должны быть методы:
- Square - вычисления площади,
- Length - вычисления длины линии,
- Str - возвращающий строку со значениями полей.
Создать классы,реализующие интерфейс IOval:
- Ellips - эллипс (по двум полуосям).
- Krug - круг (по радиусу).
Класс Ellips содержит:
Поля: числа a и b - полуоси эллипса
Конструктор с двумя параметрами.
Реализовать методы:
- Square - вычисления площади = a*b*pi
- Length -вычисления длины линии =(a+b)*pi
- Str - возвращающий строку со значениями полей.
Класс Krug содержит:
Поле число r - радиус круга.
Конструктор с одним параметром.
Реализовать методы:
- Square - вычисления площади = pi*r2
- Length - вычисления длины линии =2*pi*r
- Str - возвращающий строку со значениями полей.
Отработка:
Вариант 7
Создать интерфейс IStudent (студент) содержащий:
Свойства: фамилия, количество посещенных занятий, логическое поле сдал: или не сдал зачет
Методы:
- Test (без параметров) – логический метод сдал или не сдал зачет.
- Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
Создать классы,реализующие интерфейс IStudent:
- Ordinary - обычный студент.
- Clever - умный студент.
- Genius - гениальный студент.
Во всех классах, реализующих интерфейс:
Конструктор с двумя параметрами: фамилия, количество посещенных занятий.
Реализовать свойства и методы:
- Test. Заполняет логическое поле.
- Обычный студент сдает зачет, если посетил 20 занятий.
- Умный студент сдает зачет, если посетил больше 10 занятий
- Гениальный студент сдает зачет, если посетил хотя бы одно занятие.
- Info формирует строку с значениями полей.
Отработка:
Вариант 8
Создать интерфейс ITriangle
В классе должны быть методы:
- Square - вычисления площади,
- Perimeter - вычисления периметра
- Str - возвращающий строку со значениями площади и периметра.
Создать классы,реализующие интерфейс ITriangle.:
- Isosceles равнобедренный треугольник (по двум сторонам).
- Rectangular прямоугольный треугольник (по двум катетам).
- Equilateral равносторонний треугольник (по одной стороне).
Отработка 1:
Отработка 2:
Отработка 3:
Вариант 9
Создать интерфейс IBody
В классе должны быть методы:
- вычисления площади поверхности,
- вычисления объема,
- возвращающий строку со значениями поверхности и объема.
Создать классы:
- 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
Отработка:
Вариант 10
Создать интерфейс ICarriage (железнодорожный вагон) содержащий:
Свойства: цена за место, количество мест и общая сумма выручки от вагона
В классе должны быть методы:
- Cost (без параметров) – вычисляет доход от вагона
- Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
Создать классы:
- General - общий вагон,реализует интерфейс ICarriage.
- Reserved - плацкартный вагон,дочерний класс General.
- Sleeping - купейный вагон,дочерний класс General.
Каждый дочерний класс содержит:
В классах Reserved и Sleeping есть собственное поле стоимость дополнительных услуг на одно место.
Реализовать методы:
- Cost. Заполняет поле общая сумма выручки от вагона.
- В общем вагоне сумма выручки=цена*количество мест.
- В плацкартном вагоне сумма выручки=цена*количество мест+стоимость дополнительных услуг*количество мест*0.5
- В купейном вагоне сумма выручки=количество мест*(цена+стоимость дополнительных услуг)
- Info формирует строку с значениями полей.
Отработка:
Вариант 11
Создать интерфейс ITax (налогоплательщик) содержащий:
Свойства:
- идентификационный код (четыре цифры);
- год рождения;
- доход;
- налог.
Методы:
- метод CalculateTax, вычисления налога. Метод заполняет поле налог. В параметре метода текущий год.
- Метод Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
Создать классы:
- Ordinary, обычный налогоплательщик, реализует интерфейс ITax
- Privilege, имеющий льготы по налогам,является дочерним классом Ordinary.
Класс Ordinary содержит:
Конструктор, с тремя параметрами, присваивающий значения первым трем полям.
Реализовать методы:
- CalculateTax: Налог вычисляется так:
- Если возраст меньше 17 лет, то налог=0;
- Если доход меньше 1000, то налог=0;
- Если доход работы от 1000 до 10000 (включительно), то налог=20% от дохода;
- Если доход больше 10000, то налог=25% от дохода.
- Info формирует строку с значениями полей.
Класс Privilege содержит:
Содержит логическое поле, указывающее, что это льготник.
В конструкторе класса использовать четыре параметра – три поля родительского класса и логическое поле дочернего.
Переопределить методы:
- CalculateTax: Налог вычисляется так:
- Если возраст меньше 17 лет, то налог=0;
- Если доход меньше 10000, то налог=0;
- Если доход работы от 10000 до 50000 (включительно), то налог=10% от дохода;
- Если доход больше 50000, то налог=20% от дохода.
- Info формирует строку со значениями полей.
Отработка:
Вариант 12
Создать интерфейс IQuadrangle (четырехугольник)
В классе должны быть методы:
- Square - вычисления площади,
- Diag - вычисления диагоналей,
- Str - возвращающий строку со значениями полей.
Создать классы,реализующие этот интерфейс:
- Par параллелограмм (по двум сторонам и углу),
- Pryam прямоугольник (по двум сторонам),
- Rhombus ромб (по стороне и углу).
Реализовать методы Square, Diag, Str
Pомб. Формулы:
Параллелограмм. Формулы:
Отработка:
Вариант 13
Создать интерфейс ILodger (квартиросъемщик) содержащий:
Свойства:
- номер квартиры;
- предыдущее показание счетчика;
- текущее показание счетчика;
- площадь квартиры;
- плата по счетчику;
- плата за площадь;
- общая плата
В классе должны быть методы:
- OnMeter вычисляющий плату по счетчику. В параметре метода тариф.
- OnSqr вычисляющий плату за площадь. В параметре метода тариф.
- Sum, вычисляющий итоговую сумму
- Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
Создать классы:
- Ordinary, обычный квартиросъемщик,реализующий интерфейс ILodger
- Privilege, имеющий льготы по оплате за квартиру, являющийся дочерним классом Ordinary
Класс Ordinary содержит:
Конструктор, с четырьмя параметрами, присваивающий значения первым четырем полям.
Реализовать методы:
- OnMeter вычисляющий плату по счетчику. В параметре метода тариф. Плата по счетчику= тариф *( текущее показание счетчика - предыдущее показание счетчика). Метод заполняет соответствующее поле.
- OnSqr вычисляющий плату за площадь. В параметре метода тариф. Плата за площадь= тариф*площадь квартиры. Метод заполняет соответствующее поле.
- Sum, вычисляющий итоговую сумму = Плата по счетчику+ Плата за площадь;
- Info формирует строку с значениями полей.
Класс Privilege содержит:
Поля: логическое поле, указывающее, что это льготник и поле – размер субсидии.
Конструктор, с шестью параметрами, присваивающий значения первым четырем полям базового класса и двум полям собственного класса.
Переопределить методы:
- Метод OnMeter вычисляющий плату по счетчику. В параметре метода тариф. Плата по счетчику= тариф *( текущее показание счетчика - предыдущее показание счетчика)*0.75. Метод заполняет соответствующее поле.
- Метод OnSqr вычисляющий плату за площадь. В параметре метода тариф. Плата за площадь= тариф*площадь квартиры*0.75. Метод заполняет соответствующее поле.
- метод Sum, вычисляющий итоговую сумму = Плата по счетчику+ Плата за площадь-субсидия;
- Info формирует строку со значениями полей.
Отработка:
Вариант 14
Создать интерфейс IAirplane (самолет) содержащий:
Свойства:
- модель
- максимальная скорость
- максимальная высота
- стоимость
В классе должны быть методы:
- Cost (без параметров) – вычисление стоимости самолета.
- Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
Создать классы:
- Passenger - пассажирский самолет, реализующий интерфейс IAirplane.
- Bomber - бомбардировщик,является наследником Passenger.
- Destroyer - истребитель,реализующий интерфейс IAirplane.
Класс Passenger содержит:
Конструктор с тремя параметрами: модель, скорость и высота.
Реализовать методы:
- Cost вычисляет стоимость самолета=скорость*1000+высота*100. Заполняет поле стоимость.
- Info формирует строку с значениями полей.
Класс Destroyer содержит:
Конструктор с тремя параметрами: модель, скорость и высота.
Реализовать методы:
- Cost вычисляет стоимость самолета=скорость*3000+высота*200. Заполняет поле стоимость.
- Info формирует строку со значениями полей.
Класс Bomber содержит:
Поле количество бомб.
Конструктор с четырьмя параметрами: модель, скорость, высота и количество бомб
Переопределить методы:
- Cost вычисляет стоимость самолета=скорость*1500+высота*150+ количество бомб*50. Заполняет поле стоимость.
- Info формирует строку со значениями полей.
Отработка:
Вариант 15
Создать интерфейс IOfficeWorker (служащий) содержащий:
Свойства:
В классе должны быть методы:
- CalculatePay (без параметров) – вычисление зарплаты.
- CalculateBonus - (без параметров) вычисление премии.
- Info - информация (без параметров), который возвращает строку, содержащую информацию об объекте.
Создать классы:
- Employee, служащий получающий фиксированную зарплату,реализующий интерфейс IOfficeWorker.
- Hourly, служащий получающий почасовую зарплату,является дочерним Employee.
- Commissioned, служащий получающий определенный процент от выработки,является дочерним Employee.
Класс Employee содержит:
Конструктор с двумя параметрами: фамилия и зарплата
Реолизовать методы:
- CalculatePay возвращает значение поля зарплата,
- CalculateBonus, вычисляет премию по формуле = (зарплата)*0,25. Заполняет поле премия.
- Info формирует строку с значениями полей.
Класс Hourly содержит:
Поля: количество отработанных часов и стоимость одного часа.
Конструктор с тремя параметрами: фамилия, количество отработанных часов и стоимость одного часа.
Переопределить методы:
- CalculatePay , вычисляет зарплату= количество отработанных часов*стоимость одного часа. Заполняет поле зарплата.
- CalculateBonus, возвращает значение поля премия. Премия всем по 200. Заполняет поле премия.
- Info формирует строку со значениями полей.
Класс Commissioned содержит:
Поле сумма продаж.
Конструктор с двумя параметрами: фамилия и сумма продаж.
Переопределить методы:
- CalculatePay , вычисляет зарплату= 10% от суммы продаж. Заполняет поле зарплата.
- CalculateBonus, вычисляет премию= 20% от зарплаты. Заполняет поле премия.
- Info формирует строку со значениями полей.
Отработка:
Назад
Вперед
Содержание