Tonny_Bennet
05-07-2012, 18:19
Здравствуйте.
Есть некоторое устройство подключаемое по COM-порту к компьютеру. Я написал класс Module который описывает внутреннюю структуру этого устройства (линии ввода-вывода, реле, линии входа АЦП). Этот модуль физически управляет движением автомобиля, к примеру. И вот для того, что бы автомобиль поехал вперёд нужно на трёх определённых линиях модуля установить заданные значения, что бы поехал влево нужно установить другие значения и т.д.
Мне хочется сделать некоторый класс (или что-то ещё), который будет служить некоторой прослойкой.
Я создал интерфейс и класс-наследник.
public interface IState
{
void Stop();
void Forward();
void Back();
void Left();
void Right();
}
public class Bot : Module, IState
{
public void Stop()
{
this.lineIO[0].Off();
this.lineIO[1].Off();
}
public void Forward()
{
this.lineIO[0].On();
this.lineIO[1].On();
}
public void Back(){ }
public void Left() { }
public void Right() { }
}
В принципе работает, но вот есть один минус: сопоставление Forward -> lineIO[0].On() lineIO[1].On() делается в самом классе, и в ходе работы программы изменить не получится.
Что нужно сделать, что бы можно было делать это сопоставление на уровне конструктора объекта класса Bot?
Есть некоторое устройство подключаемое по COM-порту к компьютеру. Я написал класс Module который описывает внутреннюю структуру этого устройства (линии ввода-вывода, реле, линии входа АЦП). Этот модуль физически управляет движением автомобиля, к примеру. И вот для того, что бы автомобиль поехал вперёд нужно на трёх определённых линиях модуля установить заданные значения, что бы поехал влево нужно установить другие значения и т.д.
Мне хочется сделать некоторый класс (или что-то ещё), который будет служить некоторой прослойкой.
Я создал интерфейс и класс-наследник.
public interface IState
{
void Stop();
void Forward();
void Back();
void Left();
void Right();
}
public class Bot : Module, IState
{
public void Stop()
{
this.lineIO[0].Off();
this.lineIO[1].Off();
}
public void Forward()
{
this.lineIO[0].On();
this.lineIO[1].On();
}
public void Back(){ }
public void Left() { }
public void Right() { }
}
В принципе работает, но вот есть один минус: сопоставление Forward -> lineIO[0].On() lineIO[1].On() делается в самом классе, и в ходе работы программы изменить не получится.
Что нужно сделать, что бы можно было делать это сопоставление на уровне конструктора объекта класса Bot?