공대생의 일기/2010年2010. 12. 24. 03:42

2010년 11월 20일

1.조사내용

 

1.1 ‘정보은닉’은 왜? 유지보수를 용의하게 할까?

정보 은닉은 객체와 알고리즘이 필요하지 않은 시스템 일부에는 가능한 한 이들을 보이지 않게 한다. 모듈화 된 코드는 시스템의 주어진 일부를 이해하기 위해 필요한 정보의 양을 최소화함으로써 프로그래머가 “인지하는 부하”를 줄여준다. 잘 설계된 프로그램에서는 모듈 간의 인터페이스가 가능한 “간단하며” 변경될 수 있는 설계적 결정 사항은 하나의 모듈에 숨겨진다. 여기서 모듈에 숨겨져 있다는 것이 중요한데, 대부분의 상용 소프트웨어는 처음의 개발보다 유지보수에 들어가는 프로그래머의 시간이 훨씬 더 많기 때문이다.[1]

 

1.2 ‘정보은닉’을 했다고 해서 유지보수성이 높은 것은 아니다.

클래스에 정보은닉의 원칙을 적용한다고 해서 항상 프로그램의 유지 보수성이 좋은 것은 아니다. 객체지향 프로그램이 유지 보수성이 높은 것은 바로 클래스 내부의 변경이 프로그램의 다른 부분에 영향을 미치지 않기 때문이다 만약 그 변경이 클래스의 내부에만 한정된 것이 아니라, 클래스의 외부에도 영향을 줄 수 있는 변경이라면 변경이 파급되는 것을 막을 방법은 없다. 예를 들어 공용 연산의 이름을 변경하거나, 인지를 수정하거나 하는 등의 변경은 클래스 내부의 변경이 아니다. 즉 클래스와 프로그램의 다른 부분과의 인터페이스에 대한 변경이다. 따라서 클래스의 인터페이스에 변경이 발생하는 경우에는 그 변경이 프로그램의 다른 부분에 파급되는 것을 피할 수 없다. 즉 유지 보수성이 낮아지게 된다. 따라서 단순히 속성은 전용으로 하고 연산을 공용으로 선언한다고 해서 높은 유지보수성을 쉽게 얻을 수 있는 것은 아니다.[2]

 

1.3 JAVA에서 ‘정보은닉’의 예

class Test{  

 private String name = "홍길동";
String name2 = "김모씨"; 
private void A(){ }
private void B(){ }
private void C(){ }
public void execute(){ 

C();
B();
A();

 }

}


public class Test01{

public static void main(String args[]){  

  Test t = new Test(); 
  t.execute();//이건 가능함
  t.A();//불가능 
  System.out.println(t.name );//불가능

}

}


 

5.참고문헌

[1]Michael L. Scott, “(새로보는)”프로그래밍언어“, 에이콘출판사, 2008.

[2]채흥석, “클래스 구조의 이해와 설계”, 한빛미디어, 2004.

[3]http://aeternum.egloos.com/1232020   ->  여기가 더 자세함!

Posted by 검지발가락♡