대규모 개발에서는 혼자서 개발이 어렵고 분담을 하여 소스를 모듈화 해야 한다.
1개의 소스파일로는 개발의 한계를 만날 것이다.
예를 들어, 메서드가 많아지면 양이 너무 방대해 진다. 그래서 클래스를 따로 두어 분리를 해야 한다.
// 수정 전
public class Calc {
public static void main(String[] args) {
int a = 10;
int b = 2;
int total = add(a, b);
int delta = minus(a, b);
System.out.println("더하면 " + total + ", 빼면 " + deltal);
}
private static int add(int a, int b) {
retrun a + b;
}
private static int minus(int a, int b) {
return a - b;
}
}
이 예시는 메인클래스 안에다가 메서드를 넣은 예시이다.
지금은 코드가 적어서 그렇지만, 점점 나아가 코드가 길어지면 보기 좋지 않을 것이다.
그래서 class를 따로 만들어 메서드를 따로 둬보자.
public class CalcLogic {
static int add(int a, int b) {
return a + b;
}
static int minus(int a, int b) {
return a - b;
}
}
이렇게 만든 CalcLogic 클래스 파일을 메인으로 가져와서 쓴다.
그래서 잘게잘게 코드를 쪼개는게 중요하다.
일반적인 코드가 길어지면 메서드를 분리할 수 없나 고민을 해본다.
쉽게 말하면 '폴더' 같은 느낌이다. 디렉토리라고도 불린다.
Java에서는 각 클래스를 패키지(package) 라는 그룹에 소속시켜, 분류, 관리가 되도록 하는 장치가 준비 되어있다.
- main() 메서드의 라인수가 늘어나면 복수의 메서드로 분리
- 메서드 수가 늘어나면 복수의 클래스로 분리
- 클래스 수가 늘어나면 복수의 패키지로 분리
// 패키지 예시
package RealProject; // 맨위에 선언
class Bank {
여러 사람이 합심하여 완성한 HelloWorld
총 347개의 클래스의 표준 클래스가 사용되었고,
이것들을 API (Application Programming Interface)라고 한다.
Java에는 약 200개 이상의 패키지, 3500개 이상의 클래스가 준비되어 있다.
예를들어, Math / Scanner / Arrary등등
import java.util.Arrays;
public class Cala {
public static void main(String[] args) {
int[] heights = {173, 180, 160, 190, 150};
Arrays.sort(heights); // 작은순에서 큰순까지 저절로 정렬이 됨.
for (int h : heights) {
System.out.println(h);
}
}
}
- java.lang: Java에서 가장 중요한 클래스군 (자동 import)
- java.util: 프로그래밍을 편리하게 해 주는 유용한 클래스군
- java.math: 수학에 관한 클래스군
- java.net: 네트워크 통신등에 필요한 클래스군
- java.io: 파일 입출력 등에 필요한 클래스군