View

캡슐화

sm_amoled 2018. 12. 30. 20:20
300x250


캡슐화 Encapsulation

관련성이 있는 데이터와 메서드를 한 곳으로 모으는 특성 -> 클래스 명으로 그 클래스가 제공하는 기능들을 대략적으로 알 수 있다. 
( '빵집' 이라는 클래스에서 빵 이름에 대한 필드 / 제과제빵에 대한 메서드를 가져올 수 있다고 추측 가능! )
내부 멤버 숨기기 -> 외부로 보여질 기능만 노출되게 설정 가능하다.


접근제한자

private : 내부 클래스에서만 접근 가능하다.
public : 내부, 파생, 외부 클래스 모두에서 접근 가능하다.

이 외에도 protected, internal 등의 접근제한자가 있지만, 아직은 이 둘만 알고 사용하여도 큰 문제가 없고, 대부분 두가지 접근 제한자만을 사용한다.

접근제한자를 명시해주지 않으면 class 내부의 멤버는 private으로 자동 설정된다.



정보은닉

항상 변수를 숨기는 것만 필요한 것은 아니다.
<모나리자>를 수정하는것은 불가능해도 보는것은 누구나 가능한 것처럼, 접근은 가능하지만 값을 바꾸는것은 불가능하게 만들어줄 필요가 있다 : 정보은닉

접근자 메서드 ( getter ) 와 설정자 메서드 ( setter )을 사용하여 구현한다.

-> 읽기                               -> 쓰기 


    class Math
    {
        double pi = 3.14;

        public double GetPi()              -> getter
        {
            return pi;
        }

        public void SetPi(double value)    -> setter
        {
            pi = value;
        }
    }

물론, pi라는 필드 자체를 public으로 선언하여 getter와 setter 의 역할을 직접 수행하여도 상관은 없다.

그러나 오류를 피하기 위해서이거나, 문제상황을 해결하기 위해 pi에 들어갈 값에 대한 조건을 달거나 다른 작업을 수행할 때, getter 나 setter를 사용하면 오류가 덜 발생하고, 유지보수에 효율성을 가져올 수 있다.



프로퍼티

정보은닉을 위해 getter와 setter를 더 편리하게 사용하게 해주는 도우미 ( Syntatic Sugar )
   
     class Math
    {
        double pi = 3.14;

        public double Pi
        {
            get { return pi; }        get 과 set을 이런 방식으로 설정해주면, 
  위의 코드에 나왔던 getter와 setter의 역할을 그대로 수행할 수 있다.
  set { pi = value;  }      
  ↳ set에는 매개변수가 없기때문에 value라는 예약어로 입력된 값을 받아올 수 있다.
        }                
    }

위 코드는 컴파일 될 때 자동으로 다음과 같이 메서드로 분리되어 작동하기에, 말그대로 '도우미'라는 별칭을 가지고 있다.


    class Math
    {
        double pi = 3.14;

        public double GetPi()
        {
            return this.pi;
        }

        public void SetPi(double value)
        {
            this.pi = value;
        }
    }







320x100

'Develop > C# 과 객체지향' 카테고리의 다른 글

상속 (2)  (0) 2019.01.02
상속 (1)  (0) 2019.01.01
클래스  (0) 2018.12.29
객체지향 프로그래밍  (0) 2018.12.27
C# 공부를 시작하며  (0) 2018.12.27
Share Link
reply
반응형
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31