Advertisement
OOP_exam

lab4_1

Jan 16th, 2017
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.93 KB | None | 0 0
  1. using System;
  2.  
  3. namespace lab4_1
  4. {
  5.     // Создать приложение, в котором генератор события “снабжает”
  6.     // событие следующей информацией: название поезда, время
  7.     // прибытия, номер вагона и места. Приемник события распечатывает
  8.     // эту информацию.
  9.      
  10.     class TrainEventArgs : EventArgs
  11.     {
  12.         string trainName;
  13.         public string TrainName
  14.         {
  15.             get
  16.             {
  17.                 return trainName;
  18.             }
  19.         }
  20.  
  21.         string arrivalTime;
  22.         public string ArrivalTime
  23.         {
  24.             get
  25.             {
  26.                 return arrivalTime;
  27.             }
  28.         }
  29.  
  30.         int railcarNumber;
  31.         public int RailcarNumber
  32.         {
  33.             get
  34.             {
  35.                 return railcarNumber;
  36.             }
  37.         }
  38.  
  39.         int placeNumber;
  40.         public int PlaceNumber
  41.         {
  42.             get
  43.             {
  44.                 return placeNumber;
  45.             }
  46.         }
  47.  
  48.         public TrainEventArgs(string name, string time, int railcar, int place)
  49.         {
  50.             this.trainName = name;
  51.             this.arrivalTime = time;
  52.             this.railcarNumber = railcar;
  53.             this.placeNumber = place;
  54.         }
  55.     }
  56.     class GenEvent  // Генератор событий - издатель
  57.     {
  58.         public delegate void TrainEventHandler(object sender, TrainEventArgs e);
  59.  
  60.         public event TrainEventHandler OnTrainHandler;
  61.  
  62.         public void NewEvent(string name, string time, int railcar, int place)
  63.         {
  64.             TrainEventArgs e = new TrainEventArgs(name, time, railcar, place);
  65.  
  66.             if (OnTrainHandler != null)
  67.                 OnTrainHandler(this, e);
  68.  
  69.         }
  70.  
  71.         //Подписчик
  72.         class RecEvent
  73.         {
  74.             //Обработчик события  
  75.             void OnRecChange(object source, TrainEventArgs e)
  76.             {
  77.                 Console.WriteLine("\nНазвание поезда: {0} \nВремя прибытия: {1} \nНомер вагона: {2}  \nНомер места: {3}", e.TrainName, e.ArrivalTime, e.RailcarNumber, e.PlaceNumber);
  78.             }
  79.  
  80.             // в конструкторе класса осуществляется подписка
  81.             public RecEvent(GenEvent gnEvent)
  82.             {
  83.                 gnEvent.OnTrainHandler += new GenEvent.TrainEventHandler(OnRecChange);
  84.             }
  85.         }
  86.         class Program
  87.         {
  88.             static void Main(string[] args)
  89.             {
  90.  
  91.                 GenEvent gnEvent = new GenEvent();
  92.                 RecEvent inventoryWatch = new RecEvent(gnEvent);
  93.  
  94.                 gnEvent.NewEvent("STAR", "10:30", 12, 39);
  95.  
  96.                 Console.ReadKey(true);
  97.  
  98.             }
  99.  
  100.         }
  101.     }
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement