mobile menu

The Arrow Newsletter

mobile menu

객체지향 캡슐화 예제

캡슐화와 추상화가 큰 코드베이스를 개발하고 유지하는 데 어떻게 도움이 되는지 확인했습니다. 캡슐화는 데이터 멤버 및 멤버 함수를 숨기는 데 사용할 수 있습니다. 이 정의에서 캡슐화는 개체의 내부 표현이 일반적으로 객체의 정의 외부의 뷰에서 숨김을 의미합니다. 일반적으로 개체의 고유한 메서드만 해당 필드를 직접 검사하거나 조작할 수 있습니다. Smalltalk 및 Ruby와 같은 일부 언어는 개체 메서드를 통해서만 액세스를 허용하지만 대부분의 언어(예: C++, C#, Delphi 또는 Java)는 일반적으로 공개 및 비공개와 같은 키워드를 통해 프로그래머에게 숨겨진 내용을 어느 정도 제어할 수 있습니다. [4] ISO C++ 표준은 보호되고 비공개이며 공개되는 것을 “액세스 지정자”로 말하며 “정보를 숨기지 않는다”고 말합니다. 정보 숨기기는 헤더 파일을 통해 인터페이스된 소스 코드의 컴파일된 버전을 제공하여 수행됩니다. 캡슐화의 아이디어는 클래스를 분리하고 서로 밀접하게 결합하지 못하게하는 것입니다. C++는 클래스라고 하는 사용자 정의 형식을 만들어 숨는 캡슐화 및 데이터의 속성을 지원합니다.

우리는 이미 수업에 개인, 보호 및 공개 구성원이 포함될 수 있다는 것을 연구했습니다. 기본적으로 클래스에 정의된 모든 항목은 비공개입니다. 예를 들어 – 디자인 패턴 [9]의 저자는 길이상속과 캡슐화 사이의 긴장을 논의하고 자신의 경험에서, 디자이너가 상속을 남용 상태. 위험은 다음과 같이 명시되어 있습니다: C++ 캡슐화에서 클래스 및 액세스 수정자를 사용하여 구현할 수 있습니다. 아래 프로그램 보기: 데이터 캡슐화는 데이터를 번딩하는 메커니즘이며, 데이터 추상화를 사용하는 함수는 인터페이스만 노출하고 사용자로부터 구현 세부 정보를 숨기는 메커니즘입니다. 상속은 하위 클래스를 부모의 구현 세부 정보에 노출하기 때문에 “상속 중단 캡슐화” 캡슐화는 데이터와 함수를 클래스라는 단일 단위로 결합하는 프로세스라고 합니다. 캡슐화에서 데이터는 직접 액세스되지 않습니다. 클래스 내부에 있는 함수를 통해 액세스됩니다. 간단히 말해서 클래스의 특성은 비공개로 유지되고 공용 getter 및 setter 메서드가 제공되어 이러한 특성을 조작합니다. 따라서 캡슐화는 데이터 숨기기의 개념을 가능하게 합니다. 캡슐화의 예는 java.util.Hashtable의 클래스입니다. 사용자는 해시 테이블에 키 /값 쌍의 형태로 데이터를 저장할 수 있으며 다양한 방법으로 해당 데이터를 검색 할 수 있다는 것을 알고 있습니다.

그러나 이 데이터가 실제로 저장되는 방법 및 위치와 같은 실제 구현은 사용자에게 숨김이 있습니다. 사용자는 구현에 대해 신경 쓰지 않고 키 /값 쌍을 저장하려는 모든 곳에서 해시 테이블을 사용할 수 있습니다. 불을 피우려면 몇 가지 단계(GetWood 등)가 필요하기 때문에 클래스의 내부 관심사이므로 뷰에서 숨김이 있습니다. 원시인은 외부 세계에 의해 호출 할 수있는 많은 다른 공공 행동을 가지고있다. 그러나 내부 작업과 관련이 있기 때문에 일부 세부 사항은 항상 숨김이 있습니다. 그들은 개인이고 객체에 대해서만 존재하며 노출되지 않습니다. 캡슐화 “캡슐화”의 예는 일반 사용자가 볼 수 없는 메서드(개인)를 갖는 것입니다. “추상화”는 일반 사용자가 개인 메서드를 사용하기 위해 공용(public)할 수 있는 메서드를 사용하는 것입니다. 일부 프로그래밍 언어 연구원과 학계는 첫 번째 의미를 단독으로 사용하거나 두 번째 와 함께 객체 지향 프로그래밍의 구별되는 기능으로 사용하는 반면, 어휘 적 클로저를 제공하는 일부 프로그래밍 언어는 캡슐화를 개체 방향에 대한 언어 직교기능. 우리 중 대부분은 반원들을 드러내야 하는 경우가 아니라면 기본적으로 비공개로 만드는 법을 배웠습니다.