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

Узнай цену своей работы

Формулировка задачи:

Разработать класс Worker (сотрудник), содержащий следующие поля: personID (табельный номер сотрудника), family (фамилия сотрудника), date (дата приёма на работу); методы: GetStage() — получить стаж сотрудника. Перегрузить операторы > и <, считая что один сотрудник больше другого, если принят на работу раньше. проверти код, что в нем не так, просто нам надо сделать с конструкторами
class Worker
    {
       public  int persoID;
        public string family;
        public DateTime date;
 
public Worker()
{ persoID=0;
family="";
date=new DateTime (2012, 05, 20);
}
public int ID
{set 
{persoID=value;
}
get
{return persoID;
}}
public string family;
set
{family=value;
}
get
{return family
}}
public DateTime date
set
{date=value;
}
get
{return date;
}}
public Worker (Worker J)
{ personID=J.personID
family=J.family
date=J.date
}         
public Worker(int persoID, string family, DateTime date)
        {
            this.persoID = persoID;
            this.family = family;
            this.date = date;
        }
        public void GetStage()
        {
            if (this.date < DateTime.Now)
                Console.WriteLine("Стаж работника {0} = {1} дней", family, (DateTime.Now - date).Days);
            else Console.WriteLine("Некоректная дата поступления работника");
        }
        public static bool operator >(Worker w1, Worker w2)
        {
            if (w1.date < w2.date) return true;
            return false;
        }
        public static bool operator <(Worker w1, Worker w2)
        {
            if (w1.date > w2.date) return true;
            return false;
        }
    }
}
class Program
    {
        static void Main(string[] args)
        {
            Worker w1 = new Worker(1276, "Ivanov", new DateTime(2011, 11, 9));
            w1.GetStage();
            Worker w2 = new Worker(1256, "Petrov", new DateTime(2010, 11, 14));
            w2.GetStage();
            if (w1 > w2) Console.WriteLine("Сотрудник w1 принят раньше от w2");
            else Console.WriteLine("Сотрудник w2 принят раньше от w1");
        }
    }

Решение задачи: «Перегрузить операторы > и <, считая что один сотрудник больше другого, если принят на работу раньше»

textual
Листинг программы
using System;
 
namespace ConsoleApplication1
{
    public class Worker
    {
        int personID;
        string family;
        DateTime date;
 
        public Worker()
            : this(0, string.Empty, new DateTime())
        {
        }
 
        public Worker(int personID, string family, DateTime date)
        {
            this.personID = personID;
            this.family = family;
            this.date = date;
        }
 
        public Worker(Worker worker)
            : this(worker.ID, worker.Family, worker.Date)
        {
        }
 
        public int ID
        {
            set { personID = value; }
            get { return personID; }
        }
 
        public string Family
        {
            set { family = value; }
            get { return family; }
        }
 
        public DateTime Date
        {
            set { date = value; }
            get { return date; }
        }
 
        public int GetStage()
        {
            return (DateTime.Now - Date).Days;
        }
 
        public static bool operator >(Worker w1, Worker w2)
        {
            if (w1.date < w2.date)
                return true;
            return false;
        }
 
        public static bool operator <(Worker w1, Worker w2)
        {
            if (w1.date > w2.date)
                return true;
            return false;
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Worker w1 = new Worker(1276, "Иванов", new DateTime(2011, 11, 9));
            DisplayStageInfo(w1);
            Worker w2 = new Worker(1256, "Петров", new DateTime(2010, 11, 14));
            DisplayStageInfo(w2);
 
            Console.ReadKey();
        }
 
        private static void DisplayStageInfo(Worker worker)
        {
            if (worker.Date < DateTime.Now)
                Console.WriteLine("Стаж работника {0} = {1} дней", worker.Family, worker.GetStage());
            else
                Console.WriteLine("Некоректная дата поступления работника");
        }
    }
}

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


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

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

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