# 자바 API
## 들어가며
---
이전 시간 우리는 접근 제한자에 대한 내용을 배웠습니다.

이번 시간에는 자바 API에 대해 알아보도록 할까요?
## 목차
---
1. 자바 API란
2. 패키지란
3. 자바 API 사용법
## 1. 자바 API란
---
자바 API란, *미리 만들어진 도구*들(클래스 등…)입니다.

우리는 못을 박을 때 망치를 사용합니다. 또 땅을 팔 때, 삽이나 굴삭기를 사용하기도 하죠. 이렇게 어떤 작업에 특화된 도구는 일의 효율성을 높혀줍니다. 프로그래밍 또한 마찬가지로, 특정 상황에 적용될 수 있는 *미리 만들어진 클래스*들이 있습니다. 이를 자바 API라고 합니다.
## 2. 패키지란
---
자바 API를 배우기에 앞서 우리는 패키지(package)에 대한 내용을 알아야 합니다. 왜냐하면, 자바 API가 패키지의 형태로 제공되기 때문이죠.
#### 정의
패키지란 꾸러미 또는 소포라는 단어의 뜻 그대로, 소스코드를 묶어 관리할 수 있게 하는 *일종의 폴더*(디렉토리)입니다.

#### 필요성
이러한 패키지는 왜 필요할까요? 패키지는 관련 있는 코드를 한데 모으기 위해(**그룹화**) 또는 이름은 같지만, 용도가 다른 것들을 **구분**짓기 위해 사용합니다.
```
# 그룹화 예
+ apple
- iPhone.java
- MacBook.java
- iPad.java
# 구분 예
+ Music
- Sonata.java
+ Sonata
- Sonata.java
```
패키지에 대한 개념도 배웠으니, 이제 자바 API를 사용하는 법을 알아보도록 하죠.
## 3. 자바 API 사용법
---
우리는 앞서 난수 생성을 위해 `Math.random()` 메소드를 사용해왔습니다. 이번에는 자바 API를 사용하여 난수 생성을 해볼 텐데요. 이를 위해 제공되는 Random 클래스를 사용해보겠습니다. 해당 클래스는 `java.util`이라는 패키지에 존재하며, 해당 클래스에 대한 설명은 아래의 링크를 통해 확인할 수 있습니다.
- https://docs.oracle.com/javase/8/docs/api/java/util/Random.html
해당 문서에는 생성자와 메소드에 대한 설명들이 나와 있습니다. 먼저 객체 생성은 아래와 같이 만들 수 있겠네요.

다음으로 0 이상 N 미만의 임의의 정수를 생성하기 위해, 아래와 같은 메소드를 사용해 볼 수 있겠습니다.

위 내용을 활용하여 N면체 주사위 클래스를 작성해볼까요? 아래 코드를 참고하면 되겠습니다.
```
import java.util.Random; // java.util 패키지에서 Random 클래스를 가져옴
public class Dice {
// 필드
private int N; // N 면체 주사위
private Random rand; // Random 객체를 가리킬 변수
// 생성자
public Dice(int N) {
this.N = N;
this.rand = new Random(); // 랜덤 객체 생성
}
// 메소드
public int roll() {
return rand.nextInt(N) + 1; // 1부터 N사이 임의의 정수 반환
}
}
```
자바는 Random 클래스와 같은 다양한 API를 제공하는데요. 실습을 통해 더 다양한 도구들을 활용해보도록 하겠습니다.
## 요약
---
#### 자바 API란
- 자바 API란 미리 만들어진 도구(클래스)이다.
- 자바 API는 패키지를 통해 제공된다.
#### 패키지
- 패키지란, 소스코드를 담는 디렉토리이다.
- 패키지는 관련 코드를 묶거나, 같은 이름의 코드를 구분하기 위해 사용한다.
#### 자바 API 사용법
- 자바 API 사용법은 문서를 통해 확인할 수 있다.
- Random 클래스는 java.util 패키지에 있다.
- Random 클래스는 아래와 같이 사용할 수 있다.
```
// API 불러오기
import java.util.Random;
// 객체 생성
Random random = new Random();
// [0:N) 사이의 임의의 정수 생성
int N = 10;
int randNum = random.nextInt(N); // 0~9 사이의 정수
```
## 확인하기
---
<div class="interact_responsive_padding" style="padding:100% 0 0 0;position:relative;margin-bottom:5px;"><div class="interact_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"><iframe id="interactApp5cff607ca4bf9e00145ac117" width="100%" height="100%" style="border:none;max-width:100%;margin:0;" allowTransparency="true" frameborder="0" src="https://quiz.tryinteract.com/#/5cff607ca4bf9e00145ac117/q/1?method=iframe"></iframe></div></div>