삽질의 현장/- .NET

#011_닷넷(.NET)_.Net Framework 기본 -Getter, Setter

shovelman 2015. 10. 23. 00:27

안녕하세요 삽잡이입니다.


이번시간에는 Getter와 Setter에 대해서 알아보려고합니다.


우선, C#언어로 구현한 예제 프로그램 하나를 구경하시고 오겠습니다...



Length는 '속성'이라고 부릅니다.

이건 객체지향에서 말하는 문법과 다른 문법입니다...

여기서 '속성'은 특수한 메서드입니다.


객체지향에서 속성이란 개념은 지난시간에 알아봤었지요...


args.Length는 바로 Getter와 Setter와 연관이 있습니다.


객체 지향에서는 객체가 당연하게 있습니다.

그런데 이 객체의 상태를 '읽고', '쓰는' 인터페이스가 필요할 것입니다.

그 인터페이스의 애칭이 읽는 인터페이스의 경우 'Getter'

쓰는 인터페이스의 경우 'Setter'라고 부르는 것입니다.


즉, 상태를 읽을 수 있게 하는 놈을 Getter,

상태를 변경해주는 놈을 Setter라고 하는 것입니다.


이 Setter와 Getter는 목적입니다.

어떤 Class에 있는 객체의 인터페이스 중에서

'인터페이스 목적이 그 객체의 상태를 변경하거나 읽고자하는 인터페이스'가 있다면

이들을 getter, setter라고 부르는것입니다.


좀 더 쉽게 예를 들어보도록 하겠습니다...

Class 를 통해 생성된 객체가 하나 있다고 해봅시다.

그런데 이 객체의 필드는 공개되서는 안됩니다.

따라서 외부에서 접근할 수 있는 인터페이스 메서드를 제공해주겠지요...

그게 바로 getter와 setter라고 부르는 것입니다.


다시 한번 말씀드리지만...

상태를 읽거나 쓰기 위한 목적의 인터페이스만을 getter와 setter라고 합니다.

상태를 가공하는 메서드는 이에 해당할 수 없습니다.



자... 다시 돌아와보겠습니다...

C#에서는 객체지향의 '속성'이라 부르는 property는 다른 문법을 가지고 있습니다.

객체 지향에서 필드, 메서드를 부르는 것 외에

속성이라는 'property'가 하나 더 있는데 이 것이 아까 주구장창 말한 getter, setter이지요...

이 getter, setter 메서드를 사용하기 쉽게 만든 문법이 바로 'property'입니다.


따라서 args.Length는 args의 개수에 대한 getter라고 부를 수 있습니다.

그런데 Length는 메서드가 아닙니다...

사실 감춰져 있기 때문이지요...


아무튼... 이 getter를 통해서 명령행 인자를 출력하는 프로그램을 보고 있었습니다...


다시 올라가기 귀찮으시니 다시 한번 예제를 보여드리도록 하겠습니다.



C#은 기존 C/C++ 과 달리

0번째 인자에 프로그램 명이 출력되지 않는 것을 확인했습니다.

하지만, System.Environment 타입의 'GetCommandLineArgs()' 정적 메서드를 통해서

프로그램의 이름을 포함한 명령행 인자들을 확인하실 수 있음을 참고하시길 바랍니다.


뭐... 혹여나 명령행 인자에 대해서 정보를 얻고 싶으시다면

이전 글들을 참고하시길 바랍니다.

#015_Window_System_명령행 인자



이상 삽잡이였습니다!