OOP与程序化编程 - 页 37

 
Andrei:

一个类只有内部变量,没有输入或输出变量...你在哪里看到过这样一个与外界没有接触、在自己的汁液中沸腾的物体在编程中的用途?


+100

 

这场讨论让我想起了他们最近播放的一段视频 :)


 
Andrei:

该类只有内部变量,没有输入和输出...你在哪里看到过这样的物体在编程中的用途,它与外界没有任何接触,在自己的汁液中烹饪?

该类有一个接口,通过该接口与外部世界进行互动。它允许我们切断所有 "不必要 "的东西,这些东西不打算用于外部区块。

例如,在我的交易处理器中,我有一些变量,其中一些用于MT4,另一些用于MT5,还有一些用于两个平台。但所有这些变量对我的TS的任何部分都是绝对不必要的。恭敬地说,他们没有机会接触到它们。TS的所有部分都收到了交易处理器的虚拟接口,其中只定义了TS操作所需的功能,而所有不相关的东西,所有依赖平台的和 "特定交易 "的功能都被删除。

这与交易头寸是一样的--TS的某些部分不能直接接触到交易头寸。他们只能得到一个虚拟接口,允许计算开放的交易组件的数量,以及每个组件的数据。但是TS甚至不知道它在处理什么--无论是MT4订单还是MT5头寸。所有这些都对她隐瞒了。TS不应该访问 用于处理MT4订单或MT5头寸的变量,而它没有这样做。

 
George Merts:

该类有一个接口,通过该接口与外部世界进行互动。它允许你切断一切不用于外部区块的 "多余的"。

在这里,特别是在我的交易处理器中--我有一些变量,其中一些用于MT4,另一些用于MT5,还有一些用于两个平台。但所有这些变量对我的TS的任何部分都是绝对不必要的。恭敬地说,他们没有机会接触到它们。TS的所有部分都收到交易处理器的虚拟接口,其中只定义了TS操作所需的功能,所有不必要的东西,所有平台依赖和 "特定交易",都被删除。


让我们非常具体地举出一个非常明确的例子。

1.在输入端有套管

2.输出端有一个买/卖指令。

3.输入通过两个擦边球的交叉点转换为输出。

它们之间的OOP是什么,为什么?

 
СанСаныч Фоменко:

向元引解释一下:为什么他们要为终端、为语言写大量的手册,一般来说,这种堆积如山的软件产品的文档在哪里,例如Cp...事实上,是否有任何软件产品没有文档?很奇怪,你没有看到这一点。


不幸的是,你又把事情搞混了。一个程序的手册不是文件。在上个世纪,他们曾经维护过文件,并遵守国家标准。现在我们不需要这一切了。现在,我们只有ToR。现在的文档由测试案例和类接口组成。当然,类的命名方式是,仅凭它的名字就可以明确它的作用和用途。

 
Ihor Herasko:

不幸的是,你又一次混淆了这些术语。方案手册不是文件。在上个世纪,有文件,而且他们遵循GOST等规定。现在这一切都没有必要了。剩下的就是责任书了。现在的文档由测试案例和类接口组成。当然,类的命名方式也是如此,我们可以通过它们的名字了解它们的作用,以及它们的用途。

文件被保存在上个世纪,我们遵守国家标准等等。现在这一切都没有必要了。

我绝对同意你的观点,因为他们不写任何严肃的东西。

一直以来都有 "ToR"。但这种简单的程序,其算法可以完全在TT中定义,在上个世纪没有人写过,即使现在也没有认真的人写过。

在开发编译器时,"测试用例和类接口 "是怎么回事? 在进行数学算法编程时?



PS。

以前有一个关于perls的评分标准。

这是在里面。

程序手册不是文件。

 
СанСаныч Фоменко:

让我们具体地、非常清楚地讲一个例子。

1.输入是一个商

2.输出是一个买入/卖出的命令。

3.输入通过两个擦边球的交叉点转换为输出。

它们之间的OOP是什么,为什么?

这很简单。

有一个输入发生器。它要求专家顾问提供数据提供者的接口,交易头寸的接口和交易处理器的接口。 然后从数据提供者那里要求提供两个面具接口。

当OnTick()被调用时--同样的函数从输入发生器被调用。输入发生器看着挥舞的界面,比较其过去的值。如果它检测到一个交叉点,它就会查看交易位置界面。如果它看到我们不在位置上 - 它调用交易处理器接口的买入或卖出功能。如果它看到有一个头寸,如果这个头寸是在所需的方向--我们什么都不做,如果是相反的--我们在交易界面中调用平仓 功能,然后买入或卖出。

您应该注意,生成器不能访问任何变量,既不能用于计算擦边球,也不能用于获得交易头寸,更不能用于在MT4中开立订单或在MT5中开立头寸。日期提供者只知道被要求的湿巾的情况。他在每次打勾时都会重新计算并更新它们。甚至没有其他人知道这件事。一个贸易处理者--专门完成通过界面传给他的指令,甚至不知道这些指令来自谁。专家顾问--在每一个刻度上更新交易位置,并将其提供给所要求的界面,而不研究谁需要它以及这个区块内有什么。所有区块都是分离的,并完全通过预定义的接口进行通信。

 
СанСаныч Фоменко:

让我们具体地、非常清楚地讲一个例子。

1.输入是一个商

2.输出是一个买入/卖出的命令。

3.输入通过两个擦边球的交叉点转换为输出。

它们之间的OOP是什么,为什么?

/// применение  ООП для элементарных задач (фактически весь код)

OnInit(){

Series FAST_MA=MA(...);

Series SLOW_MA=MA(...);

OnCrossUp(FAST_MA,SLOW_MA,Buy);

OnCrossDn(FAST_MA,SLOW_MA,Sell);

}

但它本身就是在已制定好的库中的OOP--这样做是为了写得简单易行,同时也是为了使一切都能得到调试。有 "报价的来源 "和 "订单的执行者"、"时间序列"、"指标 "和许多其他东西的接口......但这个简短的代码是为真实市场的严格条件准备的,有所有的故障和讨厌的事情。

通过一个简单的动作,你可以采取一个任意的商数(合成)或在另一个符号上执行......或只是命令另一个专家顾问(这就是OOP的优势,里面的复杂性,应用的问题需要很少的努力)。

 
George Merts:

这很简单。

有一个输入发生器。它--向专家顾问请求数据提供者的接口,交易头寸的接口和交易处理器的接口。 然后,向数据提供者请求两个马车的接口。

当OnTick()被调用时--同样的函数从输入发生器被调用。输入发生器看着挥舞的界面,比较其过去的值。如果它检测到一个交叉点,它就会查看交易位置界面。如果它看到我们不在位置上 - 它调用交易处理器接口的买入或卖出功能。如果它看到有一个头寸,如果这个头寸是在所需的方向--我们什么都不做,如果是相反的--我们在交易界面中调用平仓 功能,然后买入或卖出。

您应该注意,生成器不能访问任何变量,既不能用于计算擦边球,也不能用于获得交易头寸,更不能用于在MT4中开立订单或在MT5中开立头寸。日期提供者只知道被要求的湿巾的情况。他在每次打勾时都会重新计算并更新它们。甚至没有其他人知道这件事。一个贸易处理者--专门完成通过界面传给他的指令,甚至不知道这些指令来自谁。专家顾问--在每一个刻度上更新交易位置,并将其提供给所要求的界面,而不研究谁需要它以及这个区块内有什么。所有的区块都是分开的,只通过预定的接口进行通信。


惊人的!

我在想:在现代编程中,是否有其他的可能性来更突然地混淆蛋级问题?

 
Maxim Kuznetsov:

/// применение  ООП для элементарных задач (фактически весь код)

OnInit(){

Series FAST_MA=MA(...);

Series SLOW_MA=MA(...);

OnCrossUp(FAST_MA,SLOW_MA,Buy);

OnCrossDn(FAST_MA,SLOW_MA,Sell);

}

但是OOP本身就在开发的库里面--它是为了方便简单地编写,一切都在这个时候进行微调。有 "报价源 "和 "订单执行者 "接口,"时间序列","指标 "和许多其他的东西......但这个简短的代码已经准备好应对艰难的真实市场条件,以及所有的故障和讨厌的东西。

通过一个简单的动作,你可以采取一个任意的商数(合成)或在另一个符号上执行......或只是命令另一个专家顾问(这就是OOP的优势,里面的复杂性,应用的问题需要很少的努力)。


我的OnInit()看起来也差不多--有十几行...

那么?