본문 바로가기
카테고리 없음

소프트웨어의 재사용과 독립성 개념 이해

by ※§◈‡◐♣ 2021. 7. 11.

객체 지향 언어는 소프트웨어 모듈의 재사용과 독립성을 강조하고 있습니다. 이는 자료 추상화와 관련이 있는데, 소프트웨어 모듈을 재사용하기 위해서 다음과 같은 다섯 가지 기본 방법이 있습니다.

 

 

 

1. 자료와 연산의 확장

예를 들어, 큐를 데크(deque)로 바꾸기 위해서는 자료를 큐의 앞에 추가하고 뒤에서 빼내기 위한 두 개의 추가 연산이 필요합니다. 그러므로, 자료형 큐를 다루는 기존의 프로그램 모듈에 위 두 연산을 추가하여 자료형 데크를 처리하는 모듈로 수정할 수 있습니다.

2. 자료와 연산의 제한

이것은 위와 반대되는 개념이다 데크가 구현되어 있다면, 데크의 연산 중 위에서 언급한 두 개의 연산을 삭제하면 큐가 될 것입니다.

3. 하나 이상의 연산을 재정의

정사각형은 사각형에서 얻을 수 있습니다. 그러나, 정사각형의 면적을 구하는 함수는 필요한 자료가 줄어들기 때문에 일반 사각형의 면적을 구하는 함수를 수정하는 것이 좋습니다. 함수는 필요한 자료가 줄어들기 때문에 일반 사각형의 면적을 구하는 함수를 수정하는 것이 좋습니다. 소프트웨어 개발의 대부분의 경우 응용 프로그램들이 필요로 하는 기본 구조가 서로 유사하므로 소프트웨어 개발자들은 객체 지향 언어 형태로 제공되는 응용 프레임윅(framework)을 사용하기 시작했습니다. 소프트웨어 개발자들은 이 프레임윅(framework)을 재정의하고 재사용하여 특정 서비스를 제공합니다.

 

 

 

 4. 두 개의 부 품에 사용되는 비슷한 연산자들을 하나의 새 부품으로 추상화

예를 들어, 사각형과 원을 화면에 표시하려면  위치와 디스플레이 같은 특성을 둘이 다 가지는데, 이 특성을 도형이라는 추상화된 객체에 결합시킵니다. 사각형, 삼각형, 원 등의 특정 도형들은 이러한 도형의 특성들을 모두 갖습니다.

5. 다형성(polymorphism) 또는 연산에 적용할 자료형의 확정

다형성(polymorphism)의 좋은 예로써는 중복 표현과 매개 변수 추상 자료형이 있습니다. 연산이 적용될 자료형의 확장도 추상화의 예로 볼 수 있습니다. 즉, 임의의 여러 자료형의 변수를  인쇄할 수 있는 인쇄 함수를 작성했다면 이것이 여기에 해당됩니다.


재사용만이 객체 지향 언어의 유일한 목표는 아닙니다. 소프트웨어 모듈 내부의 상세한 내용에 대한 접근을 제한하는 것도 중요한 목적입니다. 이렇게 함으로써 모듈의 수정이 프로그램의 일부분에만 영향을 주도록 할 수 있습니다.

 

프로그램 재사용을 위한 수정과 모듈의 독립성을 위한 접근 제어는 서로 상충될 수 있습니다. 예를 들어, 큐에 연산을 확장하기 위해서는 모듈 내부의 자료에 접근해야 할 필요가 있습니다. 다른 한편으로는 접근 제한이 수정을 보충할 수도 있습니다. 왜냐하면 접근 제한은 연산을 추상적으로 정의하도록  도와주어 정의는 그대로 두고 구현 부분만을 쉽게 수정하도록 합니다.

 

접근에 대한 제어는 두 가지 형태를 갖습니다.

  1.  모든 내부 자료에 대한 접근 연산을 정의하는 것
  2. Ada에서와 같이 클라이언트가 접근할 수 있는 자료를 방출할(export) 목록을 열거

Modula-2의 DEFINITION MODULE에서 제공된 자료와 같이 모든 자료가 묵시적으로 외부에서 접근 가능한 묵시적 방출 방법도 있습니다. 내부 상세한 대한 대한 접근 제한 방법은 정보 은닉(information hiding) 기법, 또는 캡슐화(encapsulation) 기법 등 여러 가지로 부르고 있지만 여기서는 보호 기법(protection mechanism)이라고 부릅니다.

 

댓글