Применение стандартных интерфейсов в собственных классах. Реализация итератора для класса. Создание клона - 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;
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы