Practice_1_4 - melnikf/teaching GitHub Wiki
Определить класс Bike (Велосипед), который имеет:
- защищенное поле cadence типа int (число оборотов ведущей звезды в минуту);
- защищенное поле speed типа int (скорость);
- защищенное поле gear типа int (передача);
- открытое свойство Cadence, возвращающее или задающее значение поля cadence;
- открытое свойство Speed, возвращающее или задающее значение поля speed;
- открытое свойство Gear, возвращающее или задающее значение поля gear;
- открытый конструктор без параметров, инициализирующий поля значениями по умолчанию;
- открытый конструктор с параметрами, инициализирующий поля указанными значениями;
- виртуальный метод string GetDescription, возвращающий информацию о велосипеде.
Определить класс MountainBike (Горный велосипед), который наследует Bike и имеет:
- защищенное поле suspension типа string (тип подвески);
- открытое свойство Suspension, возвращающее или задающее значение поля suspension;
- открытый конструктор без параметров, инициализирующий все поля значениями по умолчанию;
- открытый конструктор с параметрами, инициализирующий все поля указанными значениями;
- переопределенный метод string GetDescription, возвращающий информацию о велосипеде.
Определить класс RoadBike (Дорожный велосипед), который наследует Bike и имеет:
- защищенное поле tireWidth типа int (ширина шин, мм);
- открытое свойство TireWidth, возвращающее или задающее значение поля tireWidth;
- открытый конструктор без параметров, инициализирующий все поля значениями по умолчанию;
- открытый конструктор с параметрами, инициализирующий все поля указанными значениями;
- переопределенный метод string GetDescription, возвращающий информацию о велосипеде.
Переопределенные методы GetDescription в классах-наследниках, должны обращаться к базовому классу, для получения общей информации, а затем дополнять эту информацию.
В класс главной формы приложения (MainForm по умолчанию) добавить методы:
private List<Bike> CreateBikes()
{
List<Bike> bikes = new List<Bike>();
bikes.Add(new Bike());
bikes.Add(new MountainBike());
bikes.Add(new RoadBike());
bikes.Add(new Bike());
bikes.Add(new Bicycle(22, 16, 1));
bikes.Add(new MountainBike(20, 10, 5, "Двойная"));
bikes.Add(new RoadBike(40, 24, 8, 21));
return bikes;
}
private void TestBikes()
{
string tmp = "";
MountainBike mbike1 = new MountainBike();
RoadBike rbike1 = new RoadBike();
tmp = mbike1.GetDescription();
tmp = rbike1.GetDescription();
Bike bike1 = new Bike();
Bike bike2 = new MountainBike();
Bike bike3 = new RoadBike();
tmp = bike1.GetDescription();
tmp = bike2.GetDescription();
tmp = bike3.GetDescription();
MountainBike mbike2 = (MountainBike)bike2;
RoadBike rbike2 = (RoadBike)bike3;
MountainBike mbike3 = (MountainBike)bike3;
RoadBike rbike3 = (RoadBike)bike2;
tmp = mbike2.GetDescription();
tmp = rbike2.GetDescription();
tmp = mbike3.GetDescription();
tmp = rbike3.GetDescription();
}
Исправить и объяснить ошибки в методе TestBikes. Объяснить, почему переменная tmp принимает те или иные значения.
На главной форме приложения:
- создать элемент управления ListBox;
- создать кнопку, после нажатия на которую в ListBox загружается информация об объектах, создаваемых с помощью метода CreateBikes.