자바 문서 보기 - API

자바 문서 보기 - API vs UI

API

  • 자바 프로그램을 만들 때, 자바의 도구들을 응용하여 원하는 작업을 시간적 순서에 따라 동작하게 만들었다. 작업들의 시간적 순서에 주목해서 프로그램(Program)이라고 부르고, 도구의 응용에 주목해서 애플리케이션(Aplication)이라 부른다.
  • 이 때, 자바는 자바의 도구들을 응용해서 사용하기 위해 일정한 조작장치를 구성했는데, 이를 자바 API(Application Programming Interface)라 부른다.
  • 자바 프로그램은 또 다른 자바 프로그램에서 사용 될 수도 있고, 다른 프로그램에서 사용할 수 있도록 만들어 둔 장치 역시 API이다.

UI

  • 위에서 처럼 자바 프로그램이 만들어지면, 이를 사용자가 사용할 수 있는데, 이 때 자바 프로그램을 사용자가 시작할 수 있도록 만들어 둔 장치를 UI(User Interface)라고 한다.
  • ex ) 커맨드 라인 시스템의 아규먼트 , 데스크톱 앱의 버튼, 웹페이지의 링크 등.

API와 UI의 차이

  • UI: 팝업 창이 나타났을 때의 경우, 유저가 확인할 수 있는 해당 창 자체를 의미하는 것.
  • API: 운영체제가 제공하는 함수의 집합. 팝업창을 띄우기 위한 코드를 의미한다.

자바 API Documentation 보기

  • Google에 API Documentation 페이지를 열었을 때, 보이는 페이지 img

  • Class에 대한 정보가 나와있는 곳에서 Math 클래스를 찾아 선택 한 후, 우측의 탭에서 Math 클래스의 설명서를 살펴 보면, img

    위의 이미지 처럼 해당 클래스가 어디에 속해있는지 알 수 있다. 맨 윗쪽에는 package에 대한 정보가 적혀있어, Math클래스가 java.lang에 속해있다는 정보를 알 수 있다.

  • 정보를 밑으로 더 내리며 살펴보면, 변수(Variable / Field)와 메소드(Method)에 대한 정보들도 확인 할 수 있다.

클래스, 변수, 메소드, 패키지

  • 클래스: 서로 연관된 변수, 메소드들을 하나의 묶음으로 정리하여 이름을 붙인 것. 디렉토리와 비슷한 느낌으로 기억하면 더 수월할 수 있다.

    • 예제:
    public class ClassApp {
      public static void main(String[] args){
        System.out.println(Math.PI);				 // 원주율이 적절한 정밀도로 저장되어있는 변수
        System.out.println(Math.floor(1.6)); // 특정 소수점 이하에 대해서 버림 한 값을 산출
        System.out.println(Math.ceil(1.6));  // 특정 소수점 이하에 대해서 올림 한 값을 산출
      }
    }
    
  • 패키지: 위의 클래스들을 하나의 묶음으로 정리한 것.

인스턴스

import java.io.PrinterWriter;
import java.io.IOException;
import java.io.FileNotFoundException;

public class InstanceApp {
  public static void main(String[] args) throws IOException{ //throws IOException == 예외를 처리하는 것.
    PrintWriter p1 = new PrintWriter("저장하고 싶은 파일의 이름.파일의 확장자"); 
    p1.write("Hello 1");
    p1.close();
    
    PrintWriter p2 = new PrintWriter("result2.txt");
    p1.write("Hello 2");
    p1.close();
  }
}
  • 위의 예제를 보면. Math클래스와는 달리 new 키워드를 사용하여 인스턴스를 생성한 것을 확인 할 수 있다.

    PrintWriter p1 = new PrintWriter("저장하고 싶은 파일의 이름.파일의 확장자"); 
    

    자바 API 내에 있는 클래스인 PrintWriter를 복제하여 p1이라는 하나의 인스턴스를 생성한 것이다.

  • PrintWriter의 경우, java.io 패키지에 속해있어, 이를 불러들이는 명령어 import를 사용하였고, throws IOException의 경우, 내가 지정한 파일이 존재하지 않을 때의 예외를 처리할 수 있는 명령어를 집어넣은 것이다.

  • 이런식으로 인스턴스를 사용하는 이유:

    • Math클래스 때 처럼, 단발성으로 사용하는 항목이 아닌, 지속적으로 사용을 해야할 때. 혹은 기능을 재사용 해야할 때 유용하게 사용 할 수 있기 때문이다.
    • 인스턴스를 생성할 수 있는 클래스의 경우, 자바 API 문서 내에 Constructor Summary가 존재한다.

상속

  • 클래스는 서로간의 계층관계를 갖고있을 수 있다. PrintWriter를 살펴보면,

    img

    위의 이미지와 같이 구성이 되어있는 것을 확인 할 수 있다.

    • 들여쓰기 기준으로 상속관계를 나타내는 것으로, java.io.PrintWriter <–(상속)– java.io.Writer 으로, Writer는 PrintWriter의 부모와 같은 존재이며 java.io.Writer < –(상속)– java.lang.Object 으로, Object는 Writer의 부모와 같은 존재이다.

      여기서 Object는 모든 클래스들의 조상이라고 볼 수 있다.

  • 상속관계의 경우, 부모 클래스의 대부분의 변수와 메소드를 사용 할 수 있는데 부모클래스의 기능을 변형한 것을 override라고 한다.

img

출처: 부스트코스-쉽게 배우는 자바(java)_생활코딩