Главная страница
Навигация по странице:

  • Теоретические сведения

  • Решение Листинг (исходный код программы)

  • Результат работы программы

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


    Скачать 1.38 Mb.
    Названиеразработка программного обеспечения на языке высокого уровня c#
    АнкорКурсовая по программированию
    Дата28.06.2022
    Размер1.38 Mb.
    Формат файлаdocx
    Имя файлаКурсовая по программированию.docx
    ТипПояснительная записка
    #618156
    страница5 из 6
    1   2   3   4   5   6

    6 Свойства и методы класса. Перегрузка операций


    Цель: Изучить способы описания свойств и методов класса, получить практические навыки реализации свойств, методов и перегрузки операций.

    Теоретические сведения

    Как известно, в языке С# тип переменной определяет набор значений, которые она может хранить, а также набор операций, которые можно выполнять над этой переменной. Например, над значением переменной типа int программа может выполнять сложение, вычитание, умножение и деление. С другой стороны, использование оператора “плюс” для сложения двух экземпляров реализованного программистом класса лишено смысла.

    Когда в программе определяется класс, то по существу определяется новый тип данных. Тогда язык C# позволяет определить операции, соответствующие этому новому типу данных.

    Перегрузка операций состоит в изменении смысла операции при использовании его с определенным классом.

    Например, пусть имеется:

    myclass a,bc;…//a,b,c-экземпляры класса myclass

    c=a+b; //перегруженная операция сложения для класса myclass

    Перегрузка операций обычно применяется для классов, описывающих математические или физические понятия, то есть таких классов, для которых требуется выполнить соответствующие операции.

    Общий синтаксис объявления перегруженной операции:

    [атрибуты] спецификаторы operator тело операции,

    где:

    Спецификаторы – public,static,extern

    operator – ключевое слово, определяющее перегруженную операцию

    тело операции-действия, которые выполняются при использовании операции в выражении
    Перегружать можно только стандартные операции.

    Алгоритм перегрузки операции:

    Определить класс, которому данная операция будет назначена.

    Для перегрузки операций используется ключевое слово operator.

    Переопределяя операцию, необходимо указать метод, который C# вызывает каждый раз, когда класс использует перегруженную операцию. Этот метод, в свою очередь, выполняет соответствующую операцию.

    Правила перегрузки операции:

    Операция должна быть объявлена как public static

    Параметры в операцию должны передаваться по значению (не ref, не out)

    Двух одинаковых перегруженных операций в классе не должно быть

    Если программа перегружает операцию для определенного класса, то смысл этой операции изменяется только для указанного класса, оставшаяся часть программы будет продолжать использовать эту операцию для выполнения ее стандартных действий.

    Задание

    Разработать класс на языке C# в соответствии с вариантом задания. Все поля класса должны быть скрытыми (объявленными как private). Для доступа к полям классам должны быть предусмотрены соответствующие свойства.

    Реализовать для класса конструктор по умолчанию, конструктор с параметрами и конструктор копирования.

    Перегрузить методы класса == и !=.

    Написать программу, демонстрирующую работу указанных выше элементов класса.

    Выполнить задания, представленные в соответствующем варианте.

    Выполнить задания, представленные в соответствующем варианте.

    Разработать класс Count (счет), содержащий следующие поля:

    сountNumber (номер счет-фактуры),

    date (дата выписки счет-фактуры),

    value (сумма к уплате),

    count (количество товара);

    методы:

    GetAverage() — получить среднюю стоимость товара в счёте.

    Перегрузить операторы > и <, считая, что один счет больше другого, если выписан раньше.

    .

    Решение

    Листинг (исходный код программы)

    namespace Laborat6

    {

    public class Count

    {

    static void Main(string[] args)

    {

    Count c = new Count();

    c.ReadCount();

    c.WriteCount();

    Console.ReadLine();

    }
    private uint number;

    private DateTime date;

    private double value;

    private uint count;
    public Count()

    {

    number = 0;

    date = DateTime.ParseExact("01.01.1900", "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture);

    value = 0.00;

    count = 0;

    }
    public Count(uint number, DateTime date, double value, uint count)

    {

    this.number = number;

    this.date = date;

    this.value = value;

    this.count = count;

    }
    public Count(Count obj)

    : this(obj.number, obj.date, obj.value, obj.count)

    {

    }
    public void ReadCount()

    {
    {

    Console.Write("Введите номер счет-фактуры: ");

    number = UInt32.Parse(Console.ReadLine());
    Console.Write("Введите дата выписки счет-фактуры: ");

    date = DateTime.Parse(Console.ReadLine());
    Console.Write("Введите сумму к уплате: ");

    value = Double.Parse(Console.ReadLine());
    Console.Write("Введите количество товара ");

    count = UInt32.Parse(Console.ReadLine());


    }

    }

    public void WriteCount()

    {

    Console.WriteLine("Номер счет-фактуры: {0} ", number);

    Console.WriteLine("Дата выписки счет-фактуры: {0} ", date.ToString("dd.MM.yyyy"));

    Console.WriteLine("Cумма к уплате: {0} ", value);

    Console.WriteLine("Количество товара: {0} ", count);

    Console.WriteLine("Cредняя стоимость товара в счёте: {0}", GetAverage());

    }
    public double GetAverage()

    {

    if (count == 0)

    return 0;

    else

    return (value / count);

    }
    public static bool operator >(Count a, Count b)

    {

    return a.date < b.date;

    }
    public static bool operator <(Count a, Count b)

    {

    return a.date > b.date;

    }
    }

    }

    Результат работы программы

    Результат работы программы приведен на рис. 17.



    Рисунок17 — Результат работы программы
    1   2   3   4   5   6


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