| [ WWW ] in KIDS 글 쓴 이(By): seasons (오히려전법) 날 짜 (Date): 1996년08월24일(토) 20시24분43초 KDT 제 목(Title): WWW 강좌 10 : Java 배우기 (19) A.Fun.A.Day(395) WWW 강좌 10 : Java 배우기 (19) ----------------------------------------------- < 자바 백서 > 계속 ⊙ 추상 메쏘드(Abstract Methods) 추상 메쏘드는 객체지향 모범의 강력한 구조이다. 추상 메쏘드를 이해하기 위해, 가상슈퍼클래스의 개념으로 화제를 돌려보자. 가상 슈퍼클래스는 실제로 클래스로 구현되지 않는 메쏘드를 정의하는 클래스이다 - 그들은 오직 계속되는 하위 클래스 들이 그들의메쏘드를 겹칠 수 있고 실제적인 구현을 지원하는 Place-Holder만을 제공한다. 이런 것이 모두 멋지게 들리는데, 왜 추상 슈퍼클래스를 필요로 해야되는가 ? 아무것도 의도된 잔소리가 아닌, 구체적인 예를 보도록 하자. 그림을 그리는 응용프로그램을 만들어 보자. 응용프로그램의 시작은 사각형, 라인, 원, 다각형들을 그리는 것이다. 더 나가, 도형(Shape)에서 수행되는 이동하 고, 도형을 다시 그리고, 회전, 도형 안을 채우는 등등의 연속된 동작을 만들 것 이다. 각 그래픽 클래스를 분리된 클래스로 만들 수 있다 - 그러면 사각형 클래스, 라인 클래스 등이 생긴다. 각각의 클래스는 각각의 변수를 얻거나 정하는 메쏘드를 가리키는 위치, 크기, 색깔, 회전등을 정의하는 인스탄스 변수들이 필요하다. 바로 여기에서, 단일한 추상 슈퍼클래스로 모든 인스탄스 변수들을 모을 수 있다 는 것을 깨닫는다. 추상 슈퍼클래스의 구조(Skeleton)는 다음과 같을 것이다. class Graphic { Point p; // 위치(positon) float fillcolor ; // 내부 음영 색깔(gray shade of interior) float linecolor ; // 외곽선의 색깔(grat shade of outline) ..... ; // 다른 인스탄스 변수들 // 다른 메쏘드 abstract void drawmyself() // 아무 일도 안하는 메쏘드 } 이제, 그래픽 클래스를 만들 수 없다. 오직 이 클래스의 하위클래스로 만들어야 한다. 사각형 클래스를 구현할 때, Graphic의 하위클래스로 하는 것이 좋 다. 사각형클래스에서 drawmyself와 사각형을 그리는 메쏘드를 구체적으로 구현하 면 된다. Graphic의 하위 클래스인 새로운 도형을 이런 방법으로 더해가고, 구현해 야 하는 것은 도형을 그리는 메쏘드이다. 추상 슈퍼클래스에서 정의된 코드를 모든 재활용하는 이익을 얻는다. ⊙ 패키지(Packages) 패키지는 단일한 콘테이너(Container)안에 관계된 클래스들의 집합을 모아둔 자 바언어의 구조이다. 예로, 자바언어 입출력(I/O) 시스템 코드는 단일한 패키지에 들어있다. 패키지의 첫 번째 이익은 단일한 컴파일단위(Compilation Unit)안에 모아 두는 것이다. 프로그래머의 입장에 본 두 번째 이익은 친구 인스탄스 변수와 메쏘드 들이 단일한 패키지를 통해 모든 클래스를 사용할 수 있다는 것이다. 그러나 패키지 바깥에서 선언된 클래스는 안된다. 예로써, 좌표 클래스와 사각형 클래스에다 좌표와 사각형을 수행하는 모든 동작 을 추가는 정의를 포함하는 사각형 지리 패키지(Rectangle Geometry Package) 생성 할 수 있다. 패키지를 통해, 전체적인 객체의 수행력을 향상시키는 좌표클래스의 친구 인스탄스 변수를 직접 접근하는 사각형을 가질 수 있다. 그러나 패키지 바깥 의 다른 클래스는 오직 클래스들의 public 메쏘드를 호출하여 좌표 객체와사각형 객체의 내부 상태(Internal State)를 접근 할 수 있다. -- ___o ___o ___o ___o ___o __ \\ __ __ \\ __ __ \\ __ __ \\ __ __ \\ __ (*)/ (*) (*)/ (*) (*)/ (*) (*)/ (*) (*)/ (*) +---------------------------------------------------------------------------+ | Won Geun Baek E-Mail: wgbaek@pharaoh.telecom.samsung.co.kr | | Samsung Electronics co. TEL : 02-405-1376 (7:00-18:00 Korea) | +---------------------------------------------------------------------------+ +--------------------------------------------------- | 오히려 전 / | 법 없이도 살수 있는 놈이죠. :<))* \ +----------------------------- hmh@gregory.kaist.ac.kr |