Page 25 -
P. 25

은 static 메서드의 라이브러리로써 만들어지고 그 static 메서드 중 하나로 main() 메서드가 존재                       1
                     한다. 터미널 창에서 java 명령어에 클래스 이름과 main() 함수를 지정하고 인수들을 나열하여 실행
                     하면 main() 함수를 호출하게 된다. main()의 마지막 명령문이 실행되고 나면 프로그램이 종료된다.                         기초 개념
                     이 책에서 어떤 작업을 수행하기 위한 “자바 프로그램”을 지칭하면 이러한 static 메서드 코드들(1.2
                     절에서 설명될 데이터 타입 정의를 포함하여)을 의미한다. 예를 들어 BinarySearch 자바 프로그램은
                     두 개의 static 메서드 rank()와 main()으로 구성된다. 이 메서드들은 입력받는 문자열 스트림 중에
                     서 명령줄 인수로 주어진 화이트 리스트 파일에 존재하지 않는 숫자들을 출력한다.


                     모듈러 프로그래밍  static 메서드의 라이브러리를 사용하는 매우 중요한 이유 중 하나는 모듈러 프
                     로그래밍을 가능하게 하기 때문이다. 즉, 어느 한 라이브러리에서 다른 라이브러리의 메서드를 호출
                     하여 사용할 수 있다. 이렇게 함으로써 다음과 같은 장점이 생긴다.

                       • 전체 프로그램의 크기가 매우 커지더라도 각각의 모듈은 적절한 크기로 만들 수 있다.
                       • 매번 재구현하지 않고 이미 있는 코드를 재사용할 수 있다.
                       • 특정 기능을 개선된 코드로 쉽게 대체할 수 있다.
                       • 문제 해결을 위해 추상화된 모델을 적용할 수 있다.
                       • 디버깅을 문제 발생 요소에 한정시킬 수 있다(아래 단위 테스트 설명 참조).

                     예를 들어 BinarySearch는 세 가지의 서로 독립적으로 만들어진 라이브러리를 이용한다. 이 책을 위
                     해 만든 StdIn, In 라이브러리와 자바에 내장된 Arrays 라이브러리가 사용된다. 각각의 라이브러리
                     는 또다시 다른 라이브러리들을 이용하고 있다.

                     단위 테스트  자바 프로그램을 작성할 때는 모든 static 메서드 라이브러리마다 main() 메서드를 포

                     함시키는 것이 좋다(프로그래밍 언어 중에는 복수의 main() 함수를 허용하지 않는 경우도 있다. 그
                     경우에는 매번 main() 함수를 포함시킬 수 없다). 단위 테스트를 제대로 한다는 것은 그 자체가 쉽
                     지 않은 작업이다. 모든 모듈은 최소한 그 모듈에서 제공하는 기능들을 실행해 보는 main() 메서드
                     를 포함함으로써 정상 동작 여부를 어느 정도는 보증해야 한다. 모듈에 기능이 추가되고 성숙해질수
                     록 main() 메서드의 테스트 기능을 더 정교하게 정제하여 개발자 시험용 코드로서 또는 본격적인 모
                     듈 검증용 테스트 클라이언트로 활용할 수 있게 한다. 클라이언트가 너무 복잡해진다면 별도의 독립
                     된 모듈로 만들 수도 있다. 이 책에서는 main() 메서드를 해당 모듈의 목적을 설명하는 데 사용한다.
                     검증용 클라이언트로서의 기능은 연습문제로 남겨둔다.


                     외부 라이브러리  이 책에서는 4종류의 외부 라이브러리들을 사용한다. 각 라이브러리마다 사용 방식
                     이 조금씩 다르다. 대부분의 라이브러리는 static 메서드들의 집합이지만 어떤 라이브러리는 데이터
                     타입에 대한 정의만 담고 있을 수 있다. 데이터 타입만 담고 있는 경우에도 다른 static 메서드 코드
                     에서 재활용할 수 있다.

                     java.lang.*은 표준 시스템 라이브러리들의 집합이다. 이 책에서는 이 중 몇 가지만 사용한다. Math
                     는 일반적인 수학 함수들을 제공하고, Integer/Double은 숫자 문자열을 해석하여 int나 double 타입




                                                                                              037
   20   21   22   23   24   25   26   27