패키지와 라이브러리

치로·2024년 7월 24일

1. 패키지

: 클래스에 대한 묶음 단위

  • 클래스를 용도별이나 기능별로 그룹화 한 것, 소스 코드는 폴더로 분류된 형태로 존재
  • 서로 다른 패키지에 속해있다면 다른 클래스와 이름이 동일하더라도 충돌이 발생 하지 않음(서로 다른 폴더에는 이름이 같은 파일들이 존재할 수 있음)

2. 패키지 추가하기

  • 패키지 이름의 일반적인 정의 형식 : 회사 도메인 이름의 역수, 프로젝트 이름의 소문자

3. 패키지에 속해 있는 클래스에 대한 객체 생성

package kr.co.khacademy.myapp.main;

// 이러한 번거로움을 피하고자 클래스 정의 전에 import 구문을 사용하여
// 특정 클래스의 이름이 어떤 패키지에 소속되어 있는지를 명시할 수 있음
import kr.co.khacademy.myapp.board.Article;

public class Maiin01 {

	public static void main(String[] args) {
		// 1. 다른 패키지의 클래스를 사용하고 할 경우,
		// 패키지 이름을 포함한 FullName으로 사용해야 함 (거의 안 씀)
		// kr.co.khacademy.myapp.board.Article article
		// = new kr.co.khacademy.myapp.board.Article(1, "게시판", "24-07-03");
		
		// 2. Article 쓰고 자동완성으로 상단에 import하기
		Article a1 = new Article(1, "게시판", "24-07-23");
	}

}

4. ClassPath

  • 컴파일이 완료된 *.class 파일들이 위치하는 경로
  • 객체를 생성할 때 대상 클래스의 소스 없이도 컴파일된 결과물만 참조해서 객체 생성 및 메서드 호출 등이 가능해짐

Library

  • *.jar
  • 한 개 이상의 패키지들을 배포하기 용이하도록 압축한 형태
  • 다른 프로그램에서 라이브러리 안에 포함된 기능을 활용할 수 있음

1. Java 기본 API

  • 우리가 사용하는 JDK 안에는 이미 수많은 라이브러가 포함되어 있고, 이 라이브러리 안에는 프로그램 개발에 필요한 패키지들이 기본적으로 포함되어 있음
  • 자바 프로그래밍은 이러한 라이브러리들의 기능을 활용하여 이루어 짐
  • 이렇게 프로그램 개발을 위하여 기본적으로 제공되는 기능들을 API라 함

예시 코드

// 이 클래스가 어떤 패키지에 소속되어 있는지를 명시
package kr.co.khacademy.myapp.board;

public class Article {
	// 전체 게시물의 수를 표현하기 위한 데이터
	private static int count = 0;
	// 모든 게시물은 하나의 카테고리 안에 존재한다고 가정
	// 게시물의 분류를 구별하기 위한 데이터
	private static String cateory;
	private int num; // 글 번호
	private String title; // 제목
	private String regDate; //작성 일시
	
	public Article(int num, String title, String regDate) {
		super();
		this.num = num;
		this.title = title;
		this.regDate = regDate;
		// 이 클래스에 대한 객체 생성 -> 게시물 신규 등록
		// 게시물이 새로 등록될 떄 마다, 전체 글 수를 의마하는 count 변수가 1씩 증가
		// 전체 게시물 수는 모든 객체가 고융하는 값이미로, static으로 선언이 되어야함
		count++;
	}

	public static int getCount() {
		return count;
	}

	public static void setCount(int count) {
		Article.count = count;
	}

	public static String getCateory() {
		return cateory;
	}

	public static void setCateory(String cateory) {
		Article.cateory = cateory;
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getRegDate() {
		return regDate;
	}

	public void setRegDate(String regDate) {
		this.regDate = regDate;
	}

	@Override
	public String toString() {
		return "글 분류 = " + cateory + ", 전체 글 수 = " + count + ", Article [num=" + num + ", title=" + title + ", regDate=" + regDate + "]";
	}
	
}

0개의 댓글