Применение стандартных интерфейсов в собственных классах. Реализация итератора для класса. Создание клона - C#
Формулировка задачи:
Общая постановка задачи:
Каждый разрабатываемый класс должен содержать:
o скрытые данные
o перегрузку конструкторов
o методы ввода-вывода данных
o свойства класса
В основной программе описать массив из экземпляров разработанного класса. Реализовать следующие операции:
1. Создать клон разработанного класса
2. Отсортировать массив по одному критерию сортировки
3. Отсортировать массив по нескольким (заданным) критериям сортировки
4. Организовать перебор элементов массива с помощью простейшего итератора foreach.
Класс “Дата”. Поля – год, день, месяц
Решение задачи: «Применение стандартных интерфейсов в собственных классах. Реализация итератора для класса. Создание клона»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace freed7 { class Program { static void Main(string[] args) { MyDate[] DateCollection = new MyDate[3]{new MyDate(1980,12,"Понедельник"), new MyDate(1978,03,"Среда"), new MyDate(2010,05,"Вторник")}; Console.WriteLine("Весь массив:"); foreach (var item in DateCollection) Console.WriteLine(item); Console.WriteLine("Перебор по одному критерию:"); foreach (var item in DateCollection) { if (item._Year >= 2000) Console.WriteLine(item); } Console.WriteLine("Перебор по двум критериям:"); foreach (var item in DateCollection) { if (item._Year > 1970 && item._Month < 12) Console.WriteLine(item); } MyDate MyClone = (MyDate)DateCollection[0].Clone(); Console.WriteLine("Клон элемента:"); Console.WriteLine(MyClone); Console.Read(); } } public class MyDate:IEnumerable,ICloneable { private int Year; private int Month; private string Day; public int _Year { get { return Year; } } public int _Month { get { return Month; } } public string _Day { get { return Day; } } public MyDate() { } public MyDate(int Y,int M,string D) { Year = Y; Month = M; Day = D; } public void SetYear(int y) { if (y != 0 && y.ToString().Length==4) Year = y; else throw new ArgumentException("Формат ввода не соответствует!"); } public void SetDay(string d) { if (d != null) Day = d; else throw new ArgumentException("Формат ввода не соответствует!"); } public void SetMonth(int m) { if (m != 0 && m <= 12) Month = m; else throw new ArgumentException("Формат ввода не соответствует!"); } public override string ToString() { return string.Format("Год: {0}, месяц: {1}, день: {2}", Year, Month, Day); } public IEnumerator GetEnumerator() { return this.GetEnumerator(); } public object Clone() { MyDate temp = new MyDate(); temp.Year = this.Year; temp.Month = this.Month; temp.Day = this.Day; return temp; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д