프로그래밍/Java

자바 프로그래밍 / Package란?

배기니어 2021. 2. 5. 02:14

안드로이드로 프로그래밍을 하다보니 자바도 공부를 해야 한다.

 

개발은 안드로이드 스튜디오로 하지만 자바를 공부하기 위해 이클립스를 설치하고 이클립스로 자바를 익히기로 했다.

코드 작성에 앞서 프로젝트 및 패키지, 클래스 파일 생성에서부터 정확하게 알고자 글을 쓴다.

 

 

 


 

About Package

패키지란 서로 관련이 있는 클래스나 인터페이스의 모음이다.

패키지는 거대한 프로젝트에서 클래스 파일들을 효율적으로 관리하기 위해 존재한다.

패키지는 프로젝트에 포함되어 있고, 하나의 프로젝트 안에 여러 패키지를 생성할 수 있다.

 

예를 들어 음악 플레이어를 개발한다고 할 때, 다양한 분야의 클래스와 인터페이스가 필요하겠지만

크게 음악, 고객에 대한 클래스와 인터페이스가 필요하다고 생각해보자.

음악에 대해서는 music class, album class, play interface 등이 필요할 것이고,

고객에 대해서는 account class, playlist class, sign in interface 등이 필요할 것이다.

이 때,  음악과 고객에 대해 클래스와 인터페이스를 구분하여 따로 관리한다면 활용도도 높일 수 있고

효율적으로 관리할 수도 있다.

이렇게 음악과, 고객 두 부분으로 나눈 것을 패키지라고 생각하면 된다.

 

그림 1. 패키지

그럼 이클립스를 실행해서 패키지를 좀 더 알아보자.

먼저 이클립스를 실행한 뒤 프로젝트를 생성한다.

프로젝트 이름은 Test로 하고 별다른 설정이 필요없어 Finish를 눌러 바로 프로젝트를 생성한다.

 

그림 2. 프로젝트 생성

 

프로젝트 생성 후에 왼쪽에 프로젝트 탐색창을 보면 src 디렉토리 밑에 아무것도 없는 것을 확인할 수 있다.

 

그림 3. 프로젝트 생성 완료

 

다음은 src 디렉토리에 작성하고자 하는 클래스 파일을 생성한다. 여기서는 클래스 이름을 MyClass로 했다.

파일을 생성하면 자동으로 패키지가 생성되고 패키지 이름이 default package인 것을 확인할 수 있다.

 

그림 4. default package

 

위 과정으로 보아 이클립스에서는 클래스 파일을 패키지 내에서 관리하도록 권장하는 것으로 보인다.

생성된 클래스 파일에 작성된 것을 보면 클래스 이름 외에는 아무내용이 없다.

클래스 생성 후에는 C:\Users\user\eclipse-workspace\Test\src에도 MyClass.java 파일이 생성된 것을 확인할 수 있다.

 

이제 프로젝트 내에 패키지를 생성해보자.

패키지 이름을 myPackage로 하여 생성하면 디폴트 패키지 아래에 새로운 패키지가 생성된 것을 확인할 수 있다.

새로 생성한 패키지 안에는 아무 파일도 없다.

 

그림 5. 패키지 생성

 

패키지 생성 후 다시 C:\Users\user\eclipse-workspace\Test\src를 확인하면 myPackage라는 디렉토리가 하나 추가된 것을 확인할 수 있다.

여기서 알 수 있는 것은 자바에서 패키지의 구조가 파일 시스템에서 디렉토리의 구조와 같다는 점이다.

따라서 이클립스의 프로젝트 탐색창에서 파일을 이동하거나 삭제하면

윈도우 탐색창에서 파일을 이동하거나 삭제하는 것과 동일한 작업이 수행된다.

 

그림 6. 디렉토리 생성

 

이제 default package에 작성해두었던 MyClass.java 파일을 myPackage로 이동해보자.

클래스 파일을 우클릭하고 Refactor > Move를 실행한 뒤 myPackage를 선택하여 이동하면 된다.

그럼 default package가 사라지고 myPackage만 남게되며, 그 안에 MyClass 파일이 있는 것을 확인할 수 있다.

그리고 클래스 파일을 확인해보면 아래와 같이 상단에 구문이 추가된 것을 알 수 있다.

 

그림 7. 클래스 이동

 

그렇다! 원래 클래스 파일에는 상단에 소속 패키지를 명시해야 하는데 처음에 생성할 때 따로 패키지를 생성하지 않아

default package에 생성되었기 때문에 명시할 패키지가 없었던 것이다!

이번엔 윈도우 탐색창에서 C:\Users\user\eclipse-workspace\Test\src에 새로운 디렉토리를 생성해보자.

이름은 directory로 하여 생성했다.

 

그림 8. 새로운 디렉토리 생성

 

그리고 이클립스 프로젝트 탐색창에서 src를 새로고침을 하면!

아래와 같이 새로운 패키지가 생성된 것을 확인할 수 있다.

 

그림 9. 생성된 directory 패키지

 

이처럼 패키지는 디렉토리와 같은 개념으로 생각할 수 있다.

따라서 패키지 내에 하위 패키지를 포함할 수도 있다.

만약 코드 작성 중 다른 패키지의 클래스를 이용해야 한다면 파이썬처럼 import문을 이용해 불러오면 된다.

차이점은 자바에서는 패키지와 클래스 이름을 dot(.)으로 구분한다.

위의 예를 들자면 directory 패키지에서 myPackage의 MyClass를 사용하고 싶을 때는

 

import myPackage.MyClass;

 

이렇게 입력하면 된다.

 

 

 


 

요약

패키지

 : 서로 관련있는 클래스나 인터페이스들의 모음

 

특징

 - 파일 시스템에서의 디렉토리와 같다.

 - 패키지를 생성하지 않고 클래스 파일을 생성하면  디폴트 패키지가 생성된다.

 - 소속 클래스의 상단부에는 패키지가 명시되어 있다.

 - 파일 시스템에서 src 디렉토리 내에 새로운 디렉토리를 생성해도 패키지가 생성된다.

 - 패키지 내에 하위 패키지를 포함할 수 있다.

 - 다른 패키지에 작성한 클래스를 사용할 경우에는 import문을 작성해야 한다.

 - 패키지와 클래스 이름은 dot(.)으로 구분한다.