Перегрузить операторы > и <, считая что один сотрудник больше другого, если принят на работу раньше - 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("Некоректная дата поступления работника");
}
}
}