Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
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
Tags
more
Archives
Today
Total
관리 메뉴

나의 지식 보관소

프로퍼티 본문

프로그래밍 언어/C#

프로퍼티

야식은진리다 2020. 1. 10. 23:29

은닉성

객체지향에는 크게 세 가지 특성이 있다. 그중 하나가 은닉성이라고 부르는 것인데, 은닉성은 사용자에게 필요한 최소한의 기능만을 노출하고 다른 것을 내부에 숨기는 것을 뜻한다. 즉 선풍기를 예로 들면 선풍기 날개의 분당 회전수 같은 사용자에게 불필요한 정보는 들어내지 않고 강풍, 약풍, 미풍, 정지와 같은 필요한 기능만을 노출하는 것이다.

 

 

프로퍼티

우리가 코드를 작성하다 보면 필드를 public으로 선언하고 싶을 때가 있다. 모든 것을 public으로 선언해버리면 외부에서 특별한 메서드의 도움 없이 '='를 이용해서 필드를 사용할 수 있고, 어떤 것을 private로 하고 public을 할지 생각할 필요도 없으니 귀찮음과 수고로움이 확 줄어든다. 하지만 은닉성에 좋지 않다. 그렇다면 은닉성을 지키면서 편하게 작업할 수는 없는 것일까? 없으면 내가 왜 이런 장황한 말들을 늘어놓으며 글을 쓰고 있겠나. 우리는 이런 바람들을 프로퍼티를 통해 해결할 수 있다.

 

 

프로퍼티의 사용

프로퍼티는 아래와 같이 선언한다. 

1
2
3
4
5
6
7
8
9
10
11
접근한정자 데이터형식 프로퍼티이름
{
    get
    {
        return 필드이름;
    }
    set
    {
        필드이름 = value;
    }
}

프로퍼티에서 get { ... } 과 set { ... } 부분을 접근자라고 부르고 get 접근자는 필드로부터 값을 얻어오고, set 접근자는 필드에 값을 할당한다. set 접근자 안의 value는 '='연산자를 통해 할당 받는 값을 뜻한다.

또한 get 접근자만 구현하면 읽기 전용 프로퍼티가, set 접근자만 구현하면 쓰기 전용 프로퍼티가 될 수 있다.

그리고 다른 메서드들처럼 get/set 접근자 안에 위의 내용 말고도 필요한 코드를 더 작성할 수 있으므로 최댓값 이상으로는 할당하지 못한다던지의 기능을 추가할 수 있다.

 

C# 3.0부터는 위의 코드와 같이 따로 다른 코드가 더 삽입되지 않은 프로퍼티는 더 쉽게 선언할 수 있도록 자동 구현 프로퍼티를 도입했는데, 선언 방법은 아래와 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
접근한정자 데이터형식 프로퍼티이름
{
    get
    {
        return 필드이름;
    }
    set
    {
        필드이름 = value;
    }
}
 
접근한정자 데이터형식 프로퍼티이름 { get; set; }//자동구현 

위의 두 프로퍼티는 기능상 동일하다.

 

프로퍼티의 사용은 아래와 같이 다른 필드 변수들처럼 사용할 수 있다.

1
2
인스턴스명.프로퍼티명 = 값;
Console.WriteLine(인스턴스명.프로퍼티명);

 

또한 프로퍼티는 아래와 같이 객체를 생성할 때 초기화를 할 수 있는 방법이 제공된다.

1
2
3
4
5
클래스이름 인스턴스 = new 클래스이름()
    {
        프로퍼티1 = 값,
        프로퍼티2 = 값
    };

'프로그래밍 언어 > C#' 카테고리의 다른 글

가변 배열 ( Jagged Array )  (0) 2020.04.22
무명 형식  (0) 2020.04.21
추상 클래스  (0) 2019.12.28
죽음의 다이아몬드  (0) 2019.12.28
인터페이스 interface  (0) 2019.12.28