MQL5におけるOOPに関する質問 - ページ 2

 
Yuriy Asaulenko:
まあ、それはちょっと無理がありますね。この人は最初からOOPにこだわっているんです。せめて、コーヒーを淹れるだけでも。なぜ、パターンブレイクがあるのですか?無能な教師が自分の問題を生徒に転嫁するのはナンセンス。
よく読んでみてください。つまり、人は最初に自分の問題を設定し、OOPに近似したスタイルで解決していくのです。しかし、その後、手続き型プログラミングを教わる。その後、人間の思考と大きく異なるのは、(OOPではなく)手続き型プログラミングであるため、パターンが崩れてしまう。
 
Vasiliy Sokolov:

OOPは、コードやクラス、オブジェクト、ポインタなどの難解な名称を使わずに説明されるべきです。

古典的なプログラミング教育の仕組みは?最初、学生は人間の思考からプログラミングの基本(ループ、関数、変数など 必要な「知識のお荷物」)に移行しようと悶々としています。そして、関数や変数やifがごちゃごちゃになって、多少なりとも整然とした構造になったところで、「ほら、OOPというものがあるじゃないか」と言われるのです。今まで教えられたことを忘れて、人間らしく考えよう」。その結果、テンプレートは崩壊し、苦労して手に入れたばかりの「知の荷物」はゴミ箱に投げ捨てられ、天と地の狭間にいることになる。当然、この「PLO」は、その後数年間、脳の残った部分に震えと痛みを伴う悪い夢として記憶される(他の部分は新しい知識によって焦がされてしまった)。

いや、私はプログラミングを学ぶべきでないと断言します。それどころか、有害で危険なものです。そうではなく、考える ことを教える必要があるのです。そして、それとともに古典的な学習方法の完全な失敗があるのです。

記事を書いていただけますか?
 
pako:
記事を書く
ドンマイ
 
pako:
記事を書く

そうかもしれませんね。しかし、アレクセイはPLOのことをもっとうまく説明できるかもしれない。

 
Комбинатор:
やめてくれ
もう書いているんですか?
 
ノー)
 
Комбинатор:
ノー)
とか書かないでね :)
 
Vasiliy Sokolov:
よく読んでみてください。つまり、ある人が最初に自分のタスクを設定し、OOPに近いスタイルで解決していくということです。しかし、その後、手続き型プログラミングを教わる。その後、人間の思考と大きく異なる手続き型プログラミング(OOPではない)であるため、パターンブレークが発生する。

手続き型プログラミングを事前に学んでおくことは悪いことではないと思います。小説の書き方を学ぶには、まず通常のアルファベットと構文を覚え、読み書きの方法だけを学ぶとよいでしょう。

実は、C/Pascalなどでプログラミングするだけでも、すでに内部構造や機能を知らずにオブジェクトを操作していることになるのです。あとは、それがモノであることを説明し、そのモノの作り方を教えることです。

 
Alexey Volchanskiy:

....

質問です。

MQL5のOOPについて10分間のトピックを提案してください、私はそれをyoutubeに載せます、すなわち、それは皆のために役に立つでしょう

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

気になることは何でも書いてください、整理します、空いた時間でご要望にお応えします。

グッドラック ))

オブジェクトで作品を ライトアップ。
 

問題解決に協力してください。ボタンが2つ、線が1つあります。1つのボタンを押すと編集モードになり、離すとその行が削除されます。2つ目のボタンは、クリックするとその行を固定し、クリックすると編集モードに戻ります。各ボタンは、ラインオブジェクトの 色と他のいくつかのプロパティを 変更することができます。Line "オブジェクトはグローバルに定義されています。ボタンを作成した直後に、各ボタンに「線」オブジェクトへの参照を渡して、「ボタン」オブジェクトの中で参照変数を操作したときに、すべての変更がグローバルな「線」オブジェクトに記憶されるようにすることは可能でしょうか。

ボタンを押す代わりに、add()関数で "Line "オブジェクトのカウンターをインクリメントしているのです。関数の引数に「LINE」オブジェクトを参照で渡せるのはわかるのですが、ちょうど作業バージョンで、そういう関数がいくつかあるので、一度一番最初に参照を渡したいのです。Btn1.add()やBtn2.add()で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);
}

これが、今の私の状況です。