Вопросы по ООП в MQL5 - страница 23

 
Vladimir Simakov:
Вечером покажу. Сейчас с телефона.

ОК

 убрать наследование от interface не проблема, можно от базового класса наследоваться, но по моему появится путаница в коде - будет труднее разбираться какой метод будет вызван, да и при такой структуре кода -  "Паттерн ООП - Паттерны поведения -Стратегия (Strategy)"

я всегда и гарантированно имею в каждой стратегии по своему конструктору, вроде пока эти конструкторы и не нужны... но оставлю эту возможность, это нелишнее

ЗЫ: сам базовый класс для все стратегий тоже довольно компактный, примерно так:

class CStrategy: public IStrategy
{
protected:
   SSettingsForOrder  m_setting;
   COrder *m_order;
   void RunStrategy();
   double CalcLot();
   double GetPrice(); 
};

в общем дождусь Вашего примера посмотрю, мне пока нравится, что структура кода читаемая и логичная получается, да и самое главное "во всех этих телодвижениях" - сделать некий прототип в котором можно будет быстро дописывать сами стратегии и тестировать.

Все в принципе уже написано, но код мне не нравится - писал в виде сервисных функций(открыть ордер, расчет лота и т.п. ) в процедурном стиле и потом писал небольшие классы в которых была логика и вызов этих сервисных функций, вот и решил причесать все это по полному )))

 
Igor Makanu:

ОК

 убрать наследование от interface не проблема, можно от базового класса наследоваться, но по моему появится путаница в коде - будет труднее разбираться какой метод будет вызван, да и при такой структуре кода -  "Паттерн ООП - Паттерны поведения -Стратегия (Strategy)"

я всегда и гарантированно имею в каждой стратегии по своему конструктору, вроде пока эти конструкторы и не нужны... но оставлю эту возможность, это нелишнее

ЗЫ: сам базовый класс для все стратегий тоже довольно компактный, примерно так:

в общем дождусь Вашего примера посмотрю, мне пока нравится, что структура кода читаемая и логичная получается, да и самое главное "во всех этих телодвижениях" - сделать некий прототип в котором можно будет быстро дописывать сами стратегии и тестировать.

Все в принципе уже написано, но код мне не нравится - писал в виде сервисных функций(открыть ордер, расчет лота и т.п. ) в процедурном стиле и потом писал небольшие классы в которых была логика и вызов этих сервисных функций, вот и решил причесать все это по полному )))

//+------------------------------------------------------------------+
class CStrategy
{
protected:
   int x;
public:
   CStrategy(int _x):x(_x){}
   virtual void Algorithm()=0;};
//+------------------------------------------------------------------+
class CStrategy_01:public CStrategy
{
public:
   CStrategy_01():CStrategy(1) {Print(__FUNCTION__);}
   void Algorithm()                 {Print(__FUNCTION__,", x = ",x);       } };
//+------------------------------------------------------------------+
class CStrategy_02:public CStrategy
{
public:
   CStrategy_02():CStrategy(2) {Print(__FUNCTION__);}
   void Algorithm()                 {Print(__FUNCTION__,", x = ",x);       } };
//+------------------------------------------------------------------+
class Context
{
private:
   CStrategy         *s;
public:
   Context(CStrategy* _strategy):s(_strategy) { Print(__FUNCTION__);}
   ~Context()                       { delete s;                            }
   void              GetStrategy()  { s.Algorithm();                       } };
//+------------------------------------------------------------------+
Context c1(new CStrategy_01);
Context c2(new CStrategy_02);
//+------------------------------------------------------------------+
void OnStart()
{  c1.GetStrategy();
   c2.GetStrategy(); }

Как по мне, то вот так лучше будет.

 
Vladimir Simakov:

Как по мне, то вот так лучше будет.

по сути то же самое, но не по книжному! ))))

ЗЫ: все равно прикрутил интерфейс, пусть будет, чисто для понтов!

 
Igor Makanu:

по сути то же самое, но не по книжному! ))))

ЗЫ: все равно прикрутил интерфейс, пусть будет, чисто для понтов!

Как раз в стиле плюсов.)))
 
Vladimir Simakov:
Как раз в стиле плюсов.)))

дык на плюсах мало кто сидит, вернее все прикладные программеры на C# перебрались, а на плюсах только крупные разработчики софта сидят

в C# все примеры через интерфейсы, понятно что толку от них .... не хочу демагогию разводить, но в общем и без интефейсов все можно писать, но как бы концепция, стиль... ну и прочий туман в голове говорит, что вот так писали в Майкрософт в примерах по C#, ты вот тоже сиди так и пиши! 

)))

 
Igor Makanu:

дык на плюсах мало кто сидит, вернее все прикладные программеры на C# перебрались, а на плюсах только крупные разработчики софта сидят

в C# все примеры через интерфейсы, понятно что толку от них .... не хочу демагогию разводить, но в общем и без интефейсов все можно писать, но как бы концепция, стиль... ну и прочий туман в голове говорит, что вот так писали в Майкрософт в примерах по C#, ты вот тоже сиди так и пиши! 

)))

Перебрались потому, что на плюсах неудобно писать под .NET, а шарп изначально разрабатывался, как язык для дотнета. Это мое субъективное мнение, как то писал на плюсах под .NET, осталось впечатление неуклюжести.

Хотя...в новые плюсы много чего добавили, может повеселее стало.

 
Alexey Volchanskiy:

Перебрались потому, что на плюсах неудобно писать под .NET, а шарп изначально разрабатывался, как язык для дотнета. Это мое субъективное мнение, как то писал на плюсах под .NET, осталось впечатление неуклюжести.

Хотя...в новые плюсы много чего добавили, может повеселее стало.

Я как раз сейчас пилю windows form под один таск, потрогал c++/cli и решил ну его и распечатал c#.
 
Vladimir Simakov:
Я как раз сейчас пилю windows form под один таск, потрогал c++/cli и решил ну его и распечатал c#.

Да, на шарпе проще на порядок. И скорость почти одинаковая, вот без cli плюсы выигрывают раза в полтора. 

 
Vladimir Simakov:
Я как раз сейчас пилю windows form под один таск, потрогал c++/cli и решил ну его и распечатал c#.

я в начале года тож пытался потрогать cli ... меня на 2 дня хватило, нечеловеческая логика кто делал этот cli - синтаксис мудреный, все не удобно, инфы с примерами очень мало, имхо или чистый С++ или C# - гуглятся все хотелки, синтаксис понятен - в итоге берешь и пишешь

 
Igor Makanu:

я в начале года тож пытался потрогать cli ... меня на 2 дня хватило, нечеловеческая логика кто делал этот cli - синтаксис мудреный, все не удобно, инфы с примерами очень мало, имхо или чистый С++ или C# - гуглятся все хотелки, синтаксис понятен - в итоге берешь и пишешь

Просто шарп родился где-то около 2000 года и был тогда в очень зачаточном состоянии, а плюсы рулили, вот и сделали мост С++ на дотнет для популяризации.  Кстати, шарп создавали разработчики Delphi и C++Builder, я в то время очень удивлялся, сколько там много общих концепций. Взять те же свойства, события.

Причина обращения: