Исправление ошибок. Шаблон-наблюдатель - C#

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

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

реализация шаблона для погоды
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace lb2
  7. {
  8. class Program
  9. {
  10. public static void Main()
  11. {
  12. WeatherData weatherData = new WeatherData();
  13. CarrentConditionDisplay carrentDisplay = new CarrentConditionDisplay(weatherData);
  14. //...
  15. weatherData.setMeasurements(80, 65, 30.4);
  16. weatherData.setMeasurements(82, 70, 29.2);
  17. weatherData.setMeasurements(78, 90, 29.2);
  18. Console.Read();
  19. }
  20. }
  21. public interface Subject
  22. {
  23. public void registerObserver(Observer 0);
  24. public void removeObserver(Observer 0);
  25. public void notifyObservers();
  26. }
  27. public interface Observer
  28. {
  29. public void update(float temp, float hum, float press);
  30. }
  31. public interface DisplayElement
  32. {
  33. public void display();
  34. }
  35. public class WeatherData : Subject
  36. {
  37. // private string SubjectState { get; set; }
  38. private ArrayList observers;
  39. private float temp;
  40. private float hum;
  41. private float pressure;
  42. public WeatherData()
  43. {
  44. observers = new ArrayList ();
  45. }
  46. public void registerObserver(Observer 0)
  47. {
  48. observers.Add(0);
  49. }
  50. public void removeObserver(Observer 0)
  51. {
  52. int i = observers.indexOF(0);
  53. if (i>=0) observers.remove(i);
  54. }
  55. public void notifyObservers()
  56. {
  57. foreach (Observer obs in Observers)
  58. Obs.opdate(temp, hum, pressure);
  59. }
  60. public void measurementsChanges()
  61. {
  62. notifyObservers();
  63. }
  64. public void SetMeasurements(float temp, float hum, float press);
  65. {
  66. this.temp = temp;
  67. this.hum = hum;
  68. this.pressure = press;
  69. measurementsChanges();
  70. }
  71. //реализовать другие методы класса
  72. public class CarrentConditionDisplay:Observer, DisplayElement
  73. {
  74. private float temper;
  75. private float humid;
  76. private Subject weatherData;
  77. public CarrentConditionDisplay(Subject wData)
  78. {
  79. this.weatherData = wData;
  80. wData.registerObserver(this);
  81. }
  82. public void update(float temp, float hum, float press)
  83. {
  84. this.temper = temp;
  85. this.humid = hum;
  86. Display();
  87. }
  88. public void Display()
  89. {
  90. System.Console.WriteLine("Текущие условия" + temper + "С и " + humid + "% влажности");
  91. }
  92. }
  93. }

Решение задачи: «Исправление ошибок. Шаблон-наблюдатель»

textual
Листинг программы
  1.     class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             var weatherData = new WeatherData();
  6.             CarrentConditionDisplay carrentDisplay = new CarrentConditionDisplay(weatherData);
  7.  
  8.             weatherData.SetMeasurements(80f, 65f, 30f);
  9.             weatherData.SetMeasurements(82f, 70f, 29f);
  10.             weatherData.SetMeasurements(78f, 90f, 29f);
  11.  
  12.             Console.Read();
  13.         }
  14.     }
  15.  
  16.    
  17.     public interface ISubject
  18.     {
  19.         void RegisterObserver(IObserver observer);
  20.         void RemoveObserver(IObserver observer);
  21.         void NotifyObservers();
  22.     }
  23.  
  24.     public interface IObserver
  25.     {
  26.         void Update(float temp, float hum, float press);
  27.     }
  28.  
  29.      public interface IDisplayElement
  30.      {
  31.         void Display();
  32.      }
  33.  
  34.      public class WeatherData : ISubject
  35.      {
  36.  
  37.         private readonly IList<IObserver> _observers = new List<IObserver>();
  38.  
  39.         private float _temp;
  40.         private float _hum;
  41.         private float _pressure;
  42.  
  43.  
  44.         public void RegisterObserver(IObserver observer)
  45.         {
  46.             _observers.Add(observer);
  47.         }
  48.        
  49.         public void RemoveObserver(IObserver observer)
  50.         {
  51.              int i = _observers.IndexOf(observer);
  52.              if (i>=0) _observers.Remove(observer);
  53.         }
  54.        
  55.         public void NotifyObservers()
  56.         {
  57.             foreach (var observer in _observers)
  58.                 observer.Update(_temp, _hum, _pressure);
  59.         }
  60.  
  61.         public void MeasurementsChanges()
  62.         {
  63.             NotifyObservers();
  64.         }
  65.  
  66.         public void SetMeasurements(float temp, float hum, float press)
  67.         {
  68.              _temp = temp;
  69.              _hum = hum;
  70.              _pressure = press;
  71.              MeasurementsChanges();
  72.         }
  73. //реализовать другие методы класса
  74.  
  75.  
  76.      }
  77.  
  78.     public class CarrentConditionDisplay : IObserver, IDisplayElement
  79.     {
  80.         private float _temper;
  81.         private float _humid;
  82.         private ISubject _weatherData;
  83.  
  84.         public CarrentConditionDisplay(ISubject wData)
  85.         {
  86.             _weatherData = wData;
  87.             wData.RegisterObserver(this);
  88.         }
  89.  
  90.         public void Update(float temp, float hum, float press)
  91.         {
  92.             _temper = temp;
  93.             _humid = hum;
  94.             Display();
  95.         }
  96.        
  97.         public void Display()
  98.         {
  99.             System.Console.WriteLine("Текущие условия: " + _temper + "С и " + _humid + "% влажности");
  100.         }
  101.      }

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


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

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

14   голосов , оценка 3.786 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут