학생을 위한 OOP. - 페이지 17

 
Artyom Trishkin :

모든 것은 변수와 완전히 동일합니다.

그리고 초점:

OnTrade 기능 에서 거래가 가능한 경우 이 포인터의 요점은 무엇입니까?

 #include <Trade\Trade.mqh>
CTrade trade;   // Объект № 1 в глобальной области программы

int OnInit ()
{
 trade.SetExpertMagicNumber( 123 );
}

void OnTick ()
{
 trade.Buy( 0.1 );
}
 
Alexey Viktorov :

OnTrade 기능 에서 거래가 가능한 경우 이 포인터의 요점은 무엇입니까?

없음. 그러나 이것을 통해 동일한 유형의 다른 (두 번째) 객체를 작성하는 방법과 포인터로 단일 객체를 참조하는 방법의 차이점을 보여주었습니다.

이것은 차이점과 선호도에 대한 귀하의 질문에 대한 간단한 답변의 예입니다.

당신은 너무 간단한 예를 들어 질문을 하고 그들이 당신에게 대답할 때 당신은 또 다른 아주 합리적인 질문을 합니다. "무엇을 위해?"

예, 클래스를 사용하여 예제를 해결할 필요가 없기 때문입니다.

두 가지 옵션이 있습니다. 답변을 읽고 자세히 알아보거나 ... 또는 절차적으로 문제를 해결하는 것입니다. 그러면 "무엇을 위해"라는 질문이 나오지 않을 것입니다.

이제 CTrade 클래스가 전역 범위에 있지 않다고 상상해 보십시오. 그리고 ?

또한 (코드베이스의 거의 모든 예제에 있는 것처럼) 그러한 개체가 하나가 아니라 프로그램에서 수동으로 추가/제거하는 문자만큼 많이 가지고 있다고 상상해 보십시오. 그리고 ?

 
Сергей Таболин :

그 경우, 이

잘못된 설명?

전문가를 위한 것이라면 모든 주문/직위에는 이 마법이 있어야 한다는 것을 이해했습니다. ((

왜 갑자기 틀릴까요?

한 전문가는 여러 명의 마술사를 가질 수 있으며 모두가 있습니다.

하나의 ulong 마법에서도 하나의 공통 전문가 ID + 여러 마술사 + 여러 다른 ID를 저장할 수 있으며 여전히 많은 공간이 있습니다.

 
Artyom Trishkin :

없음. 그러나 이것을 통해 동일한 유형의 다른 (두 번째) 객체를 작성하는 방법과 포인터로 단일 객체를 참조하는 방법의 차이점을 보여주었습니다.

이것은 차이점과 선호도에 대한 귀하의 질문에 대한 간단한 답변의 예입니다.

당신은 너무 간단한 예를 들어 질문을 하고 그들이 당신에게 대답할 때 당신은 또 다른 아주 합리적인 질문을 합니다. "무엇을 위해?"

예, 클래스를 사용하여 예제를 해결할 필요가 없기 때문입니다.

두 가지 옵션이 있습니다. 답변을 읽고 자세히 알아보거나 ... 또는 절차적으로 문제를 해결하는 것입니다. 그러면 "무엇을 위해"라는 질문이 나오지 않을 것입니다.

이제 CTrade 클래스가 전역 범위에 있지 않다고 상상해 보십시오. 그리고 ?

또한 (코드베이스의 거의 모든 예제에 있는 것처럼) 그러한 개체가 하나가 아니라 프로그램에서 수동으로 추가/제거하는 문자만큼 많이 가지고 있다고 상상해 보십시오. 그리고 ?

아니 Artyom, 나는 적용이 아니라 이해를 위해 질문합니다. 그리고 당신이 바보 같은 아이디어에 대한 해결책을 제시할 때, 저는 "무엇을 위해?"라고 묻습니다. 알다시피, 내가 내 방식대로 다시 물을 때 그들이 나에게 옳고 그른 대답을하면 나는 이것에 대해 나에게 말한 모든 것을 잊지 않고 이해력으로 하거나 이해력으로하지 않을 것이라고 생각합니다. 나는 내 자신의 바퀴벌레가 있습니다...))) 이해 없이는 아무것도 할 수 없습니다. 나는 모델 솔루션으로 수학 문제를 풀린 적이 없습니다. 나는 방법을 모른다. 8학년이 끝난 후 1년 동안 나는 수학에서 2와 4를 각각 5개나 받았습니다. 글쎄요, 저는 C에 대한 에세이를 쓰면 시험에 합격하고, 듀스를 교정하고, GPTU에 가게 해준다는 조건으로 시험을 볼 수 있었습니다. 그리고 연구소는 훨씬 늦었습니다. 그곳에서 나는 프로그래밍에 약했지만, 피상적으로만 익숙해지도록 가르쳤습니다. 그리고 그 당시의 OOP는 일반적으로 나에게만 생각할 수 있는 것 같습니다.

 
Alexey Viktorov :

아니 Artyom, 나는 적용이 아니라 이해를 위해 질문합니다. 그리고 당신이 바보 같은 아이디어에 대한 해결책을 제시할 때, 저는 "무엇을 위해?"라고 묻습니다. 알다시피, 내가 내 방식대로 다시 물을 때 그들이 나에게 옳고 그른 대답을하면 나는 이것에 대해 나에게 말한 모든 것을 잊지 않고 이해력으로 하거나 이해력으로하지 않을 것이라고 생각합니다. 나는 내 자신의 바퀴벌레가 있습니다...))) 이해 없이는 아무것도 할 수 없습니다. 나는 모델 솔루션으로 수학 문제를 풀린 적이 없습니다. 나는 방법을 모른다. 8학년이 끝난 후 1년 동안 나는 수학에서 2와 4를 각각 5개나 받았습니다. 글쎄요, 저는 C에 대한 에세이를 쓰면 시험에 합격하고, 듀스를 교정하고, GPTU에 가게 해준다는 조건으로 시험을 볼 수 있었습니다. 그리고 연구소는 훨씬 늦었습니다. 그곳에서 나는 프로그래밍에 약했지만 피상적으로만 익숙해지도록 가르쳤다. 그리고 그 당시의 OOP는 일반적으로 나에게만 생각할 수 있는 것 같습니다.

그런데 이런 질문을 하다니 이상하네요.

다른 범위에서 선언된 변수의 차이점을 이해합니다. 이해하다. 그리고 변수의 범위에 대해 처음 듣는 것처럼 질문합니다.

이전에 생성된 개체에 대한 포인터를 사용하는 방법이 표시되면 "왜 개체가 이미 표시되어 있습니까?"라는 이상한 질문을 하게 됩니다. 그래서 당신은 그것을 하는 방법이 아니라 그 예제에서 포인터를 얻고 포인터로 객체에 접근하는 방법을 배웠습니다. 그리고 이것들은 더 이상 다른 범위에 있는 두 개의 다른 개체가 아니라 하나가 됩니다.
그리고 객체가 전역 범위에 있지 않고 다른 객체 안에 있다면? 그리고 그 다른 객체는 원하는 CTrade 객체에 대한 포인터만 반환합니다. 그러면 예제는 더 이상 "무엇을 위해?"라는 질문을 제기하지 않습니다. 나는 그렇게 생각하지 않는다. 그러나 결국, 귀하가 예제의 단순함을 이해하고 "대괄호 외부" 개체의 전역 가시성을 생략한다는 가정 하에 그들이 귀하에게 정확하게 대답한다는 것을 암시할 수 있습니다.

 
Artyom Trishkin :

왜 갑자기 틀릴까요?

한 전문가는 여러 명의 마술사를 가질 수 있으며 모두가 있습니다.

하나의 ulong 마법에서도 하나의 공통 전문가 ID + 여러 마술사 + 여러 다른 ID를 저장할 수 있으며 여전히 많은 공간이 있습니다.

이해합니다. 거래 요청 을 할 때 마법을 지정할 수 있습니다. 그리고 한 명의 전문가는 적어도 새로운 마술사와 함께 각각의 새로운 직책을 열 수 있습니다. 그리고 나는 기호와 TF 등을 모두 내 마법으로 인코딩합니다.이 모든 것은 이해할 수 있습니다.

나는 SetExpertMagicNumber 가 글로벌 솔루션과 같다고 확신했습니다. 거래 요청이 매직을 명시적으로 지정하지 않으면 SetExpertMagicNumber 를 통해 설정된 값을 사용합니다. 그렇지 않으면 개인적으로 그 요점을 보지 못합니다))

 
Сергей Таболин :

이해합니다. 거래 요청 을 할 때 마법을 지정할 수 있습니다. 그리고 한 명의 전문가는 적어도 새로운 마술사와 함께 각각의 새로운 직책을 열 수 있습니다. 그리고 나는 기호와 TF 등을 모두 내 마법으로 인코딩합니다.이 모든 것은 이해할 수 있습니다.

나는 SetExpertMagicNumber 가 글로벌 솔루션과 같다고 확신했습니다. 거래 요청이 매직을 명시적으로 지정하지 않으면 SetExpertMagicNumber 를 통해 설정된 값을 사용합니다. 그렇지 않으면 개인적으로 그 요점을 보지 못합니다))

이 방법은 Expert Advisor가 아니라 거래 클래스의 개체에 대한 매직 번호를 설정합니다. 하나의 Expert Advisor는 여러 거래 클래스를 가질 수 있으며 각 클래스에 대해 Expert Advisor에 대한 공통 마법과 각 거래 개체에 대한 별도의 마법을 모두 포함하는 별도의 마법을 설정할 수 있습니다.

 
Artyom Trishkin :

그런데 이런 질문을 하다니 이상하네요.

이상하지 않습니다. 내가 OOP를 전혀 이해하지 못한다면 내가 모든 것을 올바르게 이해하고 있는지 확신이 서지 않거나 약간의 의구심이 있었습니다. 나는 설명을 요청했고 확인을 받았고 이제 (내일) 확신합니다. G. Khazanov의 독백에서처럼.

- 당신이 창가에 서 있고 반대편 창에 아무것도 의심하지 않고 벌거 벗은 여자가 있다고 상상해보십시오. 당신은 무엇을 느끼나요?

- 미래에 대한 자신감.

- 그리고 다음 단계는 무엇입니까?

- 다른 방으로 가겠습니다. 더 큰 창이 있습니다.

 
Alexey Viktorov :

이 옵션을 사용하면

컴파일러 경고 를 무시하고 123이 아닌 마법으로 위치를 열 수 있습니까?

즉, OnTick 함수에서 새 개체가 생성되고 그 안의 마법은 123과 같지 않습니다.

위치는 "0"과 같은 Magic number로 열릴 것입니다. 즉, 문자열

 void OnTick ()
{
 CTrade trade;

객체를 새로 생성하고 객체를 생성할 때 CTrade 매직 클래스 는 기본적으로 (클래스 생성자에서) 0으로 초기화됩니다.

 //+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CTrade::CTrade( void ) : m_async_mode( false ),
   m_magic( 0 ),
   m_deviation( 10 ),
   m_type_filling( ORDER_FILLING_FOK ),
   m_log_level(LOG_LEVEL_ERRORS)
 
Vladimir Karputov :

위치는 "0"과 같은 매직 번호로 열립니다. 즉, 문자열

객체를 새로 생성하고 객체를 생성할 때 거래 클래스 CTrade 매직은 기본적으로 (클래스 생성자에서) 0으로 초기화됩니다.

예? 새롭고 독립적인 객체를 생성하지 않습니까?