[자바] 패키지 package

2021. 5. 21. 09:33·Archive/Java

 

1. 패키지의 이해

 

패키지란?

프로그래밍에서 여러 클래스를 관리하기 위해 기능적으로 영향을 미칠 수 있는 클래스끼리 묶어놓고, 접근 범위 안에 효과적으로 호출하기 위해서 사용하는 개념이다.

 

윈도우에는 윈도우 탐색기(window+E)가 있다. 윈도우 탐색기는 컴퓨터에 보관되어 있는 파일을 관리하기 위해 폴더를 만들고, 그러한 폴더를 효율적으로 다루기 위해 존재한다. 즉, 폴더 구조를 한눈에 볼 수 있도록 만들어진 프로그램이다.

 

자바에도 많은 .java 파일들이 존재한다. 또한 우리가 프로그래밍을 하면서 계속적으로 .java 파일을 만든다. 이러한 많은 파일을 효율적으로 관리하기 위해 Java에서는 '패키지(package)'라는 구조를 사용한다.

 

먼저 Java(jdk)에 존재하는 패키지를 살펴보도록 하자. 이미 만들어 놓은 기능들이다.

 

(1) http://www.oracle.com/technetwork/java/javase/documentation/jdk8-doc-downloads-2133158.html 에 접속하여 다운받거나 온라인으로 https://docs.oracle.com/javase/8/docs/api/index.html 에 들어가 API들을 볼 수 있다.

 

(2) JAVA API(Applivation Programming Interface)

자바에서 제공되는 클래스의 설명들을 볼 수 있다. 패키지를 모르면 "All Classes"를 선택하여 쉽게 찾아볼 수 있다. 자바 사전이라고 생각하고, 자주 보는 습관을 들이자.

 

(3) 모든 클래스들은 패키지로 관리되어 있는 것을 볼 수 있다. 해당 패키지에서 해당 클래스를 볼 수 있다.

 

(4) 패키지

관련있는 클래스들을 패키지로 그룹지어 관리하는 것(클래스를 모아놓은 폴더)을 확인할 수 있다.

ex1. Scanner 클래스는 java/util 폴더에 있는 Scanner 클래스 (java.util.Scanner)

ex2. Math 클래스는 java/lang 폴더에 있는 Math 클래스 (java.lang.Math)

* java.lang 패키지의 클래스는 import 생략

 

(5) 우리가 만든 패키지

JAVA(jdk)에 패키지가 있듯이 우리도 클래스를 만들 때 패키지로 관리하면 효율적인 작업을 할 수 있다. 

 

 

2. 정답은 없지만, 효율적으로 해야하는 패키지의 일반적인 설계방식

 

(1) 초보 개발자 뿐만 아니라, 오래된 개발자의 경우에도 패키지를 만들 때 패키지 이름에 대해서 다소 고민을 하는 경향이 있다. 패키지 이름만 봐도 어떤 클래스들이 모여있는지 알 수 있도록 만들고 싶은데 그게 쉽지 않은 것이다.

먼저, 패키지 이름은 유일한 이름이어야 합니다. 우리 회사에서 개발한 소스(.java 파일)를 다른 곳에 이식하려 할 때 이름이 중복되면 안되기 때문이다. 그래서 주로 패키지 이름은 유니크한 도메인 주소를 역방향으로 하여 만든다.

예를 들어, 회사 도메인이 www.dh.com  이라면, com.dh.*   라고 하고, 뒤에는 기능별 또는 개발팀에서 정한 규칙에 의해 패키지명을 만든다.

 

(2) 물론 패키지명은 개발 중 언제든지 수정이 가능하고, 패키지 간의 클래스 이동도 가능하다. 따라서 패키지명을 만들 때 너무 스트레스 받지 말고, 쉽게 생각하고 만들면 된다.

 

(3) 명명규칙은 변수와 같이 숫자로 시작할 수 없고, _(underscore)나 $ 를 제외한 특수문자를 사용할 수 없다. 모두 소문자로 작성하는 것이 일반적이다.

 

 

3. import 의 이해

 

다른 패키지의 클래스를 가져올 때 사용한다.

패키지를 만들고 클래스를 만든 후 서로 다른 패키지의 클래스를 사용하려고 할 때는 반드시 import 키워드를 사용해서 해당 클래스를 import 해야 한다. 하지만 우리가 사용하는 이클립스는 자동으로 import 되도록 지원한다.

* 동일한 패키지 클래스는 import 할 필요없다.

* import com.dh.ex.*;

// * 는 모든 것을 의미한다. 패키지 내에 너무 많은 클래스가 있을 경우엔 메모리 환경에 안좋은 영향을 미치겠지만 요즘은 메모리 환경이 좋아 이런 방식을 많이 사용한다.

'Archive > Java' 카테고리의 다른 글

[자바] 추상 클래스 abstract class  (0) 2021.05.21
[자바] 상속 inheritance  (0) 2021.05.21
[자바] 접근제한의 종류와 static  (0) 2021.05.21
[자바] 객체지향 프로그래밍(OOP : Object Oriented Programming)  (0) 2021.05.16
[자바 문제] 구구단 (method, do~while문 사용)  (0) 2021.05.14
'Archive/Java' 카테고리의 다른 글
  • [자바] 추상 클래스 abstract class
  • [자바] 상속 inheritance
  • [자바] 접근제한의 종류와 static
  • [자바] 객체지향 프로그래밍(OOP : Object Oriented Programming)
J. Son
J. Son
Petit à petit l'oiseau fait son nid.
  • J. Son
    Steady Study Log
    J. Son
  • 전체
    오늘
    어제
    • 분류 전체보기 (170) N
      • Python & SQL (63)
        • Python Basics (21)
        • Python Problems (23)
        • Python Practice (11)
        • MySQL (1)
        • Git & GitHub (7)
      • ML & DL (7) N
      • Projects (5)
        • Project Portfolio (5)
      • AI Camp (4)
        • Camp Reflection (4)
      • Concept Notes (6)
        • Statistics & Stata (4)
        • Mathematics (2)
      • Archive (84)
        • Java (24)
        • R (1)
        • Languages (49)
        • Miscellaneous (10)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

    • GitHub
    • WikiDocs
  • 공지사항

  • 인기 글

  • 태그

    불어 공부
    Stata
    파이썬 streamlit
    Github
    passe compose
    초보자를 위한 파이썬 300제
    불어 관계대명사
    machine learning
    프로젝트 오일러
    객체
    복합과거
    Le Petit Prince
    Python
    어린왕자 불어
    GIT
    프랑스어 공부
    머신러닝
    streamlit
    python problem
    share.streamlit.io
    파이썬
    자바
    파이썬 크롤링
    점프투파이썬 연습문제 풀이
    어린왕자 프랑스어
    점프투파이썬 연습문제
    맥 git
    파이썬 문제
    MySQL
    python streamlit
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
J. Son
[자바] 패키지 package
상단으로

티스토리툴바