Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Задачи для начинающих

29.01.21 10:01
Re: Задачи для начинающих
 
Программист коренной житель

Может быть я что-то не так понял (и уж точно я не знаю питон :) ), но мне кажется, что ты пытаешься решить задачу "в лоб" :)

Я понимаю, что задача настолько просто сформулирована, что "в лоб" решить ее гораздо проще ;)


Но все таки мне кажется, что тут нужно сделать 2 класса:

1) Контроллер градуcника

2) Контроллер обогревателя


Контроллер градусника должен посылать сообщения контроллеру обогревателя.

Таким образом логика контроллера обогревателя становится максимально примитивной и, что важно, тестируемой:

public interface ITermometerController 
{
   event EventHandler<TemperatureEventArgs> Temperature;
}

public class TemperatureEventArgs : EventArgs
{
   TemperatureArgs (int value)
   {
     Value = value;
   }
   public int Value {get; private set; }
}

public interface IHeaterController
{
  void HeaterOn ();
  void HeaterOff ();
}

public class HeaterController : IHeaterController
{
  public HeaterController (ITermometerController termometer)
  {
     termometer.Temperature += termometer_Handler;
  }

  public void HeaterOn()
  {
    ...
  }

  public void HeaterOff()
  {
    ...
  }

  public void termometer_Handler(object sender, TemperatureArgs e)
  {
    if (e.Value > highThreshhold)
      HeaterOff();
    else if (e.Value < lowThreshhold)
      HeaterOn();
  }
}

Вот и весь код :)

 

Перейти на