반응형
<출처 : http://javaora.tistory.com/entry/Learning-the-JavaFX-Script-Programming-Language-Lesson-10-Packages >

목차
- 1단계 : 패키지 이름을 선택한다.
- 2단계 : 디렉토리를 생성한다.
- 3단계 : 패키지 선언을 추가한다.
- 4단계 : 접근자를 추가한다.
- 5단계 : 소스를 컴파일한다.
- 6단계 : 클래스를 사용한다.

현재까지의 테스트는 아마 한 디렉토리내에서 이루어졌을 것이다. 그럼 다른 디렉토리에 있는 클래스는 어떻게 사용해야 할까? 정답은 바로 패키지이다. 패키지를 이용한 개선된 소스코드 관리 방식을 이용해보자.

패키지는 코드들을 기능적으로 분류하여 그룹화 시킨다. 패키지는 또한 정의된 클래스에 고유한 네임스페이스(namespace)를 제공한다. 아래 6단계를 통해 Address 클래스를 패키지화 시켜보자.


- 1단계 : 패키지 이름을 선택한다.
코드를 수정하기전, 먼저 패키지 이름을 무엇으로 할지 정해야 한다. Address 라는 클래스는 애초에 주소록이라는 애플리케이션의 일부로 포함시키기 위해 만들었었다. 그래서 Address 클래스에 addressbook 이라는 패키지 이름을 사용하기로 해보자.


- 2단계 : 디렉토리를 생성한다.
이번 단계에선 addressbook이라는 이름의 디렉토리를 생성해보자. 이 디렉토리에는 addressbook 패키지에 속하는 클래스들은 모두 저장되게 될 것이다. 이 디렉토리의 위치는 원하는 곳에 생성하면 된다. 


- 3단계 : 패키지 선언을 추가한다.
자, 이제 Address.fx 소스에 패키지 이름을 추가해보자. 패키지는 package라는 키워드 다음에 패키지 이름을 적게 되며, 소스의 제일 첫번째 줄에 넣어주면 된다.

package addressbook;

class Address {
     var street: String;
     var city: String;
     var state: String;
     var zip: String;
}


- 4단계 : 접근자를 추가한다.
이제 클래스에 접근자를 추가하자. 클래스를  public으로 선언하도록 해보자.

package addressbook;

public class Address {
     public var street: String;
     public var city: String;
     public var state: String;
     public var zip: String;
}

이 public 키워드에 대해서는 다음 레슨에서 배울것이며, 일단 다른 클래스에서의 모든 접근을 허용한다고만 알아두도록 하자.


- 5단계 : 소스를 컴파일한다.
addressbook 디렉토리로 이동하여 javafxc Address.fx 라고 입력하면 컴파일 된다. 컴파일이 완료되면 해당 디렉토리에 .class 파일들이 생성되었을 것이다.


- 6단계 : 클래스를 사용한다.
패키지화된 클래스를 사용하는 방식은 두가지 이다. 첫번째 방식은 "패키지명.클래스명" 과 같이 사용한다. 이름이 좀 길어진다는 단점이 있다. 두번째는 미리 import 라는 키워드를 통해 addressbook.Address 라는 "패키지명.클래스명"을 입력하여 해당 패키지의 클래스를 사용하겠다고 명시한후 클래스명인 Address 만으로 그 사용이 가능하다.

// Approach #1

addressbook.Address {
     street: "1 Main Street";
     city: "Santa Clara";
     state: "CA";
     zip: "95050";
}

// Approach #2
import addressbook.Address;

Address {
     street: "1 Main Street";
     city: "Santa Clara";
     state: "CA";
     zip: "95050";
}

이 예제를 packagetest.fx 라는 이름으로 저장하고 컴파일해보자. 별다른 에러없이 컴파일이 끝난다면 패키지를 잘 찾은 것이다.

+ Recent posts