MQL5中的OOP问题 - 页 2

 
Yuriy Asaulenko:
嗯,这有点过分了。这个人从一开始就是为了OOP。至少,只是通过制作一杯咖啡。为什么会有模式中断?IMHO,无能的教师把他们的问题转嫁给学生的无稽之谈。
仔细阅读。这就是我要说的,一个人最初是以一种近似于OOP的风格来设定和解决他/她的问题。但后来他被教导程序化编程。之后,模式就被打破了,因为是程序化编程(不是OOP),与人类的思维有很大的不同。
 
Vasiliy Sokolov:

OOP应该在没有任何代码和所有像类、对象、指针等深奥的术语的情况下进行解释。

古典编程教育是如何运作的?起初,学生痛苦地试图从人类思维转向编程基础知识(循环、函数、变量和其他 类似需要 "知识包袱 "的东西)。然后,当混乱的函数、变量和if形成一些或多或少的有序结构时,学生被告知:"看:有这样一种东西,即OOP。忘掉以前教给你的东西,重新开始像人一样思考"。随之而来的是模板的断裂,刚刚好不容易得到的 "知识包袱 "被扔到了垃圾堆里,而这个人发现自己在天地之间。自然,这个 "PLO "会在几年内被记起,成为一个恶梦,大脑的剩余部分会出现颤抖和疼痛(其他部分已经被新知识烧焦)。

不,我明确指出,一个人不应该学习编程。相反,它是有害和危险的。相反,有必要进行思维 教育。随之而来的是古典学习方法的彻底失败。

你会不会写一篇文章
 
pako:
写一篇文章。
不要
 
pako:
写一篇文章

也许。但阿列克谢可能更有能力解释巴解组织。

 
Комбинатор:
不要。
你已经在写了吗?
 
不 )
 
Комбинатор:
不 )
而且不要写 :)
 
Vasiliy Sokolov:
仔细阅读。这就是我要说的:一个人最初是以近似于OOP的风格设定和解决他的任务。但后来他被教导程序化编程。在这之后,模式破坏就发生了,因为它是程序化编程(不是OOP),与人类的思维有很大不同。

我不认为事先学习程序化编程有什么问题。为了学习如何写小说,从学习正规的字母和句法开始,只需学习如何阅读和写作,这是一个好主意。

实际上,即使只用C/Pascal等编程,我们已经在操纵对象,而不知道它们的内部结构和功能。剩下的就是解释它是一个物体,然后教如何建造这些物体。

 
Alexey Volchanskiy:

....

问题。

建议一个关于MQL5中OOP的话题,时间为10分钟,我将把它放在Youtube上,也就是说,它对每个人都有用。

------------------

写下所有感兴趣的东西,我会整理出来,我会在空闲时间内尽量满足你的要求。

好运))。

用物体 照亮你的工作
 

帮我解决一个问题。有两个按钮和一条线。一个按钮,当按下时,使该行进入编辑模式,当释放时,删除该行。第二个按钮,当点击时,固定该行,当点击时,将其放回编辑模式。每个按钮都可以改变线条对象的 颜色和其他一些属性。"线 "对象是全局定义的。是否可以在创建按钮后立即将 "线 "对象的引用传递给每个按钮,这样当你在 "按钮 "对象内操作引用变量时,所有的变化都会被记在全局 "线 "对象中。

我在下面勾画了一个简化的脚本,它不是按一个按钮,而是一个增加()函数,增加 "Line "对象的计数器。我知道你可以通过引用来传递 "Line "对象作为函数参数,但就在工作版本中,有几个这样的函数,所以我想在一开始就传递一次引用。也就是说,是否可以让Btn1.addition()或Btn2.addition()增加gLine.count?

class CLine
{
    public:
          int   count;
                CLine(void){count=0;};
               ~CLine(void){};
};


class CMyButton
{
    private:   
    public:
                CLine m_Line;
                CMyButton(void){};
               ~CMyButton(void){};
              
                void bind(CLine &aLine) {m_Line = aLine;}
                void addition() {++m_Line.count;}
};




CMyButton  Btn1;
CMyButton  Btn2;

CLine gLine;

void OnStart()
{
   Btn1.bind(gLine);
   Btn2.bind(gLine);
   
   Print("Line.count=", gLine.count);
   Btn1.addition();
   Print("Line.count=", gLine.count, "  Btn1.m_Line.count=", Btn1.m_Line.count);
   Btn2.addition();
   Print("Line.count=", gLine.count, "  Btn2.m_Line.count=", Btn2.m_Line.count);
   Btn1.addition();
   Print("Line.count=", gLine.count, "  Btn1.m_Line.count=", Btn1.m_Line.count);
   Btn2.addition();
   Print("Line.count=", gLine.count, "  Btn2.m_Line.count=", Btn2.m_Line.count);
}

这就是我现在的情况。