Практическая работа №12 Полиморфизмы методов класса. Базовый, средний и высокий уровни


Download 224.81 Kb.
bet2/4
Sana21.06.2023
Hajmi224.81 Kb.
#1645005
TuriПрактическая работа
1   2   3   4
Bog'liq
11.3 все уровни

Базовый уровень
Задание: построить класс 1-го уровня с указанными в индивидуальном
задании (табл. 11.7) полями и методами:
- конструктор;
- функция, которая определяет «качество» объекта – Q по заданной формуле (табл11. 7, столб 2);
- вывод информации об объекте.
Построить класс 2-го уровня (класс-потомок), который содержит:
- дополнительное поле P;
- функция, которая определяет «качество» объекта класса 2-го уровня –
Qp, которая перекрывает функцию качества класса 1-го уровня (Q ), выполняя
вычисление по новой формуле (табл. 11.7, столб 3).
Создать проект для демонстрации работы: ввод и вывод информации об
объектах классов 1-го и 2-го уровней.

Решение:
// Класс 1-го уровня
class Cable
{
// Поля класса
public string Type { get; set; }
public int NumberOfCores { get; set; }
public double Diameter { get; set; }

// Конструктор класса


public Cable(string type, int numberOfCores, double diameter)
{
Type = type;
NumberOfCores = numberOfCores;
Diameter = diameter;
}

// Функция определения "качества" объекта класса 1-го уровня


public double Quality()
{
return Diameter / NumberOfCores;
}

// Вывод информации об объекте


public void PrintInfo()
{
Console.WriteLine($"Type: {Type}");
Console.WriteLine($"Number of cores: {NumberOfCores}");
Console.WriteLine($"Diameter: {Diameter}");
}
}

// Класс 2-го уровня (класс-потомок)


class ShieldedCable : Cable
{
// Дополнительное поле класса
public bool PresenceOfBraiding { get; set; }

// Конструктор класса


public ShieldedCable(string type, int numberOfCores, double diameter, bool presenceOfBraiding)
: base(type, numberOfCores, diameter)
{
PresenceOfBraiding = presenceOfBraiding;
}

// Перекрытие функции "качества" класса 1-го уровня


public new double Quality()
{
double q = base.Quality();
if (PresenceOfBraiding)
return 2 * q;
else
return 0.7 * q;
}

// Перекрытие вывода информации об объекте


public new void PrintInfo()
{
base.PrintInfo();
Console.WriteLine($"Presence of braiding: {PresenceOfBraiding}");
}
}

// Пример использования классов


class Program
{
static void Main(string[] args)
{
// Создание объекта класса 1-го уровня
Cable cable = new Cable("Type1", 8, 2.5);
cable.PrintInfo();
Console.WriteLine($"Quality: {cable.Quality()}");

Console.WriteLine();


// Создание объекта класса 2-го уровня


ShieldedCable shieldedCable = new ShieldedCable("Type2", 4, 1.5, true);
shieldedCable.PrintInfo();
Console.WriteLine($"Quality: {shieldedCable.Quality()}");

Console.ReadLine();


}
}
Класс Cable представляет кабель и содержит поля Type (тип кабеля), NumberOfCores (количество жил кабеля) и Diameter (диаметр). У него есть метод Quality(), который вычисляет "качество" кабеля по заданной формуле. Метод PrintInfo() выводит информацию о кабеле.
Класс ShieldedCable является классом-потомком класса Cable и добавляет дополнительное поле PresenceOfBraiding (наличие оплетки). Он также перекрывает методы Quality() и PrintInfo(), чтобы учесть наличие оплетки при вычислении "качества" и выводе информации о кабеле.
В Main() методе создаются объекты классов Cable и ShieldedCable и демонстрируется их использование, вызывая методы и выводя информацию о них.
Таким образом, программа создает классы 1-го и 2-го уровней, реализует указанные методы и демонстрирует их работу на примере кабелей.
Вывод:
Эта программа создает два объекта - один объект класса "Cable" и один объект класса "CableWithShielding". Затем программа выводит информацию о каждом объекте, включая его тип, количество жил, диаметр и качество.
Класс "Cable" представляет кабель и имеет поля для хранения типа кабеля, количества жил и диаметра. У него также есть метод "CalculateQuality", который вычисляет качество кабеля по заданной формуле, используя диаметр и количество жил. Класс "CableWithShielding" является наследником класса "Cable" и добавляет дополнительное поле для хранения информации о наличии оплетки. Он также перекрывает метод "CalculateQuality", чтобы учесть наличие оплетки и изменить формулу вычисления качества.
В функции Main создаются объекты классов "Cable" и "CableWithShielding" с определенными значениями полей. Затем вызывается метод "PrintInfo" для каждого объекта, который выводит информацию о нем на консоль, включая тип кабеля, количество жил, диаметр и качество.


Download 224.81 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling