OOP 대 절차 프로그래밍 - 페이지 37

 
Andrei :

클래스에는 내부 변수만 있고 입력 또는 출력이 없습니다... 외부 세계와 접촉하지 않고 자체 주스에서 끓는 그러한 객체의 프로그래밍에서 사용을 본 적이 있습니까?


+100

 

토론을 하던 중 사람들이 최근에 보여준 한 비디오가 떠올랐습니다. :)


 
Andrei :

클래스에는 내부 변수만 있고 입력 또는 출력이 없습니다... 외부 세계와 접촉하지 않고 자체 주스에서 끓는 그러한 객체의 프로그래밍에서 사용을 본 적이 있습니까?

그러니 잠깐만요. 클래스에는 외부 세계와 상호 작용하는 인터페이스가 있습니다. 그것은 당신이 불필요한 블록을위한 것이 아닌 모든 "불필요한"것을 차단할 수있게합니다.

여기 특히 내 거래 프로세서에는 두 플랫폼 모두에 대해 변수가 있습니다. 변수 중 일부는 MT4용이고 다른 변수는 MT5용이며 다른 변수는 두 가지입니다. 그러나 이러한 모든 변수는 TS의 어떤 부분에서도 절대적으로 필요하지 않습니다. 따라서 액세스 권한이 없습니다. TS의 모든 부분은 TS의 운영에 필요한 기능만 정의하고 불필요한 모든 플랫폼 종속 및 "거래별"을 제거하는 거래 프로세서의 가상 인터페이스를 받습니다.

트레이딩 포지션과 동일 - TS 부품은 트레이딩 포지션에 직접 접근할 수 없습니다. 그들은 열린 거래 구성 요소의 수와 각 구성 요소의 데이터를 계산할 수 있는 가상 인터페이스만 얻을 수 있습니다. 그러나 동시에 TS는 MT4 주문 또는 MT5 위치 중 무엇을 처리하고 있는지조차 모릅니다. 이 모든 것이 그녀에게 숨겨져 있습니다. TS는 MT4의 주문 또는 MT5의 위치 작업에 사용되는변수에 액세스할 수 없어야 합니다.

 
George Merts :

그러니 잠깐만요. 클래스에는 외부 세계와 상호 작용하는 인터페이스가 있습니다. 그것은 당신이 불필요한 블록을위한 것이 아닌 모든 "불필요한"것을 차단할 수있게합니다.

여기 특히 내 거래 프로세서에는 두 플랫폼 모두에 대해 변수가 있습니다. 변수 중 일부는 MT4용이고 다른 변수는 MT5용이며 다른 변수는 두 가지입니다. 그러나 이러한 모든 변수는 TS의 어떤 부분에서도 절대적으로 필요하지 않습니다. 따라서 액세스 권한이 없습니다. TS의 모든 부분은 TS의 운영에 필요한 기능만 정의하고 불필요한 모든 플랫폼 종속 및 "거래별"을 제거하는 거래 프로세서의 가상 인터페이스를 받습니다.


구체적이고 매우 명확한 예를 들어보겠습니다.

1. 코티르 입구에서

2. 출구에서 매수/매도 명령.

3. 입력은 두 체커의 교차점에서 출력으로 변환됩니다.

그들 사이의 OOP는 무엇이며 그 이유는 무엇입니까?

 
СанСаныч Фоменко :

메타 따옴표에 이것을 설명하십시오. 왜 터미널, 언어 및 일반적으로 Cpp와 같은 소프트웨어 제품에 대한 문서의 산은 어디에서 거대한 매뉴얼을 작성 했습니까? 그리고 일반적으로 소프트웨어 제품이 있습니까? 문서 없이? 당신이 이것을 알아차리지 못한다는 것은 매우 이상한 일입니다.


불행히도, 당신은 다시 개념을 대체합니다. 프로그램 매뉴얼은 문서가 아닙니다. 문서는 지난 세기에 보관되었으며 GOST가 관찰되었습니다. 이제 이 모든 것이 필요하지 않습니다. 남은 것은 TK뿐이다. 문서는 이제 테스트 케이스 및 클래스 인터페이스입니다. 게다가 클래스는 이름만으로도 이미 무엇을 하고 어떤 목적으로 사용되는지 명확하도록 이름이 지정됩니다.

 
Ihor Herasko :

불행히도, 당신은 다시 개념을 대체합니다. 프로그램 매뉴얼은 문서가 아닙니다. 문서는 지난 세기에 보관되었으며 GOST가 관찰되었습니다. 이제 이 모든 것이 필요하지 않습니다. 남은 것은 TK뿐이다. 문서는 이제 테스트 케이스 및 클래스 인터페이스입니다. 게다가 클래스는 이름만으로도 이미 무엇을 하고 어떤 목적으로 사용되는지 명확하도록 이름이 지정됩니다.

문서는 지난 세기에 보관되었으며 GOST가 관찰되었습니다. 이제 이 모든 것이 필요하지 않습니다.

진지한 것은 아무것도 쓰여지지 않았기 때문에 여기에서 나는 당신에게 절대적으로 동의합니다.

항상 TK가 있었습니다. 그러나 TOR에서 그 알고리즘을 완전히 정의할 수 있는 그러한 간단한 프로그램은 지난 세기에 단순히 작성되지 않았으며 진지한 사람들은 지금 작성하지 않습니다.

컴파일러를 개발할 때 어떤 종류의 "테스트 케이스 및 클래스 인터페이스"가 있습니까? 수학 알고리즘을 프로그래밍할 때?



추신.

진주로 향하는 제목이 있었습니다.

그녀 안에 있어

프로그램 매뉴얼은 문서가 아닙니다.

 
СанСаныч Фоменко :

구체적이고 매우 명확한 예를 들어보겠습니다.

1. 코티르 입구에서

2. 출구에서 매수/매도 명령.

3. 입력은 두 체커의 교차점에서 출력으로 변환됩니다.

그들 사이의 OOP는 무엇이며 그 이유는 무엇입니까?

모든 것이 아주 간단합니다.

입력 생성기가 있습니다. EA에서 데이터 제공자 인터페이스, 거래 포지션 인터페이스 및 거래 프로세서 인터페이스를 요청합니다. 그런 다음 데이터 공급자에게 제스처의 두 가지 인터페이스를 요청합니다.

OnTick()이 호출되면 입력 생성기에 대해 동일한 함수가 호출됩니다. 입력 생성기는 틱의 인터페이스를 보고 과거 값을 비교합니다. 교차점이 감지되면 거래 포지션 인터페이스를 살펴봅니다. 우리가 포지션을 벗어났다고 판단되면 거래 프로세서의 인터페이스에서 매수 또는 매도 기능을 호출합니다. 위치가 존재하는 것으로 확인되면 위치가 올바른 방향이면 아무 것도 하지 않고 반대 방향이면 거래 인터페이스에서 위치 마감 기능을 호출하고 구매 또는 판매합니다.

동시에, 생성기는 스트로크 계산, 거래 포지션 획득, MT4의 개시 주문 또는 MT5의 포지션에 대한 변수에 액세스할 수 없습니다. 데이터 공급자 - 요청한 시스템에 대해서만 알고 있습니다. 매 틱마다 다시 계산하고 업데이트합니다. 다른 사람은 그것에 대해 알지도 못합니다. 거래 프로세서 - 인터페이스를 통해 그에게 오는 명령을 독점적으로 실행하며 그 명령이 누구에게서 왔는지조차 모릅니다. Expert Advisor는 각 틱에서 거래 포지션을 업데이트하고 요청된 인터페이스를 통해 거래 포지션을 발행합니다. 또한 누가 그것을 필요로 하고 이 블록 안에 무엇이 있는지에 관심이 없습니다. 모든 블록은 미리 정의된 인터페이스를 통해 분리되고 독점적으로 통신합니다.

 
СанСаныч Фоменко :

구체적이고 매우 명확한 예를 들어보겠습니다.

1. 코티르 입구에서

2. 출구에서 매수/매도 명령.

3. 입력은 두 체커의 교차점에서 출력으로 변환됩니다.

그들 사이의 OOP는 무엇이며 그 이유는 무엇입니까?

/// применение  ООП для элементарных задач (фактически весь код)

OnInit(){

Series FAST_MA=MA(...);

Series SLOW_MA=MA(...);

OnCrossUp(FAST_MA,SLOW_MA,Buy);

OnCrossDn(FAST_MA,SLOW_MA,Sell);

}

그러나 OOP 자체는 개발된 라이브러리 안에 있습니다. 쉽고 간단하게 작성할 수 있으며 동시에 모든 것이 디버깅되었습니다. "따옴표 소스" 및 "주문 실행기", "시계열", "지표" 및 많은 모든 인터페이스가 있습니다. 그러나 여기에 모든 실패와 함께 실제 시장의 가혹한 조건에 대한 준비가 된 짧은 코드가 있습니다. 그리고 더러운 트릭

손의 약간의 움직임으로 임의의 코티르(합성)를 취하거나 다른 도구에서 실행할 수 있습니다. 약간의 노력이 필요합니다).

 
George Merts :

모든 것이 아주 간단합니다.

입력 생성기가 있습니다. EA에서 데이터 제공자 인터페이스, 거래 포지션 인터페이스 및 거래 프로세서 인터페이스를 요청합니다. 그런 다음 데이터 공급자에게 제스처의 두 가지 인터페이스를 요청합니다.

OnTick()이 호출되면 입력 생성기에 대해 동일한 함수가 호출됩니다. 입력 생성기는 틱의 인터페이스를 보고 과거 값을 비교합니다. 교차점이 감지되면 거래 포지션 인터페이스를 살펴봅니다. 우리가 포지션을 벗어났다고 판단되면 거래 프로세서의 인터페이스에서 매수 또는 매도 기능을 호출합니다. 위치가 존재하는 것으로 확인되면 위치가 올바른 방향이면 아무 것도 하지 않고 반대 방향이면 거래 인터페이스에서 위치 마감 기능을 호출하고 구매 또는 판매합니다.

동시에, 생성기는 스트로크 계산, 거래 포지션 획득, MT4의 개시 주문 또는 MT5의 포지션에 대한 변수에 액세스할 수 없습니다. 데이터 공급자 - 요청한 시스템에 대해서만 알고 있습니다. 매 틱마다 다시 계산하고 업데이트합니다. 다른 사람은 그것에 대해 알지도 못합니다. 거래 프로세서 - 인터페이스를 통해 그에게 오는 명령을 독점적으로 실행하며 그 명령이 누구에게서 왔는지조차 모릅니다. Expert Advisor는 각 틱에서 거래 포지션을 업데이트하고 요청된 인터페이스를 통해 거래 포지션을 발행합니다. 또한 누가 그것을 필요로 하고 이 블록 안에 무엇이 있는지에 관심이 없습니다. 모든 블록은 사전 정의된 인터페이스를 통해 분리되고 독점적으로 통신합니다.


기절!

나는 궁금했다. 현대 프로그래밍에서 저주받은 달걀 수준의 문제를 혼동할 수 있는 다른 가능성이 있습니까?

 
Maxim Kuznetsov :

/// применение  ООП для элементарных задач (фактически весь код)

OnInit(){

Series FAST_MA=MA(...);

Series SLOW_MA=MA(...);

OnCrossUp(FAST_MA,SLOW_MA,Buy);

OnCrossDn(FAST_MA,SLOW_MA,Sell);

}

그러나 OOP 자체는 개발된 라이브러리 안에 있습니다. 쉽고 간단하게 작성할 수 있으며 동시에 모든 것이 디버깅되었습니다. "따옴표 소스" 및 "주문 실행기", "시계열", "지표" 및 많은 모든 인터페이스가 있습니다. 그러나 여기에 모든 실패와 함께 실제 시장의 가혹한 조건에 대한 준비가 된 짧은 코드가 있습니다. 그리고 더러운 트릭

손의 약간의 움직임으로 임의의 코티르(합성)를 취하거나 다른 도구에서 실행할 수 있습니다. 약간의 노력이 필요합니다).


OnInit()은 거의 동일하게 보입니다 - 12줄...

그래서 무엇?

사유: