Отчет Программирование на языке высокого уровня. разработка программного обеспечения на языке высокого уровня c#
Скачать 0.76 Mb.
|
Рисунок 11 – Результат работы программы 6 Свойства и методы класса. Перегрузка операцийЦель: Изучить способы описания свойств и методов класса, получить практические навыки реализации свойств, методов и перегрузки операций. Теоретические сведенияПерегрузка оператора – это реализация своего собственного функционала этого оператора для конкретного класса. Перегрузка оператора реализуется похожим способом на перегрузку методов. Здесь используется ключевое слово operator. Общая структура перегрузки операторов имеет следующий вид: Перегрузка унарного* оператора: public static [возвращаемый_тип] operator [оператор]([тип_операнда] [операнд]) { //функционал оператора } Перегрузка бинарного* оператора: public static [возвращаемый_тип] operator [оператор]([тип_операнда1] [операнд1], [тип_операнда2] [операнд2]) { //функционал оператора } Модификаторы public и static являются обязательными. На месте [оператор] может стоять любой оператор, который можно перегрузить. ЗаданиеРазработать класс на языке C# в соответствии с вариантом задания. Все поля класса должны быть скрытыми (объявленными как private). Для доступа к полям классам должны быть предусмотрены соответствующие свойства. Реализовать для класса конструктор по умолчанию, конструктор с параметрами и конструктор копирования. Перегрузить методы класса == и !=. Написать программу, демонстрирующую работу указанных выше элементов класса. Выполнить задания, представленные в соответствующем варианте. Разработать класс Route (туристический маршрут), содержащий следующие поля: routeID (идентификатор маршрута), name (название маршрута), period (время в пути), сost (стоимость одного дня); методы: GetPrice() — получить цену за весь срок. Перегрузить операторы > и <, считая, что один маршрут больше другого, если его индентификатор больше. Листинг (исходный код программы)using System; namespace ConsoleApp6 { public class Route { private int routeID; private string name; private int period; private int cost; public Route() { routeID = 0; period = 0; name = ""; cost = 0; } public Route(Route p) { routeID = p.routeID; name = p.name; period = p.period; cost = p.cost; } public Route(int routeID, string name, int period, int cost) { this.routeID = routeID; this.name = name; this.period = period; this.cost = cost; } public int GetPrice() { return period * cost; } public static bool operator >(Route l, Route r) { return l.routeID > r.routeID; } public static bool operator <(Route l, Route r) { return l.routeID < r.routeID; } public static bool operator ==(Route l, Route r) { return ((l.routeID == r.routeID) && (l.name == r.name) && (l.period == r.period) && (l.cost == r.cost)); } public static bool operator !=(Route l, Route r) { return !(l == r); } public override string ToString() { return string.Format($"{routeID} {name}, дней в пути: {period}, стоимость одного дня: {cost}"); } } class Program { static void Main(string[] args) { //заполнение маршрутов Route r1 = new Route(111, "Первый маршрут", 5, 1500) ; Route r2 = new Route (222, "Второй маршрут", 2, 1000 ); Console.WriteLine(r1.ToString()); int result = r1.GetPrice(); Console.WriteLine($"Общая стоимость маршрута {result}."); Console.WriteLine(); Console.WriteLine(r2.ToString()); result = r2.GetPrice(); Console.WriteLine($"Общая стоимость маршрута {result}."); Console.WriteLine(); if (r1 > r2) Console.WriteLine("Первый маршрут больше чем второй"); else Console.WriteLine("Первый маршрут не больше второй"); if (r1 < r2) Console.WriteLine("Первый маршрут меньше чем второй"); else Console.WriteLine("Первый маршрут не меньше второй"); if (r1 == r2) Console.WriteLine("Первый маршрут равен второму"); else Console.WriteLine("Первый маршрут не равен второму"); if (r1 != r2) Console.WriteLine("Первый маршрут не равен второму"); else Console.WriteLine("Первый маршрут равен второму"); Console.ReadLine(); } } } |