삽질의 현장/- .NET

#028_닷넷(.NET)_.Net Framework 기본 - 클래스와 구조체의 용도

shovelman 2015. 10. 27. 00:55


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


이번 시간에는 클래스와 구조체에 대해서 알아보겠습니다.




클래스는 자동 속성이 되지만 구조체는 자동 속성을 만들 수 없습니다... 

뭐... 원래 이렇게 약속을 해뒀기 때문입니다...


struct의 의미는 '값 형식'이라는 의미를 가지고 있습니다.

class는 '참조 형식'이라는 의미를 가지고 있지요...


값 이라 하면 '어떤 데이터를 표현하기 위해 만들어 놓은 형식'을 말하는 것입니다.

어떤 데이터를 표현하기 위해서... 즉, 값의 표현을 목적으로 하는 것이 구조체라는 것입니다.

데이터 중심적이지요... 따라서 struct는 데이터 표현을 위해 사용합니다.


그런데 class는 참조 형식이지요.... 

서비스 즉, 클라이언트가 서버에게 어떤 기능을 요청했을 때

서비스를 수행, 제공하기 위한 목적을 하는 것이 클래스라는 것입니다.

아무튼... 값을 표현하면 struct, 서비스, 기능을 제공하면 class 입니다~!


서비스 제공을 위해서는 class를 쓰는 것이 바람직합니다.

값으로써 충분히 사용이 가능하다면 struct를 쓰면 되지요...

기본 서비스의 기능이 class로 정의된다면, 

기본 서비스 타입을 하나로 파생된 놈들을 모두 다룰 수 있습니다.

즉, 상속과 다형성의 특혜를 누릴 수 있게 되지요...


기본 클래스를 만드는 이유는

하나의 클래스로 다루며, 실제 객체의 기능을 사용하고자 하는 다형성을 위함입니다.

하나의 타입으로 여러개의 타입을 다룰 수 있기 때문이죠...

이것이 바로 다형성의 메커니즘이며,

최대한 조금만 알아야 확장성, 유지보수성 등의 객체지향의 의미가 커지는 전략입니다.


사실 struct만으로는 프로그램을 할 수 없지만,

class만으로는 프로그램을 할 수 있습니다.

Java는 모두 Class로만 다루지요...


뭐... 그런데 값으로 다루는 것이 훨신 효율적일 때가 있으니

더 늦게 만들어진 C#에서는 값을 사용하는 것이지요...


아무튼... 서버 클라이언트간 서비스를 제공하기 위해 만들어진 것이

class라는 사실을 잊지 마시길 바랍니다...


자...  이왕 말이 나온 김에...

지난 시간에 이어 '속성'에 대해 잠시 이야기를 나눠보도록 하겠습니다.


명확한 필드를 읽고 쓰기 위한 인터페이스를 '속성'이라고 부른다 했지요...

그런데 class에서는 인터페이스가 중요하지 필드가 그리 중요하지는 않습니다.

물론 상대적으로 말입니다...

그런데 struct는 데이터 중심이기에 굉장히 중요하지요...

필드를 명확하게 보여주는 것이 좋지 않겠습니까?


struct는 데이터를 표현하는 것, 어떤 항목을 가지고 있는지에 대해서

중심적으로 보기 때문에 필드를 명확하게 해야할 필요성이 있습니다.

따라서 struct에는 자동 속성을 제공하지 않습니다.



자... 다시 돌아와서!

구조체는 데이터 중심적!

클래스는 서비스 중심적!


다음시간에 뵙겠습니다!

이상 삽잡이였습니다!