태그 : 객체지향

객체지향...

오랜만에 글을 쓰네요.
프로그래밍말고 이것저것 생각할게 정말 많아서 블로그는 버려두고 살았네요.

09년 새해를 맞아서 좀더 준비해야겠다는 생각이 드네요.

하여튼 오늘은 객체지향에서 객체라는 놈에 대해서 좀 설명드릴까 합니다.
대부분 책을 보면 꼭 객체지향에서 절차지향을 설명하고, 객체지향에 대해
설명하고 있더군요.

저런 설명에 대한 제 의문점은 절차지향에서 객체지향이 나온것인지에
대해 생각해 봐야한다는 점입니다.
객체지향은 모든 문제의 근원을 객체라는 단위로 보는것이고,
절차지향은 모든 문제를 하나의 흐름으로 보자는 것이지요.

객체지향으로 보는건 저번에 썼던 내용처럼 모든것을 나로 간주하면 가장 좋은
접근법이 나올수 있겠습니다.
사람들이 자주 쓰는 말인 "나라면 그랬겠다.."를 모든 객체에 저장한다는 뜻이지요.
내가 키보드라면, 내가 모니터라면, 내가 검사라면, 내가 괴물이라면...
라는 식으로 보는겁니다.

"내가 키보드라면 상대가 ㄱ을 눌렀을때 ㄴ이라고 해주겠어..ㅋㅋㅋ"라고
하면
class CKeyBoard
{
public:
  void Input(char c) { if(c == 'ㄱ') ㄴ으로 처리; }
};
※ 'ㄱ'은 정확히 문법에 맞진 않습니다.(유니코드면 될것같네요.)
하여튼 이런식으로 내가 무엇이라면 어떻다라고 생각해서 접근하는 방식입니다.
개념이 절대로 어려운게 아닙니다.

그럼 다음으로 객체지향 하면 꼭 나오는 3대속성이 있지요.
예전글에 3대속성을 간단히 정리했지만 이번 설명에 곁들여서 좀더 추가적인
설명을 해보도록 하겠습니다.

우선 다형성부터 설명드리면 다형성은 객체는 여러가지 모습으로
보일수 있다는 것입니다.
간단하게 설명하면
나 - 프로그래머                    - 회사에서
    - 시민                             - 대한민국에서
    - 똥만 만들어 내는 기계     - 화장실에서
    - 밥만축내는 식충             - 음식점에서
이런식으로 나누어지겠죠?
나라는 객체가 "회사", "대한민국", "화장실", "음식점" 에서 전혀 다른 객체로 인식되고 있습니다.
이런식이 다형성인데요, cpp코드설명보다는 java문법이 명확할듯해서 적어보면
☞ class CMe extends 시민 implementsIProgrammingable, I똥싸기가능, I음식먹을줄암
(참고로 I는 Interface의 약자입니다.)
식으로 표현가능하겠네요. CMe는 시민으로도 I똥싸기가능으로도 업캐스팅가능하며
CMe는 시민 ,IProgrammingable, I똥싸기가능, I음식먹을줄암 로 다양한 모습으로 변신 가능합니다.
즉 다형성이 되는것이죠.

그럼 캡슐화에 대해서 설명해 보도록 하겠습니다.
캡슐화는 내꺼를 보호하자 라는건데 class에는 public, private, protected, (자바에 한해서)공백, 이 있습니다.
지갑을 가지고 다닐때 돈이 많이 들어서 신경쓰이면 가방에 넣고 가방을 가슴에 끌어안고 다니죠?
이게 캡슐화입니다. 감싼다는 뜻인데요,
class CMe
{
private:
    지갑 m_내지갑;
};
이제 외부에서는 무슨수를 쓰더라도 지갑에 엑세스가 불가능하겠습니다. 물론 내부(내 자신)은 액세스가 가능하죠.
public, protected, private, 공백은 각각의 특징이 있지만 지금 설명에는 필요하다고 생각치 않아
생략토록 하겠습니다. (공부하시는 책에 아마 잘 나와있을껍니다.)

그럼 마지막으로 상속이 있는데....어라..?? 아까 했군요.
다형성에서 상속을 다루어 버렸네요..하하하;;

하여튼 간단한 객체의 개념을 이렇게 설명드릴수 있겠네요.
요즘 주변에서 프로그래밍 공부하시는 분이 계셔서 설명드리다가 적게 되었습니다.

또 생각나면 설명드릴깨요~

by JetLi | 2009/01/02 00:07 | C++ | 트랙백 | 덧글(0)

◀ 이전 페이지 다음 페이지 ▶