Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Task2
- {
- class Person
- {
- public string Name { get; }
- public Person(string name)
- {
- if (string.IsNullOrEmpty(name))
- throw new ArgumentException("Имя не может быть пустым или null!");
- Name = name;
- }
- public void SayHiTo(object sender, OfficeEventArgs e)
- {
- string name = e.Name;
- DateTime timeOfDay = e.Time;
- if (timeOfDay.Hour < 12)
- Console.WriteLine($"'Доброе утро, {name}!', — сказал {Name}");
- else if (timeOfDay.Hour < 17)
- Console.WriteLine($"'Добрый день, {name}!', — сказал {Name}");
- else
- Console.WriteLine($"'Добрый вечер, {name}!', — сказал {Name}");
- }
- public void SayByeTo(object sender, OfficeEventArgs e)
- {
- Console.WriteLine($"'До свидания, {e.Name}!', — сказал {Name}");
- }
- }
- class Office
- {
- public delegate void OfficeHanler(object sender, OfficeEventArgs e);
- public event OfficeHanler PersonCame;
- public event OfficeHanler PersonLeft;
- protected virtual void OnPersonCame(object sender, OfficeEventArgs e)
- {
- OfficeHanler handler = PersonCame;
- handler?.Invoke(this, e);
- }
- protected virtual void OnPersonLeft(object sender, OfficeEventArgs e)
- {
- OfficeHanler handler = PersonLeft;
- handler?.Invoke(this, e);
- }
- public void Come(Person person)
- {
- Console.WriteLine();
- Console.WriteLine($"[В оффис пришёл {person.Name}.]");
- OnPersonCame(this, new OfficeEventArgs(person.Name, DateTime.Now));
- PersonCame += person.SayHiTo;
- PersonLeft += person.SayByeTo;
- }
- public void Leave(Person person)
- {
- Console.WriteLine();
- Console.WriteLine($"[{person.Name} ушёл домой.]");
- PersonCame -= person.SayHiTo;
- PersonLeft -= person.SayByeTo;
- OnPersonLeft(this, new OfficeEventArgs(person.Name, DateTime.Now));
- }
- public void Come(Person person, DateTime timeOfDay)
- {
- Console.WriteLine();
- Console.WriteLine($"[В оффис пришёл {person.Name}.]");
- OnPersonCame(this, new OfficeEventArgs(person.Name, timeOfDay));
- PersonCame += person.SayHiTo;
- PersonLeft += person.SayByeTo;
- }
- public void Leave(Person person, DateTime timeOfDay)
- {
- Console.WriteLine();
- Console.WriteLine($"[{person.Name} ушёл домой.]");
- PersonCame -= person.SayHiTo;
- PersonLeft -= person.SayByeTo;
- OnPersonLeft(this, new OfficeEventArgs(person.Name, timeOfDay));
- }
- }
- class OfficeEventArgs : EventArgs
- {
- public string Name { get; }
- public DateTime Time { get; }
- public OfficeEventArgs(string name)
- {
- Name = name;
- Time = DateTime.Now;
- }
- public OfficeEventArgs(string name, DateTime time)
- {
- Name = name;
- Time = time;
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Person person1 = new Person("Света");
- Person person2 = new Person("Лена");
- Person person3 = new Person("Вика");
- Person person4 = new Person("Вероника");
- Person person5 = new Person("Виктор Марьянович");
- Person person6 = new Person("дядя Боб");
- Person person7 = new Person("дядя Линус");
- Office office = new Office();
- office.Come(person6, new DateTime( 2021, 11, 14, 6, 0, 0 ));
- office.Come(person7, new DateTime(2021, 11, 14, 7, 0, 0));
- office.Come(person1, new DateTime(2021, 11, 14, 13, 0, 0));
- office.Come(person2, new DateTime(2021, 11, 14, 18, 0, 0));
- office.Leave(person1);
- office.Leave(person2);
- office.Leave(person7);
- office.Leave(person6);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement