Advertisement
Guest User

Veselko

a guest
Feb 19th, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.44 KB | None | 0 0
  1. using System;
  2.  
  3. /*
  4.  Вариант: 3
  5.  Студент: Удачин Даниил Андреевич
  6.  Группа: БПИ191
  7.  Дата: 19.02.2020
  8. */
  9.  
  10. namespace Nikita_luchshiy_malchik
  11. {
  12.     class MobilePhone : EventArgs
  13.     {
  14.         public string Name { get; }
  15.         public double BatteryLife { get; }
  16.         public bool HasFaceID { get; }
  17.  
  18.         public MobilePhone(string name, double batteryLife, bool hasFaceID)
  19.         {
  20.             Name = name;
  21.             BatteryLife = batteryLife;
  22.             HasFaceID = hasFaceID;
  23.         }
  24.     }
  25.  
  26.     class PhoneMaker
  27.     {
  28.         public event EventHandler<MobilePhone> PhoneCreated;
  29.         public static Random rnd = new Random();
  30.  
  31.         public void NewPhone()
  32.         {
  33.             string name = GenerateName(7);
  34.             double batteryLife = rnd.Next(2500, 4000) + rnd.NextDouble();
  35.             bool hasFaceID = rnd.Next(0, 100) < 80 ? true : false;
  36.  
  37.             PhoneCreated?.Invoke(this, new MobilePhone(name, batteryLife, hasFaceID));
  38.         }
  39.  
  40.         static string GenerateName(int length)
  41.         {
  42.             string name = "";
  43.             for (int i = 0; i < length; i++)
  44.             {
  45.                 name += (char)rnd.Next(97, 123);
  46.             }
  47.             return name;
  48.         }
  49.     }
  50.  
  51.     class News
  52.     {
  53.         public void InfoHandler(object s, EventArgs args)
  54.         {
  55.             MobilePhone phone = args as MobilePhone;
  56.             // MobilePhone phone = (MobilePhone)args;
  57.  
  58.             Console.WriteLine("Имя телефона: " + phone.Name);
  59.             Console.WriteLine("Имеет ли FaceID: " + phone.HasFaceID);
  60.         }
  61.     }
  62.  
  63.     class PeopleWhoNeedBattery
  64.     {
  65.         public MobilePhone maxPhone = new MobilePhone("test", 0, false);
  66.         public void BatterySearcher(object s, EventArgs args)
  67.         {
  68.             MobilePhone phone = args as MobilePhone;
  69.             // MobilePhone phone = (MobilePhone)args;
  70.  
  71.             if (maxPhone.BatteryLife < phone.BatteryLife)
  72.             {
  73.                 maxPhone = phone;
  74.             }
  75.         }
  76.     }
  77.  
  78.     class Program
  79.     {
  80.         static void Main()
  81.         {
  82.             do {
  83.  
  84.                 // Создаём экземпляры
  85.                 PhoneMaker pMaker = new PhoneMaker();
  86.                 News news = new News();
  87.                 PeopleWhoNeedBattery maxBattery = new PeopleWhoNeedBattery();
  88.  
  89.                 // Подписываем
  90.                 pMaker.PhoneCreated += news.InfoHandler;
  91.                 pMaker.PhoneCreated += maxBattery.BatterySearcher;
  92.  
  93.                 // Вызываем 5 раз
  94.                 for (int i = 0; i < 5; i++)
  95.                 {
  96.                     pMaker.NewPhone();
  97.                 }
  98.  
  99.                 Console.WriteLine();
  100.  
  101.                 // Выдаём инйфу о телефоне с максимальным размером акума
  102.                 Console.WriteLine($"Максимальный размер акума телефона: " +
  103.                     $"{maxBattery.maxPhone.BatteryLife}\n" +
  104.                     $"Имя телефона: {maxBattery.maxPhone.Name}\n" +
  105.                     $"Имеет ли FaceID: {maxBattery.maxPhone.HasFaceID}\n");
  106.              
  107.                 Console.WriteLine("Программа завершила работу. Для выхода нажмите Esc.");
  108.                 } while (Console.ReadKey().Key != ConsoleKey.Escape);
  109.         }
  110.     }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement