문제

"추출캡슐화 는 상호 보완적 개념:추상화에 초점을 맞추고 눈에 띄는 행동을 개체의...캡슐화에 초점을 맞춘 구현을 초래하는 이 행동...캡슐화는 대부분을 통해 달성 정보 숨기기, 는 프로세스의 숨기는 모든 비밀의 개체에 기여하지 않는 필수적인 특성이 있습니다." - 및 설계 기 Grady 에서 객체 지향적 분석 및 설계

할 수 있습을 보여 강력하게 설득력 있는 예의 혜택을 캡슐화를 통해 정보를 숨기는?

도움이 되었습니까?

해결책

첫 번째 OO 클래스에 제공된 예 :

미디어 플레이어를 상상해보십시오. 그것 초록 재생, 일시 정지, 빠른 향상 등의 개념. 사용자는이를 사용하여 장치를 작동 할 수 있습니다.

귀하의 VCR은이 인터페이스를 구현했습니다 숨겨진 또는 캡슐화 기계식 드라이브 및 테이프의 세부 사항.

새로운 일 때 구현 미디어 플레이어가 도착합니다 (테이프 대신 디스크를 사용하는 DVD 플레이어)는 구현을 대체 할 수 있습니다. 캡슐화 미디어 플레이어와 사용자는 VCR (Play, Pause 등과 같은 동일한 작업)과 마찬가지로 계속 사용할 수 있습니다.

이것이 개념입니다 정보 숨기기 ~을 통해 추출. 사용자가 알지 못하고 낮게 홍보하지 않고 구현 세부 정보를 변경할 수 있습니다. 커플 링 코드.

다른 팁

*문자 스트림 (디스크 파일, 파이프, 소켓, tty 등)을 단일 엔티티 ( "모든 파일입니다") 모델을 널리 사용하면 광범위한 도구를 광범위한 데이터 소스에 적용 할 수 있습니다. / 캡슐화 없이는 불가능한 방식으로 가라 앉습니다.

마찬가지로, 다양한 언어로 된 스트림의 개념, 목록, 배열, 파일 등을 추상화합니다.

또한, 숫자 (정수 초과의 추상화, 수십 가지 종류의 플로트, 합리적 등)와 같은 개념은 더 높은 수준의 코드에 Mantissa 형식이 주어지고 그 자체를 위해 남은 악몽을 상상해보십시오.

내가 알고있는 이미 받아들이 대답을 하나 던져 더 많은 거기:OpenGL/다이렉트

도 이러한 API 의 전체 구현이(DirectX 은 확실히 더 많은 최고 무거운 그 점에서)지만,대신한 일반적 방법 통신의 렌더링하는 명령 그래픽 카드입니다.

카드 업체가 제공하는 사람 구현(driver)에 대한 특정한 카드는 많은 경우에는 것은 매우 특정 하드웨어,하지만 당신은 사용자로 필요 없는 한 사용자는 실행하는 GeForce ABC 다른 Radeon XYZ 기 때문에 정확한 구현이 숨겨져 뒤에 높은 수준의 API 를 사용합니다.그것,당신은 필요한 코드의 경로에서 게임은 모든 카드에 대한 시장에서 당신이 원하는 것을 지원하는 것을 완전히 다루기 힘든 1 일부터.또 다른 큰 게이 접근 방식은 Nvidia/ATI 방출할 수 있는 새로운,더 효율적으로 버전의 드라이버를 자동으로 혜택으로 노력합니다.

동일한 원칙을 적용한 사운드,네트워크,마우스,키보드...기본적으로 어떤 컴퓨터의 구성 요소.는지 여부를 캡슐화에서 일어나 하드웨어 수준에서 또는 소프트웨어를 드라이버,어떤 시점에서 모든 장치의 세부 사항은 다음과 같습니다 숨어할 수 있도록을 치료하는 모든 키보드,예를 들어,다만 키보드가 아닌 Microsoft 인체 공학적 미디어 탐색기 디럭스 Revision2.

당신이 그것을 보면 그 방법은 신속하고 있다는 사실이 밝혀지지 않고 어떤 형태의 캡슐화/추상화 컴퓨터로 오늘날 우리가 알고있는 단순히지 않을 것입니다.는 화려한을 위해 충분히 당신?

세계의 거의 모든 Java, C#및 C ++ 코드 기반에는 정보가 숨겨져 있습니다. 개인만큼 간단합니다 : 클래스의 섹션.

외부 세계는 개인 회원을 볼 수 없으므로 개발자는 코드의 나머지 부분에 대해 걱정할 필요없이 변경할 수 있습니다.

뭐? 당신은 아직 확신하지 않습니까?

반대를 보여주는 것이 더 쉽습니다. 우리는 누가 구현에 대한 세부 정보에 액세스 할 수있는 사람을 제어 할 수없는 코드를 작성했습니다. 따라서 변수를 수정 한 코드를 결정하는 것은 때때로 거의 불가능했습니다.

또한, 세계의 모든 코드가 특정 콘크리트 클래스의 구현에 의존했을 수도 있다면 실제로 무언가를 추상화 할 수는 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top