MQL5의 OOP에 대한 질문 - 페이지 2

 
Yuriy Asaulenko :
글쎄, 당신은 충분했습니다. 사람은 이미 초기에 OOP에만 종사하고 있습니다. 커피 한 잔이라도. 일부 패턴의 중단은 어디에서 발생합니까? IMHO, 문제를 학생에게 전가하는 어리석은 교사의 넌센스.
주의 깊게 읽으십시오. 나는 이것에 대해 이야기하고 있습니다. 사람은 처음에 OOP에 가까운 스타일로 자신의 작업을 설정하고 해결합니다. 그러나 그는 절차적 프로그래밍을 배운다. 그 후에 템플릿이 손상됩니다. 이것은 인간의 사고와 매우 다른 절차적 프로그래밍(OOP가 아님)입니다.
 
Vasiliy Sokolov :

OOP는 코드 없이 설명되어야 하며 클래스, 객체, 포인터 등과 같은 이 난해한 명명법은 모두 설명해야 합니다.

클래식 프로그래밍은 어떻게 작동합니까? 처음에 학생은 고통스럽게 인간의 생각에서 기본 프로그래밍으로 이동하려고 시도합니다(모든 종류의 사이클, 함수, 변수 및 기타 쓰레기 , 기타 필요한 "지식 수하물"이 있음). 그런 다음, 함수, 변수 및 if의 머리 부분이 일종의 정렬된 구조를 형성할 때 학생은 다음과 같이 말합니다. 다시 인간" . 그 뒤를 패턴의 단절로, 그렇게 어렵게 얻은 "지식의 가방"은 쓰레기통에 버려지고, 사람은 하늘과 땅 사이 어딘가에 있는 자신을 발견한다. 당연히 이 "OOP"는 뇌의 나머지 회선에 전율과 통증이 있는 악몽으로 몇 년 동안 여전히 기억됩니다(나머지는 결국 새로운 지식에 의해 소진되었습니다).

아니요, 프로그래밍을 배우기 위해 프로그래밍을 배울 필요가 없다고 단호하게 선언합니다. 오히려 해롭고 위험합니다. 대신 생각 을 가르치는 것이 필요합니다. 그리고 이것으로 고전적인 교수법의 완전한 실패.

기사를 쓸까
 
pako :
기사를 쓸까
필요 없음
 
pako :
기사를 쓸까

아마도. 그러나 Aleksey는 OOP를 더 잘 설명할 수 있습니다.

 
Комбинатор :
필요 없음
당신은 이미 쓰고 있습니까?
 
아니요 )
 
Комбинатор :
아니요 )
그리고 쓰지 마세요 :)
 
Vasiliy Sokolov :
주의 깊게 읽으십시오. 나는 이것에 대해 이야기하고 있습니다. 사람은 처음에 OOP에 가까운 스타일로 자신의 작업을 설정하고 해결합니다. 그러나 그는 절차적 프로그래밍을 배운다. 그 후에 템플릿이 손상됩니다. 이것은 인간의 사고와 매우 다른 절차적 프로그래밍(OOP가 아님)입니다.

나는 먼저 절차적 프로그래밍을 배우는 데 아무런 문제가 없다고 생각합니다. 소설 쓰는 법을 배우려면 일반 알파벳과 문법을 배우고 단순히 읽고 쓰는 법을 배우는 것부터 시작하는 것이 좋습니다.

사실 간단한 C/Pascal 등으로 프로그래밍을 할 때도 내부 구조와 기능을 모른 채 이미 객체를 조작하고 있습니다. 이것이 물건임을 설명하고 이러한 물건을 만드는 방법을 가르치는 것이 남아 있습니다.

 
Alexey Volchanskiy :

....

문제:

10분 동안 MQL5의 OOP에 대한 주제를 알려주세요. YouTube에 올릴 것입니다. 즉, 모두에게 유용할 것입니다.

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

흥미로운 모든 것을 작성하십시오, 나는 그것을 정리할 것입니다, 나는 자유 시간의 틀 내에서 귀하의 요청을 만족시키려고 노력할 것입니다

행운을 빕니다))

개체로 작업을 조명합니다.
 

문제를 해결하는 데 도움이 됩니다. 두 개의 버튼과 라인이 있습니다. 하나의 버튼을 누르면 편집 모드에서 라인이 표시되고, 놓으면 라인이 삭제됩니다. 두 번째 버튼을 누르면 수정되고, 놓으면 편집 모드로 다시 전환됩니다. 각 버튼은 "선" 개체의 색상 및 기타 속성을 변경할 수 있습니다. "선" 개체는 전역 수준에서 설정됩니다. "Button" 개체 내부의 참조 변수를 조작할 때 모든 변경 사항이 전역 "Line" 개체에 저장되는 방식으로 버튼을 생성한 직후에 "Line" 개체에 대한 참조를 각 버튼에 전달할 수 있습니까?

아래에는 버튼을 클릭하는 대신 "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);
}

이것이 지금 나에게 일어나는 일입니다.