Пояснительная записка. разработка программного обеспечения на языке высокого уровня c#
Скачать 1.59 Mb.
|
Свойства и методы класса. Перегрузка операцийЦель: изучить способы описания свойств и методов класса, получить практические навыки реализации свойств, методов и перегрузки операций. Теоретические сведения Ключевое слово operator используется для перегрузки встроенного оператора или выполнения пользовательского преобразования в объявлении класса или структуры. Чтобы перегрузить оператор в пользовательском классе или структуре, создайте объявление оператора в соответствующем типе. Объявление оператора, которое перегружает встроенный оператор C#, должно удовлетворять следующим правилам: Оно должно включать public и модификатор static. Оно должно включать operator X, где X — имя или обозначение перегружаемого оператора. Унарные операторы имеют один параметр, а бинарные операторы имеют два параметра. В каждом случае по крайней мере один параметр должен иметь тот же тип, что и класс или структура, в которых объявлен этот оператор. Задание Разработать класс на языке C# в соответствии с вариантом задания. Все поля класса должны быть скрытыми (объявленными как private). Для доступа к полям классам должны быть предусмотрены соответствующие свойства. Реализовать для класса конструктор по умолчанию, конструктор с параметрами и конструктор копирования. Перегрузить методы класса == и !=. Написать программу, демонстрирующую работу указанных выше элементов класса. Выполнить задания, представленные в соответствующем варианте. Разработать класс Count (счет), содержащий следующие поля: сountNumber (номер счет-фактуры), date (дата выписки счет-фактуры), value (сумма к уплате), count (количество товара); методы: GetAverage() — получить среднюю стоимость товара в счёте. Перегрузить операторы > и <, считая, что один счет больше другого, если выписан раньше. Перегрузить операторы > и <, считая, что один телефонный номер больше другого, если его номер больше. Решение Листинг (исходный код программы) Листинг файла Count.cs using System; namespace _6 { class Count { private int countNumber;//(номер счет-фактуры) private DateTime date;//(дата выписки счет-фактуры) private double value;//(сумма к уплате) private int count;//(количество товара); public Count() { countNumber = 0; date = DateTime.Now; value = 0; count = 0; } public Count(int countNumber, DateTime date, double value, int count) { this.countNumber = countNumber; this.date = date; this.value = value; this.count = count; } public Count(Count c) { countNumber = c.countNumber; date = c.date; value = c.value; count = c.count; } public int CountNumber { get { return countNumber; } } public DateTime Date { get { return date; } } public double Value { get { return value; } } public int Cnt { get { return count; } } public double GetAverage() { return value / count; } public static bool operator >(Count l, Count r) { return !(l.Date > r.Date); } public static bool operator <(Count l, Count r) { return !(l.Date < r.Date); } public static bool operator ==(Count l, Count r) { return ((l.CountNumber == r.CountNumber) && (l.Cnt == r.Cnt) && (l.Date == r.Date) && (l.Value == r.Value)); } public static bool operator !=(Count l, Count r) { return !(l == r); } public override string ToString() { return string.Format("{0} {1} {2} {3}", countNumber, date.ToString(), value, count); } } } Листинг файла Program.cs using System; namespace _6 { class Program { static void Main(string[] args) { Count count1 = new Count(); Count count2 = new Count(111, DateTime.Now.AddDays(1), 1000, 2); Count count3 = new Count(count2); Console.WriteLine(count1.ToString()); Console.WriteLine(count2.ToString()); Console.WriteLine(count3.ToString()); Console.WriteLine(); if (count1 == count2) Console.WriteLine("count1 = count2"); else Console.WriteLine("count1 != count2"); if (count2 != count3) Console.WriteLine("count2 != count3"); else Console.WriteLine("count2 == count3"); if (count2 > count3) Console.WriteLine("count2 больше чем count3"); else Console.WriteLine("count2 не больше count3"); if (count2 < count3) Console.WriteLine("count2 меньше чем count3"); else Console.WriteLine("count2 не меньше count3"); if (count1 > count3) Console.WriteLine("count1 больше чем count3"); else Console.WriteLine("count1 не больше count3"); if (count1 < count3) Console.WriteLine("count1 меньше чем count3"); else Console.WriteLine("count1 не меньше count3"); Console.WriteLine("count2.GetAverage() = {0}", count2.GetAverage()); Console.Read(); } } } Результат работы программы Рисунок 12 – Результат работы программы |