한동안 아주 간단한 내용의 소스코드로 (그것도 C언어로) 된 내용을 올리고 있었습니다.
C++ 관련된 소스가 제법 있기는 합니다만, 그래도 기초적인 내용을 시간이 있을 때, 정리를 해두는 것이 좋을 것 같다는 생각이 들어서 이를 하려고 생각하니 C에서 가장 중요하다고 생각되는 부분부터 이야기를 하고 넘어가야 할 것 같다는 생각이 들더군요.
(어디까지나 저희 블로그를 링크를 걸어두셨거나, RSS를 이용하여 구독하시는 분들을 생각하여 순서대로 진행을 한 것입니다.)


그래서 개인적으로 보고 넘어오는 것이 좋겠다고 생각되는 부분만 조금 올리고 C++로 넘어가서 진행을 하려고 했었습니다.
그리고 드디어 C++ 관련 내용을 진행할 수 있게 되었습니다.

맛보기로 클래스를 만들고 쓰는 것에 대한 아주 기초적인 내용을 이야기를 하도록 하겠습니다.

클래스가 무엇인가?
이런 내용의 글은 정말 인터넷에 엄청나게 많고 C++ 혹은 JAVA 와 같은 객체지향 프로그래밍 언어와 관련된 내용의 글이나 도서를 읽으면 정말 친절하게 설명이 되어있습니다.
하지만 개인적인 옛 기억을 더듬어 보자면 C언어를 하고 JAVA로 넘어갔던 저에게 있어서는 클래스라니? 이건 도대체 어디에 쓰는 물건인가? 정말 엄청나게 많은 고민을 하고는 했었습니다. 그리고 그 엄청나게 많은 인터넷의 자료들과 책의 설명은 그닥 도움이 되지 못했다는 것을 알고 있습니다. 그냥 갑자기 이해를 하려고 생각하시면 안됩니다. 일단 객체지향 프로그래밍을 C언어와는 엄청난 차이를 만들어주는 것이 바로 클래스이기 때문입니다. 온갖 예를 들어서 보더라도 이해가 안되었습니다.

이를 이해하는 저의 예를 들어보자면, 그냥 일단 쓰시면 결국 이해하게 될겁니다. 이해하고 사용하려고 하면 엄청나게 오래 걸립니다. 일단 쓰다가 이해하는 편이 오히려 속이 편할 수 있습니다.





main




Test.h




Test.cpp





우선 public과 private에 대한 설명을 하고 넘어가야 할 것 같습니다.
(protected 는 상속 예제를 할 때, 설명을 하도록 하겠습니다.)

main 소스를 보시면 이해가 확실하시리라 생각합니다만, public은 말 그대로 공개적인 것이어서 클래스가 아닌 다른 곳에서 값을 부르고 변경하는 작업이 가능한 영역입니다. 그리고 private은 대충 직역을 하자면 사적인 것이기 때문에 외부에서 직접적인 접근이 불가능 합니다.

물론 변수를 public으로 선언을 하고 잘 사용을 한다면 귀찮은 get이나 set 함수를 사용하지 않아도 되니 편리하게 느껴지실 수 있습니다. 하지만 객체지향 프로그래밍에 있어서는 정말 특별한 경우가 아니고는 private이나 protected로 변수를 관리를 하는 것이 정석입니다. 말 그대로 정석입니다. 자칫하면 소스 보여주었다가 '이 새끼는 뭐하는 새끼지?' 라거나 혹은 '이런 무식한 놈 보게?' 라는 생각을 상대방으로 하여금 들게 할 수 있는 일이라는 뜻입니다.

가능하면 '습관적'으로 변수를 private이나 protected로 선언을 하시고 get으로 시작하는 함수(접근자)와 set으로 시작하는 함수(변경자)를 만들어서 사용하시길 바랍니다.
저작자 표시 비영리 변경 금지
신고

'Programming > C/C++' 카테고리의 다른 글

[C++] 상속과 가상함수  (0) 2012.02.26
[C++] 생성자 오버로딩과 클래스 복사  (2) 2012.02.25
[C++] 클래스 완전 기초  (0) 2012.02.23
[C] 함수 오버로딩 예제  (0) 2012.02.22
[C] 간단한 포인터 예제  (0) 2012.02.21
[C] AND, OR, XOR  (0) 2012.02.20
by 가우초 2012.02.23 18:33
| 1 |