기고글 토론 "객체 지향 프로그래밍의 기초"

 

새로운 기고글 객체 지향 프로그래밍의 기초 가 게재되었습니다:

객체 지향 프로그래밍 (OOP)을 사용하기 위해 다형성, 캡슐화 등이 무엇인지 알 필요가 없습니다. 단순히 이러한 기능을 사용할 수 있습니다. 이 글에서는 실습 예제를 통해 OOP의 기본 사항을 다룹니다.

OOP의 첫 번째이자 가장 간단한 응용 프로그램은 자주 사용하는 함수의 라이브러리를 만드는 것입니다. 물론 이러한 함수를 포함 파일 (mqh)에 간단히 저장할 수 있습니다. 함수가 필요한 경우 파일을 포함하고 이 함수를 호출하면 됩니다. 그러나 충분히 오래 프로그래밍하면 엄청난 양의 함수를 수집 할 수 있으므로 이름과 목적을 기억하기 어려울 수 있습니다.

여러 파일에서 함수를 수집하여 목적에 따라 범주로 분할할 수 있습니다. 예를 들어 배열 작업 기능, 문자열 작업 기능, 순서 계산 기능 등이 있습니다. 마지막 문장에서 "category"라는 단어는 "classes"라는 단어로 대체 될 수 있습니다. 의미는 동일하게 유지되지만 객체 지향 프로그래밍이라는 주제에 더 가까이 다가갈 것입니다.

따라서 함수는 배열로 작업할 함수 클래스, 문자열로 작업할 함수 클래스, 순서를 세는 함수 클래스 등으로 나눌 수 있습니다. "클래스"라는 단어는 기본 개념이기 때문에 OOP의 주제에 더 가까워집니다. 다양한 참고서, 사전 및 백과 사전 (예 : Wikipedia)에서 "프로그래밍 클래스"가 무엇인지 검색 할 수 있습니다.

객체 지향 프로그래밍에서 클래스는 자체 인스턴스를 생성하기위한 청사진으로 사용되는 구조입니다.

아마도 첫인상은 "다형성", "캡슐화"등의 단어와 거의 같을 것입니다. 이 순간 '클래스'라는 이름은 함수와 변수의 집합을 의미합니다. 클래스를 사용하여 라이브러리를 만드는 경우 - 처리된 데이터 유형 또는 처리 된 객체 유형 (배열, 문자열, 순서)별로 그룹화 된 함수 및 변수 집합입니다.

 

작성자: Dmitry Fedoseev

 

스타일러를 통해 코드가 실행되지 않는 이유는 무엇인가요?

초보자는 읽기가 어려울 것이며, 그는 ME에서 한 스타일을보고 기사에서 다른 스타일을 봅니다.

ZY 이 기사는 클래스 연결 문제를 밝히지 않습니다.

물론 일반적으로 OOP는 복잡한 주제이므로 간단한 언어로 설명하기는 쉽지 않지만 어딘가에서 시작해야합니다.

 

저자 덕분에 기사가 마음에 들었습니다.

그러나 코드를 읽을 수 없습니다. 이전 발표자의 의견에 동의합니다.

 
Urain:

1. 스타일러를 통해 코드가 실행되지 않는 이유는 무엇인가요?

초보자가 읽는 것은 문제가 될 것입니다. ME에서 그는 한 스타일을보고 기사에서 다른 스타일을 봅니다.

2. ZY 이 기사는 클래스 커뮤니케이션 문제를 드러내지 않습니다.

물론 일반적으로 OOP는 복잡한 주제이므로 간단한 언어로 설명하기는 쉽지 않지만 어딘가에서 시작해야합니다.


1. 당황. 내가 실행 한 것 같습니다. 확실히 달렸습니다!

여기 있습니다:

~CName(){ Alert("파괴자 "+IntegerToString(m_arg)); }
void Sleep()  { Sleep(3000); }

전혀 내 스타일이 아닙니다(한 줄 중괄호).

2. 명확히, 명확하지 않음, 연결이 무엇인가요?

 

이 질문은 개발자에게 더 적합한 질문인 것 같습니다.

인용: 데이터 구조는 변수만 포함할 수 있다는 차이점이 있습니다.

C++에서 구조체는 클래스로 정의되며 모든 멤버가 열려 있습니다.

현재 버전의 MQL5 - 555에서는 구조체에서 멤버 메서드도 사용할 수 있습니다.

이것은 현재 빌드에서 누락된 부분이며 향후 데이터 멤버만 사용할 수 있도록 할 계획인가요?

 
Integer:
...

2. 명확히, 협회가 무엇인지 명확하지 않습니까?

연결 및 기타 수업 연결 방법.

 
Urain:

연결 및 기타 수업 연결 방법.

이해가 안 되네요."OOP를 사용하여 프로그램의 논리를 변경하는 것"이 아닌가요?

아니면 여러 클래스를 하나의 클래스로 묶는 건가요? - 한 클래스에서 다른 클래스에 대한 포인터를 선언할 수 있다는 점이 있습니다.

 
Dima_S:

이 질문은 개발자에게 더 적합한 질문인 것 같습니다.

인용: 데이터 구조는 변수만 포함할 수 있다는 차이점이 있습니다.

C++에서 구조체는 클래스로 정의되며 모든 멤버가 열려 있습니다.

현재 버전의 MQL5 - 555에서는 구조체에서 멤버 메서드도 사용할 수 있습니다.

이것은 현재 빌드에서 누락된 사항이며 향후 데이터 멤버만 사용할 수 있도록 할 계획인가요?


함수를 구조체로 작성할 수 있나요? 아마도 클래스에 대한 포인터-보고, 시도하고, 그것에 대해 알지 못하는 것이 좋습니다.
 
Integer:
함수를 구조체로 작성할 수 있나요?
네. 가능합니다.
 
Dima_S:

이 질문은 개발자에게 더 적합한 질문인 것 같습니다.

인용: 데이터 구조는 변수만 포함할 수 있다는 차이점이 있습니다.

C++에서 구조체는 클래스로 정의되며 모든 멤버가 열려 있습니다.

현재 버전의 MQL5 - 555에서는 구조체에서 멤버 메서드도 사용할 수 있습니다.

이것은 현재 빌드에서 누락된 부분이며 향후 데이터 멤버만 사용할 수 있도록 할 계획인가요?


구조체에 대한 도움말을 열고 구조체에 대한 유형 변환을 읽어보세요.

메서드 멤버는 처음부터 사용할 수 있었습니다. 왜 제거하려고 하나요?

 
Integer:

1) 이해가 안 됩니다. "OOP를 사용하여 프로그램의 논리를 변경하는 것"이 아닌가요?

2) 아니면 여러 클래스를 하나의 클래스로 래핑하는 건가요? - 한 클래스에서 다른 클래스에 대한 포인터를 선언할 수 있다는 게 뭔가요?

1 아니요, 상속을 사용하는 것입니다.

2가 더 따뜻한데, 연관 및 집계와 함께 세 가지 바인딩 옵션 중 하나인 컴포지션입니다.

그건 그렇고, 그러한 기본 패러다임이 도움말의 OOP 설명에서 다루어지지 않았다는 사실에 놀랐습니다.