유수봉 교수의 자바프로그램 11주차 패키지, 모듈, 디폴트 패키지, Object Class

패키지(Package)란 무엇인가 ?

  • 자바에서 패키지란 서로 관련된 클래스와 인터페이스의 컴파일 된 클래스 파일들을 하나의 디렉터리에 묶어놓은 것을 말한다. 이러한 패키지는 여러명이서 분담하여 프로그램을 개발하는 경우 동일한 이름의 클래스가 존재해서 오류가 발생하는 것을 방지한다.

모듈(Module)이란 무엇인가 ?

  • 자바에서 모듈이란 여러 패키지와 이미지 등의 자원을 모아놓은 컨테이너를 말하며 JDK 9부터 자바 API의 모든 클래스들을 패키지 기반에서 모듈들로 완전히 재구성하였다. 또한 이는 응용 프로그램 역시 여러 개의 모듈로 작성할 수 있게 해준다. 즉, 클래스들을 정의해서 패키지로 만들고 이 패키지를 모듈로 만든다고 할 수 있다.

JAVA에서 패키지(Package)와 모듈(Module)은 왜 사용하는가

  • 자바에서 패키지를 사용하는 이유는 앞에서도 말했듯이 여러명의 개발자가 하나의 소프트웨어를 개발하기 위해서 협업을 하는 경우 다양한 클래스를 생성하게 될 것인데 동일한 이름의 학장자가 있으면 오류가 나기 때문에 이를 방지하기 위해서 패키지를 사용하며 모듈을 사용하는 이유는 자바 API를 여러 모듈로 분할하여 응용프로그램의 실행에 적합한 모듈들로만 실행환경을 구축할 수 있게 할 수 있으며 메모리 등의 자원이 열약한 작은 소형 기기에 꼭 필요한 모듈로 구성된 작은 크기의 실행 이미지를 만들기 위해서 사용한다.

JAVA에서 패키지(Package)는 어떻게 사용하는가 ?

  • 자바에서 패키지는 다른 패키지에 작성된 클래스를 사용하는 경우와 import를 이용하는 경우, 2가지로 나누어진다. 다른 패키지에 작성된 클래스를 사용하는 경우 소스 내에서 패키지이ㅡ 이름과 클래스 이름의 전체 경로명을 써서 사용해야 하며 import를 이용하는 경우에는 소스 시작 부분에 사용하려는 패키지를 명시하고 특정 클래스의 경로명만 포함하며 패키지 내의 모든 클래스를 포함하여 사용한다.

JAVA에서 패키지(Package)는 어떻게 선언하는가 ?

  • 패키지 선언은 package 패키지명: 이런 방식으로 선언하며 이는 컴파일한 클래스 파일을 패키지 명의 디렉터리에 저장하려는 지시이다. 이는 소스코드의 첫 줄에 선언하여 사용할 수 있다.
package UI;

public class Tools {

}

JAVA에서 디폴트 패키지(Default Package)란 무엇인가 ?

  • 디폴트 패키지란 package 선언문이 없이 만들어진 클래스의 패키지를 말하며 디폴트 패키지는 현재 디렉터리를 나타낸다. 패키지의 특징으로는 관련된 클래스 파일을 하나의 패키지로 계층화하여 관리하기 때문에 용이하며 패키지별로 접근 권한을 설정할 수 있으며 서로 다른 패키지에 이름이 같은 클래스와 인터페이스를 존재 시킬 수 있다. 마지막으로 높은 소프트웨어 재사용성을 갖는다.

JAVA에서 모듈(Module)은 왜 사용하는가 ?

  • 자바에서 모듈화를 사용하는 목적은 자바 컴포넌트들을 필요에 따라 조립하여 사용하기 위함이다. 또한 컴퓨터 시스템의 불필요한 부담을 감소시키고 세밀한 모듈화를 통해서 필요없는 모듈이 로드되지 않도록 하고 소형 IOT 장치에도 자바 응용 프로그램이 실행되고 성능을 유지할 수 있게 한다.

Object Class란?

  • Object Class는 java lang의 패키지에 포함되며 모든 클래스의 슈퍼클래스이다. 이는 모든 클래스에 강제 상속되며 모든 객체가 공통으로 가지는 객체의 속성을 메소드를 보유하고 있다.
// Object 클래스로 객체의 속성 알아내기

class Point {

    private int x, y;

    public Point(int x, int y) {

        this.x = x;
        this.y = y;

    }

}

public class main {

    public static void print(Object obj) {

        System.out.println(obj.getClass().getName()); // 클래스 이름
        System.out.println(obj.hashCode()); // 해시 코드 값
        System.out.println(obj.toString()); // 객체를 문자열로 만들어 출력
        System.out.println(obj); // 객체 출력

    }

    public static void main(String [] args) {

        Point p = new Point(2, 3);

        print(p);

    }

}
  • 실행 결과

// Point 클래스의 toString() 작성 프로그램
class Point {

    private int x, y;

    public Point(int x, int y) {

        this.x = x;
        this.y = y;

    }

    public String toString() {

        return "Point(" + x + "," + y + ")";

    }

}

public class main {

    public static void main(String [] args) {

        Point p = new Point(2, 3);

        System.out.println(p.toString());
        System.out.println(p); // p는 p.toString()으로 자동 변환
        System.out.println(p + "입니다."); // p.toString() + "입니다"로 자동 변환

    }

}
  • 실행 결과

좋은 웹페이지 즐겨찾기