information hiding, modularity에 대하여

2020. 3. 22. 18:16Computer Science/CS

반응형

객체지향 프로그래밍의 경우 Information hiding, Modularity, Code re-use, plug-ability와 easy debugging 4가지의 장점을 가지고 있다.



첫 번째로, information hiding이다.
information hiding은 간단히 말하면 정보 은닉,
즉 ‘객체 간에 서로를 모르게 하는 것’이라 말할 수 있다.

예를 들어 자동차의 설계도(Class)가 있다고 해보자.
BMW와 모닝(object)은 이러한 자동차의 설계도를 기반으로 독립적인 회사만의 기능을 추가해 새로운 자동차를 만든다.

이렇게 생성된 BMW와 모닝(object)은 ‘자동차’(Class)라는 공통점은 가지고 있지만 각 객체의 기능에 따라 다르다는 특징을 가진다.
이처럼 객체간에 공통된 메소드를 public하게 정의하고,
그 외의 객체만의 기능을 객체 외부에서 수정할 수 없도록
private하게 하는 것을 information hiding이라 한다.

이렇게 생성된 BMW, 모닝은 하나의 객체로서 서로에게 영향을 미치지 않을 뿐 아니라 더 큰 카테고리로도 묶일 수 있다.

BMW와 폭스바겐이 ‘고급 자동차’라는 카테고리로 확장될 수 있고 모닝,티코 등이 ‘대중적인 자동차’로 확장될 수 있는 것처럼 각각의 객체는 그 필요에 따라 더 큰 모듈로 확장시킬 수 있다.
이러한 성격을 객체지향 프로그래밍에서는 Modularity, 즉 모듈화라고 한다.

이에 더 나아가, 코드를 재사용(code re-use)할 수도 있다.
BMW와 모닝에서 사용하던 자동차 설계도의 엔진 부분을 가져와 보트나 비행기의 엔진을 만드는 것처럼 객체 지향 프로그래밍은 필요에 따라 코드를 재사용할 수 있다

마지막으로, Plug-ability와 easy debugging이다.
예시로 다시 돌아가서, BMW와 모닝을 자동차 설계도에 따라 생성했는데 모닝의 주행 능력에서 문제가 생겼다고 생각해보자.
객체지향프로그래밍은 이러한 문제를 빠르게 찾을 수 있다.
만약 BMW에서도 동일한 문제가 생긴다면 그것은 설계도(Class)의 문제일 것이고 BMW에서는 문제가 생기지 않았다면 모닝의 Private한 메소드(object 내)에서 생긴 일일테니까!
또는 자동차 설계도의 엔진 부분을 인증된 다른 설계도로 바꿔서 실행을 해볼 수도 있다.
이처럼 객체 지향 프로그래밍은 문제가 어디에서 발생했는지 쉽게 파악할 수 있다는 장점을 가지고 있다

반응형