유형의 캡슐화 및 확장성
OOP는 소프트웨어를 작성하는 균형 잡힌 접근법입니다. 데이터와 동작이 함께 채워집니다. 이 캡슐화는 사용자 정의 데이터 유형을 생성하여 언어 데이터 유형을 확장하고 상호 작용합니다. 유형 확장성은 기본 유형뿐만 아니라 사용하기 쉬운 사용자 정의 데이터 유형에도 추가할 수 있는 기회입니다.
문자열과 같은 추상 데이터 유형은 잘 알려진 이상적인 동작 유형에 대한 설명입니다.
문자열 사용자는 연결 또는 인쇄와 같은 문자열 작업에 특정 동작이 있음을 알고 있습니다. 연결 및 인쇄 작업을 메서드라고 합니다.
ADT의 특정 구현에는 일부 제한이 있을 수 있습니다. 예를 들어 문자열의 길이가 제한될 수 있습니다. 이러한 제한은 모두에게 열려 있는 동작에 영향을 미칩니다. 동시에 내부 또는 프라이빗 구현 세부 정보는 사용자가 개체를 보는 방식에 직접적인 영향을 미치지 않습니다. 예를 들어 문자열은 종종 배열로 구현되지만 이 배열의 내부 기본 주소와 이름은 사용자에게 필수적이지 않습니다.
캡슐화는 사용자 정의 유형에 대한 개방형 인터페이스가 제공될 때 구현 세부 정보를 숨기는 기능입니다. MQL5에서뿐 아니라 C++에서 클래스 및 구조 정의(클래스 및 구족)는 액세스 키워드 private, protected and public과 함께 캡슐화 프로비저닝에 사용됩니다.
퍼블릭 키워드는 뒤에 있는 멤버에 대한 액세스가 제한 없이 열려 있음을 나타냅니다. 이 키워드가 없으면 클래스 멤버는 기본적으로 잠깁니다. 프라이빗 멤버는 해당 클래스의 멤버 함수만 액세스할 수 있습니다.
보호된 클래스 함수는 클래스뿐 아니라 상속자 클래스에서도 사용할 수 있습니다. 공개 클래스 기능은 클래스 선언의 범위 내의 모든 기능에 사용할 수 있습니다. 보호를 통해 클래스 구현의 일부를 숨길 수 있으므로 데이터 구조의 예기치 않은 변경을 방지할 수 있습니다. 액세스 제한 또는 데이터 숨김은 객체 지향 프로그래밍의 기능입니다.
일반적으로 클래스 함수는 protected 한정자로 보호 및 선언되며, 값의 읽기 및 쓰기는 public 액세스 한정자로 정의된 특수한 set-and-get 메서드를 사용하여 수행됩니다.
예제:
class CPerson
|
이 접근 방식은 여러 가지 이점을 제공합니다. 첫째, 함수 이름으로 클래스 멤버의 값을 설정하거나 얻을 수 있는 기능을 이해할 수 있습니다. 둘째로, 미래에는 CPerson 클래스나 그 파생형 클래스에서 m_name 변수의 유형을 변경해야 할 것입니다.
이 경우 SetName() 및 GetName() 함수의 구현만 변경하면 되고, 사용자는 m_name의 데이터 유형이 변경되었는지도 모르기 때문에 코드 변경 없이 CPerson 클래스의 개체를 프로그램에서 사용할 수 있습니다.
예제:
struct Name
|
더 보기