MQL5의 OOP에 대한 질문

 

어제 질문이 생겨서 마음속으로 형제들과 상의하기로 결정)

2016년 5월 21일 토요일에 나는 표준 라이브러리 를 예로 들어 OOP의 기초를 한 사람에게 설명했다. 예전에 친구가 MQL4로 프로그래밍 하다가 5년 정도 쉬다가 이제 복귀를 하게 되었어요. 나는 MT5 헤징에 집중하기 시작했습니다. 왜냐하면 나 자신이 지금 그곳에서 모든 것을 다시 하고 있기 때문입니다.

이상하게도 한 사람(Maxim, 나는 당신에 대해 말하고 있는 것입니다, 당신이 읽고 있다면 :))이 OOP의 기본을 이해하고 표준 라이브러리를 예로 사용하여 우리는 심지어 아래의 가장 중요한 부분을 가까스로 통과했습니다. 디버거.

하지만!! 나는 기록을 약속했지만 그것들을 위해. 모든 것이 야옹으로 날아간 이유 ((

나는 OOP를 위해 특별히 비디오 치트 시트를 만들겠다고 약속했습니다. 제 생각에는 각 10분

문제:

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

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

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

행운을 빕니다))

 
Alexey Volchanskiy :

어제 질문이 생겨서 마음속으로 형제들과 상의하기로 결정)

2016년 5월 21일 토요일에 나는 표준 라이브러리 를 예로 들어 OOP의 기초를 한 사람에게 설명했다. 예전에 친구가 MQL4로 프로그래밍 하다가 5년 정도 쉬다가 이제 복귀를 하게 되었어요. 나는 MT5 헤징에 집중하기 시작했습니다. 왜냐하면 나 자신이 지금 그곳에서 모든 것을 다시 하고 있기 때문입니다.

이상하게도 한 사람(Maxim, 나는 당신에 대해 말하는 것입니다, 당신이 읽고 있다면 :)) OOP의 기본을 이해하고 표준 라이브러리를 예로 사용하여 우리는 심지어 아래의 가장 중요한 부분을 가까스로 통과했습니다. 디버거.

하지만!! 나는 기록을 약속했지만 그것들을 위해. 모든 것이 야옹으로 날아간 이유 ((

나는 OOP를 위해 특별히 비디오 치트 시트를 만들겠다고 약속했습니다. 제 생각에는 각 10분

문제:

MQL5의 OOP 주제에 대해 10분 동안 알려주십시오. YouTube에 올릴 것입니다. 즉, 모두에게 유용할 것입니다.

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

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

행운을 빕니다))

Alexey, 포인터, 함수에 대한 포인터, 템플릿 클래스 작업 등 도움말에서 조명이 가장 약한 위치에 대한 예제를 만드십시오. 솔직히 말해서 내 생각에는 C ++에 그러한 비디오가 많이 있으며 어떤 식 으로든 지식을 증가시키지는 않지만 문학, 웨비나 및 근면은 지식을 증가시키는 데 필요합니다.
 
coderex :
Alexey, 포인터, 함수에 대한 포인터, 템플릿 클래스 작업 등 도움말에서 조명이 가장 약한 위치에 대한 예제를 만드십시오. 솔직히 말해서 내 생각에는 C ++에 그러한 비디오가 많이 있으며 어떤 식 으로든 지식을 증가시키지는 않지만 문학, 웨비나 및 근면은 지식을 증가시키는 데 필요합니다.
MQL에는 포인터가 없고 디스크립터가 있습니다.) 함수에 대한 포인터(조건부)가 최근에 도입되었습니다. 일반적인 개념에 대한 일종의 목발입니다.
 
Alexey Volchanskiy :
MQL에는 포인터가 없고 디스크립터가 있습니다.) 함수에 대한 포인터(조건부)가 최근에 도입되었습니다. 일반적인 개념에 대한 일종의 목발입니다.

Alexey, 단어에 집착하지 마십시오 :) "설명자"를 썼다면 어떤 이유로 든 당신이 나를 즉시 이해하지 못할 것이라고 확신합니다. 그리고 최근에 소개된 것과 오래전에 소개된 것은 본질이 바뀌지 않고, 이러한 질문은 참고용으로 공중에 떠 있고, 그에 대한 한마디도, 조금도 없습니다. 그리고 이러한 이름은 C++ 및 MQL과 관련하여 내부에서 어떻게 다르게 작동하든 결과적으로 외부적으로는 동일한 방식으로 작동합니다. 적어도 개발자는 그렇게 하려고 합니다. 이미 소개된 포인터들과의 비교도 해보고요 :) 솔직히 MT의 경우 어디에 써야할지 감이 안잡힙니다.

그러나 나는 여전히 이러한 문제를 다룬다면 많은 초보 코더들이 당신에게 감사할 것이라고 생각합니다. 한 번은 당신의 비디오를 본 적이 있습니다, 당신은 사람들에게 알기 쉽게 설명하는 방법을 알고 있습니다 :)

 
coderex :

Alexey, 단어에 집착하지 마십시오 :) "설명자"를 썼다면 어떤 이유로 든 당신이 나를 즉시 이해하지 못할 것이라고 확신합니다. 그리고 최근에 소개된 것과 오래전에 소개된 것은 본질이 바뀌지 않고, 이러한 질문은 참고용으로 공중에 떠 있고, 그에 대한 한마디도, 조금도 없습니다. 그리고 이러한 이름은 C++ 및 MQL과 관련하여 내부에서 어떻게 다르게 작동하든 결과적으로 외부적으로는 동일한 방식으로 작동합니다. 적어도 개발자는 그렇게 하려고 합니다. 이미 소개된 포인터들과의 비교도 해보고요 :) 솔직히 MT의 경우 어디에 써야할지 감이 안잡힙니다.

그러나 나는 여전히 이러한 문제를 다룬다면 많은 초보 코더들이 당신에게 감사할 것이라고 생각합니다. 한 번은 당신의 비디오를 본 적이 있습니다, 당신은 사람들에게 알기 쉽게 설명하는 방법을 알고 있습니다 :)

IMHO, 어떤 경우에도 교육 비디오에서 도움말의 확장 버전을 만들어서는 안 됩니다. 임무는 누락된 세부 사항을 봉헌하는 것이 아니라 가르치는 것입니다.
 
Alexey Volchanskiy :

문제:

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

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

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

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

 
Vasiliy Sokolov :
IMHO, 어떤 경우에도 교육 비디오에서 도움말의 확장 버전을 만들어서는 안 됩니다. 임무는 누락된 세부 사항을 봉헌하는 것이 아니라 가르치는 것입니다.

Alexey는 포럼 회원들의 의견을 물었고 나는 그에게 내 의견을 썼고 그곳에서 무슨 일이 일어날지는 Alexey만이 알고 있습니다 :)

그런데 어디에도 언급되지 않은 경우 어떻게 배울 수 있습니까? 나는 그것에 대해 알고 있습니다. 저는 C++로 작성했고 MQL5만 배우는 사람들은 이러한 미묘함에 대해 배우지 못할 것입니다. 도움말에 이에 대한 단어가 없기 때문입니다. :)

 
OOP를 잘하고 싶습니까? - UML 배우기
 

Vasiliy Sokolov :

그런 다음, 함수, 변수 및 if의 머리 부분이 일종의 정렬된 구조를 형성할 때 학생은 다음과 같이 말합니다. 다시 인간" . 그 뒤를 패턴의 단절로, 그렇게 어렵게 얻은 "지식의 가방"은 쓰레기통에 버려지고, 사람은 하늘과 땅 사이 어딘가에 있는 자신을 발견한다.

자, 당신은 충분히 먹었습니다. 사람은 이미 초기에 OOP에만 종사하고 있습니다. 커피 한 잔만 해도. 일부 패턴의 중단은 어디에서 발생합니까? IMHO, 문제를 학생에게 전가하는 어리석은 교사의 넌센스.
 

OOP로 사람들을 놀라게 하지 마십시오.

MQL5에서 좋은 Expert Advisor나 다른 것들을 만들기 위해 OOP를 전혀 알 필요는 없습니다. 클래스나 포인터라는 단어를 알 필요도 없습니다.

OOP는 주로 팀워크가 진행 중일 때 대규모 작업과 컴플렉스를 만드는 데 사용됩니다.

그리고 MQL5에서는 OOP 없이도 할 수 있습니다.

나는 10년 이상 동안 OOP에 대한 지식이 주요 요구 사항인 외국 회사에서 일하기를 원하는 프로그래머를 위해 훈련해 왔다고 덧붙입니다.

내가 OOP의 상대라고 생각하지 않기 위해 이 말을 하는 것이다. 삶을 복잡하게 만들지 않고 의도한 목적으로 사용하기만 하면 됩니다.

 

OOP를 이해하는 것은 프로그램의 복잡성을 수반합니다. 프로그래머는 코드 시트를 여러 기능으로 분할하기 시작합니다. 다양한 기능의 결과를 서로 전송해야 할 필요가 있습니다. 곧 그는 함수 인수를 통해 모든 것을 전송하는 것이 최상의 솔루션이 아니라고 의심하기 시작합니다. 아마도 그는 전역 생성을 시작할 것입니다. 변수 , 사람은 거의 oop에 대해 익었고, 남은 것은 논리적으로 관련된 기능과 개인 데이터를 강조 표시하는 것뿐입니다. 내 경험: mkl4로 돌아가서 다음과 같은 것을 만들기 시작했습니다.

 // file_1.mqh
int name1_counter = 0 ;
int name1_data = 0 ;
double name1_value = 0 ;
void name1_action() {name1_counter++; name1_data = ;}
int name1_get() {return }

// file_2.mqh
int name2_counter = 0 ;
int name2_data = 0 ;
double name2_value = 0 ;
void name2_action() {}
int name2_get() {}


나는 OOP에 대해서도 몰랐지만 이미 거의 다 되었습니다(예, 단 하나의 인스턴스이지만 스켈레톤은 이미 준비되어 있습니다). 나는 이 단계를 통해 학생들을 안내할 것입니다. int와 if의 시트로 시작하여 점차적으로 코드를 구조화하십시오. 결국, 사람은 거의 자신이 OOP에 올 것이고, 가장 중요한 것은 그가 어떻게 왔는지 이해할 것이라는 것입니다.

얼마나 오래 전에 이 "마법" OOP에 대한 책 한 권을 읽었는지 기억합니다. 이 책의 클라이맥스는 OOP의 힘이 있는 곳인 가상 기능의 데모였습니다. 그런 작가들을 찢어버릴 손. 그래서 제대로 된 책을 한 권도 본 적이 없다.