Практическая работа №12 Полиморфизмы методов класса. Базовый, средний и высокий уровни
Download 224.81 Kb.
|
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling