본문 바로가기

카테고리 없음

(Java) Chapter9. 로직의 관리

1. 클래스 패스

  1) 개념

  - 클래스가 위치하는 경로를 지정하고 Java가 필요로 하는 클래스를 로드할 수 있는 방법을 설정하는 것

  - 자바가 클래스를 사용하려고 하는데 같은 폴더 안에 없으면 다른 폴더로부터 로드를 하기 위해서 길을 열어줘야함

  2) 환경변수

  - 운영체제에 지정하는 변수로, 자바 가상머신과 같은 애플리케이션들은 환경변수의 값을 참고해서 동작하게 됨

  - 자바는 클래스패스로 환경변수 Classpath를 사용하는데 이 값을 지정하면 -classpath를 실행할 때마다 지정하지 않아도 됨(windows 기준)

 

2. 패키지

  1) 개념

  - 하나의 클래스 안에서 같은 이름의 클래스들을 사용하기 위한 방법

  - '이름의 충돌'이라고 하는 문제를 해결하기 위한 기능의 연장선(전역과 지역변수, 객체 등)

  - 지금까지 'chapter_no'로 이름 지었던 것들이 전부 패키지

  2) 활용

  - 패키지 이름은 도메인을 활용하는 것이 일반적이므로 사용 조직의 정체성으로 볼 수도 있음

  - 한 패키지에서 다른 패키지의 클래스를 로드하는 것은 불가능, 즉, 같은 패키지에 존재하는 것을 로드함

  - 해결방법은 다른 패키지로부터 클래스를 가져오는 키워드를 사용하면 됨

  3) 패키지 연결

  - import : 다른 패키지를 불러와 하위의 클래스를 현 패키지에서 사용

  - 모든 클래스 로드(.*)

import Chapter_07.*;

  - 특정 클래스 로드(.name)

import Chapter_07.Calculator;

  ※ public을 통해 다른 패키지에서도 사용할 수 있도록 선언 된 클래스만 연결 가능

 

3. 컴파일

  1) 개념

  - 프로그램을 컴퓨터 언어로 번역

  - 디렉토리명 

    bin : binary (virtual machine이 이해할 수 있는 언어의 모음), 컴파일된 클래스 파일이 들어있음

    src : source (사람이 이해할 수 있는 언어의 모음), 소스코드가 들어있음

  - 컴파일은 컴퓨터가 이해할 수 있게 사람의 언어를 전산언어로 번역하므로 src의 소스코드의 결과물을 bin에 저장함

  2) 로드된 패키지 간의 중복

  - 각 패키지가 각각 같은 클래스를 가지고 있는 경우 한 패키지 클래스를 다른 한 쪽 패키지에서 로드를 하면 에러 발생

  - 해결방법

package chapter_09;
import Chapter_07.*;

public class _01_package {
    public static void main(String[] args) {
        Chapter_07._02_Object2 obj2 = new Chapter_07._02_Object2();
        // 인스턴스 선언 시 클래스명 앞에 패키지명을 명시함
    }
}

4. 환경변수, 클래스패스 등 터미널에서 설정하는 방법