기고글 토론 "바보도 할 수 있는 MQL: 객체 클래스 디자인 및 생성 방법" - 페이지 5

 
joo:

그래도 OOP를 사용하면 어떤 이점이 있는지 모르겠습니다. ....

따라서 작업에는 필요하지 않습니다.
 
DC2008:
따라서 애플리케이션에 필요하지 않습니다.

아니면 필요하지만 제가 모르는 건가요? :)

알아낼 수 있도록 도와주세요.

 
joo:

... 이 문제를 해결하도록 도와주세요.

유전 알고리즘을 다시 작성해보십시오. 그들은 단지 거기에 가기를 구걸하고 있습니다.

게다가, 당신은 너무 게으 르기 때문에 다른 사람의 코드를 선택하기에는 너무 게으르지 만 자신의 코드는 선택하지 않습니다. 시작하면 성공할 수 있으며 동시에 두 변형의 성능을 비교할 수 있습니다. 제 조잡한 통계에 따르면 oop은 프로그램 작업 속도를 느리게 합니다.

 
joo:

그래도 OOP를 사용하면 어떤 이점이 있는지 모르겠습니다. 어쩌면 그것은 그러한 "클래스"가 어떤 종류의 짐승인지 이해하지 못하게 할 수도 있습니다.

당신이 말한 것은 별도의 기능으로 공식화 될 수 있습니다. 아니면 전부는 아닐까요? 저는 까다롭게 굴지 않으니 올바르게 이해해 주세요. 저는 OOP의 원리를 이해하려고 노력하고 있습니다.

구체적인 간단한 예시를 통해 적절한 형식의 코드 (OOP 포함 및 제외)의 작업 속도 차이와 프로젝트 구성의 단순성 측면에서 OOP의 장점을보고 싶습니다.

실력을 갖춘 개발자로부터 OOP에 대한 질문을 듣는 것은 이상합니다 ;-). 농담이겠죠. 물론 OOP 없이도 모든 것을 함수로 구현할 수 있습니다. 그러나 인간의 관점에서 볼 때 개발 및 유지 관리가 덜 편리합니다. OOP는 프로그램 자체의 속도를 증가시키지 않습니다.

전략 클래스로 같은 예를 계속 이어가자면 전략에 따라 오픈 포지션을 트롤링해야 하는 코드 조각이 있다고 가정해 봅시다. 이를 함수에 구현하면 다음과 같은 결과를 얻을 수 있습니다:

foreach Position in Positions[]
 if StrategyType(Position) == N1 TrailTypeN1(Position);
 else if StrategyType(Position) == N2 TrailTypeN2(Position);
 ...

그리고 OOP를 사용한다면:

foreach Position in Positions[]
 Position.Trail;

장점이 있습니다: 기록이 간결하고 명확하며, 새로운 유형의 전략을 추가하는 경우 코드의 이 부분을 변경할 필요가 없으며, (잠재적으로 많은) 매개 변수를 전달하거나 다른 코드 섹션에서 실수로 손상될 수 있는 전역 변수, 배열을 대신 선언할 필요가 없습니다....

일반적으로이 주제에 대한 책이 많이있는 것 같습니다. 아니면 질문의 본질이 다른 건가요?

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
 
DC2008:

유전자 알고리즘을 다시 작성해 보세요. 그들은 그냥 거기 가자고 애원하고 있습니다.

기사를 작성한 후 경영진은 저에게 OOP로 다시 작성해 보라고 제안하거나 요청했습니다. 저는 솔직히 잘 모른다고 인정했습니다. 그대로 게시해도 좋다는 허락을 받았습니다.

시도해보고 있습니다. 아직 작동하지 않습니다. 다시 실행하면 OOP와 문서가 포함된 코드가 문서에 추가됩니다.

DC2008:

시작하면 성공할 것이며 동시에 두 변형의 성능을 비교합니다. 내 스크래피 통계에 따르면 OOP는 프로그램 속도를 느리게합니다.

글쎄, 당신은 OOP가있는 코드가 덜 반응한다는 내 의견을 확인합니다. OOP를 아는 개발자와 함께 작업 한 경험에 따르면 성능이 최대 두 배까지 상당히 크게 저하됩니다 (동일한 작업을 수행하는 내 코드와 파트너의 코드를 비교했습니다).

마케터:

실력을 갖춘 개발자로부터 OOP에 대한 질문을 들으니 이상하네요 ;-). 농담이겠죠.

안타깝게도 농담이 아닙니다. 예, 저는 매머드 크기로 자랐습니다. 이제 나는 아타 비즘을 없애려고 노력하고 있습니다-양모.

마케터:

물론 OOP 없이도 할 수 있고 기능별로 모든 것을 구현할 수 있습니다. 그러나 인간의 관점에서 볼 때 개발 및 유지 관리가 덜 편리합니다.

예, 저는 "유연성"을 원합니다. 그래서 관심이 있습니다.

마케터:

..............

일반적으로이 주제에 대한 많은 책이 있습니다. 아니면 질문의 본질이 다른 방식입니까?

분명히 나는 약간의 미묘함을 포착하지 못합니다. :(

오, 글쎄요. 나는 내 방식대로이 작은 벽을 극복 할 것입니다. :)

 

장난하세요?

이 책은 OOP를 배우려는 초보 프로그래머를 위한 '초보자' 가이드가 아닙니다... 그저 엉터리입니다. 너무 모호해서 신규 또는 초보 프로그래머에게 도움이 되지 않는 애플리케이션의 코드를 잘라내어 붙여넣은 것입니다.

 
수업을 조사하기 시작했습니다. 이 기사를 발견했습니다. 예, 예, 이러한 간단한 인터페이스를 Expert Advisor에 삽입해야합니다. 저자의 파일을보고 싶었지만 거기에 아무것도 없습니다 ... :-( 더 정확하게는 마스터윈도우-독.zip 폴더에 빈 도움말 파일 마스터윈도우-독.chm이 있습니다 안타깝습니다! 이 문서에 언급 된 모든 것이 이미 오래되었을 수 있습니까?
 
Aleksandr Brown:
수업을 조사하기 시작했습니다. 이 기사를 발견했습니다. 예, 예, 이러한 간단한 인터페이스를 Expert Advisor에 삽입해야합니다. 저자의 파일을보고 싶었지만 거기에 아무것도 없습니다 ... :-( 더 정확하게는 마스터윈도우-독.zip 폴더에 빈 도움말 파일 마스터윈도우-독.chm이 있습니다 안타깝습니다! 이 문서에 언급 된 모든 것이 이미 오래 되었습니까?

확인했습니다. 파일은 정상입니다.

만일을 대비하여 여기에 붙여넣겠습니다.

파일:
 
Sergey Pavlov:

확인했습니다. 파일은 괜찮습니다.

만일을 대비해 여기에 넣어두겠습니다.

배려해 주셔서 정말 감사합니다. 인정할게요, 제가 좀 어리석었어요. 며칠 전에 새 운영 체제를 설치했는데 보안 서비스가 인터넷에서 다운로드한 모든 파일을 차단했습니다. 보다 정확하게는 도움을 받아 열린 프로그램이 시작되었지만 다운로드 한 파일의 내용은 표시되지 않았습니다. 이제 모든 것이 설정되었으며 기사의 첨부 파일도 정상적으로 열립니다. 모두 매우 훌륭하고 명확합니다.
 
마스터윈도우를 컴파일하려고 할 때 "WinEXE.Run()" 줄에서 "'CMasterWindowsEXE::Run' - 보호된 멤버 함수 ClassMasterWindows.mqh를 호출할 수 없습니다"라는 메시지가 표시됩니다. 이 문제를 해결하는 방법을 알려주실 수 있나요?