。공부 。

<C++> 캡슐화와 추상화란?

kyoe 2007. 11. 29. 23:09
추상화란..
약을 예로 들면 약엔 알약 가루약 그리고 캡슐로 쌓여져 있는 약이 있죠?
그 캡슐 안에는 우리가 모르는 종류의 처방약들이 들어있을 것입니다. 근데 우리가 그 약을 먹을때 이안에 어떤어떤 기능을 해주는 어떤어떤종류의 약들이 들어있다 라고 알고 먹는 사람들은 극히 들물것이다. 이약하나만 먹으면 감기가나으니까 이건 감기약이야 하고 먹어버리면 그만이니까 말이다 이렇듯 사람들은 이약에 이것저것 무엇이들었는지 복잡하게 생각할필요없이 단지 감기약이라는것만 알고 먹으면 그만이다 이러한것을 추상화라한다. 음.. 하얀박스에 빨간십자가가 그려져있습니다. 그통이 무엇이라고 생각하죠? 그렇죠 약상자입니다 당연히 그상자엔 약이들어있겠고요.. 이것역시 추상화랍니다.

캡슐화란..
C++ 로 간단히 은행시스템의 계좌를 예로 들면 계좌번호,이름,비밀번호,입금,출금,잔액조회등이 있다고 하자 여기서 데이터는 계좌번호,이름,비밀번호가 될것이고 기능적인것은 입금,출금,잔액조회가 될것이다.
근데 여기서 클래스를 두개를 만들어 사용한다면 결합도가 높아질것이다 그둘은 상당한 연관성을 갖고 있는데 굳이 클래스를 두개로 만들어 가면서 까지 만들필요가 없단말이다 위처럼 연관성이 있는 것들을 하나의 클래스로 모아둔것을 우리는 캡슐화라고 하는것이다.

C++ 에서 계좌생성 클래스가 추상화와 캡슐화를 잘되어있으면 우리는 그 클래스안에 어떤함수가 들어있고 어떤 데이터가 들어가서 어떻게 돌아가는지 그런복잡한것을 생각하지 않아도 된다. 단지 이클래스의 객체를 만들어 사용하면 우리는 계좌생성을 할수있다 라는것만 알면 되는것이다.

* 프로그램의 결합도와 응집도 *
- 결합도는 낮고 응집도는 높아야한다.
    ->클래스간의 의존성은 줄이고(결합도) 한클래스내의 기능을 강화(응집성) 해야한다.