개발 서적 기록

19일차 - 모듈로 정보 은닉하기

밍 끄적 2023. 8. 21. 12:27
728x90

2023.08.21 MON

234p ~ 249p

 

18일차 내용 ⬇️

2023.08.21 - [개발 서적 기록/오브젝트_조영호] - 18일차 - 하향식 기능 분해 설계

 

18일차 - 하향식 기능 분해 설계

2023.08.20 SUN 223p ~ 234p 17일차 내용 ⬇️ 2023.08.19 - [개발 서적 기록/오브젝트_조영호] - 17일차 - 프로시저 추상화와 데이터 추상화 17일차 - 프로시저 추상화와 데이터 추상화 2023.08.18 FRI 214p ~ 224p 16

magenta-ming.tistory.com


정보 은닉

시스템에서 자주 변경되는 부분을, 상대적으로 덜 변경되는 안정적인 인터페이스 뒤로 감춰서, 시스템을 모듈 단위로 분해하는 방법

시스템을 모듈로 분해한 후에는 각 모듈 내부를 구현하고, 이때 기능 분해가 적용된다.

 

모듈은 복잡하지 않게, 변경에 유연하게 설계해야한다.

그래서 이 모듈에 대한 인터페이스를 제공해야한다.

인터페이스를 통해서, 외부에서 모듈을 추상화할 수 있어 모듈의 복잡성이 낮아진다.

그리고, 인터페이스는 쉽게 변경되지 않으므로, 변경 가능한 설계에 대한 부분은 모듈 내부로 감출 수 있어, 실제로 변경이 발생했을 때에 여러 모듈이나 인터페이스가 아닌 단 하나의 모듈만 수정하면 된다.

 

모듈의 장점

  • 모듈 내부의 변수가 변경되더라도 모듈 내부에만 영향을 미친다.
  • 비즈니스 로직과 사용자 인터페이스에 대한 관심사를 분리한다.
  • 전역 변수와 전역 함수를 제거함으로써, 네임스페이스 오염을 방지한다.

 

모듈의 단점

인스턴스의 개념을 제공하지 않는다.

그래서 개별 객체에 대한 독립적인 단위를 다룰 수 없다.

이를 추상 데이터 타입으로 해결할 수 있다.

 

데이터 타입

데이터를 저장하는 객체(object)와 객체가 할 수 있는 연산(operation)의 집합

 

추상 데이터 타입 Abstract Data Type

추상 객체의 클래스를 정의한 것으로, 내부에 캡슐화할 데이터와, 적용할 수 있는 오퍼레이션을 가지고 있다.

어떤 데이터 타입이 어떤 작업으로 이루어지는지만 표현한다.

이 추상 데이터 타입에 대해 여러개의 인스턴스를 생성할 수 있다.

 

 

728x90