Главная страница

Отчет Программирование на языке высокого уровня. разработка программного обеспечения на языке высокого уровня c#


Скачать 0.76 Mb.
Названиеразработка программного обеспечения на языке высокого уровня c#
Дата28.06.2022
Размер0.76 Mb.
Формат файлаdoc
Имя файлаОтчет Программирование на языке высокого уровня.doc
ТипПояснительная записка
#618163
страница6 из 7
1   2   3   4   5   6   7



Рисунок 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();

}

}

}


1   2   3   4   5   6   7


написать администратору сайта