ecsimsw

OOP / Encapsulation 본문

OOP / Encapsulation

JinHwan Kim 2019. 1. 15. 03:10

Encapsulation

  • Encapsulation / Class & Struct
    reference type과 value type을 공부하면서 대표적인 참조 형식인 class와 값 형식인 struct를 비교하면 공부하면 더 명확하게 공부할 수 있을 것이라고 생각했고,
    두 개념을 비교하기에 앞서 왜 캡슐화를 사용해야하는지, 캡슐화가 뭔지에 대해서 공부하였다.
  • Encapsulation
    - Class와 Struct 모두 encapsulation을 위한 도구이다. 내가 이해한 캡슐화는 다음과 같다.
    1) 유사한 기능이나 변수를 한 집합으로 하여 더 관리하기 쉽게하고 코드를 명확히 함.
    2) 외부에서 멤버를 엑세스하는 방법을 지정할 수 있도록, 직접 접근을 막거나 접근 전 부가적인 처리를 요구함.
    3) 정보를 외부에 은닉하여 외부에서는 해당 집합의 세부 내용에 집중하지 않도록 함
    - encapsulation(캡슐화)와 3번의 information Hiding(정보 은닉)의 특성은 캡슐화로 정보 은닉을 실현 시킬 수 있어 같은 것이라고 생각하기 좋으나 그 개념 자체는 다른 것이다. 한마디로 위의 캡슐화 특성 중 2번과 3번이 같지 않다.
    - 2번은 접근 제한에 중심을 둔 것이다. 외부에서 해당 객체의 내부 데이터를 마음대로 접근 할 수 없도록 제한하고, get/ set 과 같은 함수를 통해 입력을 처리 후 데이터에 접근하는 등 내부 데이터의 보호에 중심을 둔다.
    - 반면 3번 은닉성은 객체 내부를 외부에 은닉에 중심을 둔다. 외부에서 객체 내부에 신경쓰지 않게 해준다. 예를 들어 '고양이가 사과를 먹는다.'를 설계할 때, 설계자는 고양이/ 사과 / 먹다에 집중만 하면 되지 사과의 성분 변수라던가, 사과를 먹음에 따른 고양이의 변화에는 신경쓰지 않을 수 있는 것이다.

'Language > C++, C#' 카테고리의 다른 글

C# / Iterators/ IEnumerator, IEnumerable / yield  (0) 2019.03.01
C# / Is와 As  (0) 2019.01.18
OOP / Up Casting / Down Casting  (0) 2019.01.18
OOP / Class vs Struct / Memory aspects  (0) 2019.01.16
Reference type / Value type  (0) 2019.01.14
Comments