객체지향 프로그래밍

객체지향 프로그래밍(OOP)은 주로 데이터에 초점을 맞춘 프로그래밍이며, 데이터와 동작은 분리할 수 없이 연결되어 있습니다. 데이터와 동작이 함께 클래스를 구성하는 반면, 개체는 클래스 인스턴스입니다.

객체 지향 접근법의 구성요소는 다음과 같습니다:

객체지향 프로그래밍은 연산을 동작 모델링으로 간주합니다. 모델링된 항목은 연산 추상화로 표현되는 객체입니다. 우리가 잘 알려진 게임 "테트리스"를 작성하고 싶다고 가정해봅시다. 이렇게 하려면 모서리로 결합된 네 개의 정사각형으로 구성된 랜덤 도형의 모양을 모형화하는 방법을 배워야 합니다. 또한 우리는 도형의 하강 속도를 조절하고 회전과 도형의 이동을 정의해야 합니다. 화면의 도형 이동은 우물 경계에 따라 제한되므로 이 요구사항도 모델링해야 합니다. 그 외에 채워진 큐브의 행은 파기하고 달성된 포인트를 계산해야 합니다.

따라서, 이 이해하기 쉬운 게임은 모양 모델, 우물 모델, 모양 이동 모델 등 여러 모델을 만들어야 합니다. 이 모든 모델은 추상화이며, 컴퓨터 계산으로 표현됩니다. 이러한 모델을 설명하기 위해 추상적 데이터 유형, ADT(또는 복합 데이터 유형)의 개념의 사용됩니다. 엄격히 말하면, DOM의 "모양" 모션 모델은 데이터 유형이 아니지만 "잘된" 데이터 유형의 제한을 사용하는 "모양" 데이터 유형에 대한 작업 집합입니다.

오브젝트는 class 변수입니다. 객체 지향 프로그래밍을 사용하면 ADT를 쉽게 만들고 사용할 수 있습니다. 객체 지향 프로그래밍은 상속 메커니즘을 사용합니다. 상속의 장점은 사용자가 이미 정의한 데이터 유형에서 파생 유형을 얻을 수 있다는 점입니다.

예를 들어, Tetris 쉐이프를 작성하려면 먼저 기준 클래스 쉐이프를 작성하는 것이 편리합니다. 가능한 7가지 형상 유형을 모두 나타내는 다른 클래스는 그 기준으로 파생될 수 있습니다. 쉐이프의 동작은 기준 클래스에 정의되며, 각 개별 쉐이프의 동작 구현은 파생 클래스에 정의됩니다.

OOP에서 개체는 자신의 동작을 담당합니다. ADT 개발자는 일반적으로 해당 개체에서 예상되는 동작을 설명하는 코드를 포함해야 합니다. 개체 자체가 해당 동작에 책임이 있다는 사실은 이 개체의 사용자를 위한 프로그래밍 작업을 크게 단순화합니다.

화면에 도형을 그리려면 중심이 어디에 있고 어떻게 그려야 하는지 알아야 합니다. 별도의 도형을 직접 그릴 줄 아는 경우, 프로그래머는 해당 도형을 사용할 때 "그리기" 메시지를 보내야 합니다.

MQL5 Language는 C++ 유사하며 ADT 구현을 위한 캡슐화 메커니즘도 가지고 있습니다. 한편으로 캡슐화는 특정 유형의 구현에 대한 내부 세부사항을 결합하고, 다른 한편으로는 이러한 유형의 객체에 영향을 미칠 수 있는 외부 액세스 가능 함수를 결합합니다. 이 유형을 사용하는 프로그램의 구현 세부 정보에 액세스하지 못할 수 있습니다.

 

OOP의 개념은 다음과 같은 일련의 관련 개념을 가지고 있습니다:

  • 현실 세계의 행동 시뮬레이션
  • 사용자 정의 데이터 유형
  • 구현 세부 정보 숨기기
  • 상속을 통한 코드 재사용 가능
  • 실행 중 함수 호출 해석

이 개념들 중 일부는상당히 모호하고, 일부는 추상적이며, 다른 것들은 일반적입니다.