[부스트코스/쉽게 배우는 자바 1] 13. 자바 문서 보는 법

zzzzsb·2021년 2월 27일
0

부스트코스 쉽게 배우는 자바 1


Chaper 13


13-1. 자바 문서 보는 법 - API vs UI

API와 UI

  • 우리는 우리의 컴퓨터와 운영체제 위에 자바를 설치했다.
    자바의 라이브러리에는 다양한 도구들이 있는데, 모니터에 출력했을 때 사용했던 System 객체를 비롯하여 Date, Math, PrintWriter 등 다양한 도구들이 있다.

  • 또한 자바 프로그램을 만들 때 자바의 도구들을 응용하여 작업들을 시간 순서에 따라 동작하도록 만들었다.

  • 이러한 시간적인 순서에 주목해 우리가 만든 것들을 프로그램(Program)이라고 부르고,
    도구의 응용에 주목해 애플리케이션(Application)이라고 부르는 것이다.

API(Application Programming Interface)

자바는 자바의 도구들을 응용하여 사용하기 위해 일정한 조작 장치를 구성하였는데,
이것을 자바 API(Application Programming Interface) 라고 한다.

자바 프로그램은 또 다른 자바 프로그램에서 사용될 수 있는데,
이렇게 다른 프로그램에서 사용할 수 있도록 만들어주는 장치 역시 API이다.

UI(User Interface)

이렇게 만든 자바 프로그램은 사용자, 즉 유저들이 사용할 수 있고,
사용자들이 자바 프로그램을 사용할 수 있도록 만들어둔 조작 장치가 UI(User Interface)이다.

예를들어 이전 강좌에서 실습했던 커맨드 라인 시스템의 아규먼트, 데스크톱 앱의 버튼, 웹 페이지의 링크 등이 있다.


13-2. 자바 문서 보는 법 - 패키지, 클래스, 변수, 메소드

Java API Documentation 보는 방법

자바 프로그램을 만들기 위해 자바의 도구들을 사용할 수 있게 만든 장치인 자바 API를 이용한다.

오라클에서는 자바 API의 설명서인 Java API documentation을 제공하고 있다.

  • 포털 사이트에 검색하여 자바 API Documentation 페이지에 접속한다.

  • 왼쪽 위 섹션에는 패키지 에 대한 정보를 담고 있다.
  • 왼쪽 아래 섹션에는 클래스 에 대한 정보를 담고 있다.

만약 내가 수학과 관련한 작업을 해야하는데, 직접 만들기는 번거로울 것 같다고 생각이 들면, Math 클래스를 이용해 정보를 확인해 보면 될것이다.

  • Math 클래스를 검색해 보았더니, 설명서가 위의 형식으로 구성되어 있다.
  • Math 클래스java.lang 패키지에 속해있음을 알 수 있다.

  • 또한 java.lang 패키지에는 Math 외에도 String과 같은 다른 객체들도 존재함을 알 수있다.

  • Math 클래스 화면에서 더 스크롤 하여 보면 PI와 같은 변수(Variable/Field)들에 대해서도 알 수 있다.


  • 이전에 사용했던 floor, ceil 등 메소드(Method)들의 정보들도 찾을 수 있다.

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

  • Math 클래스와 같이 클래스 안에는 PI와 같은 변수, floor, ceil과 같은 메소드들이 포함되어 있다.

  • 패키지는 이러한 클래스들을 하나의 묶음으로 정리한 것이다.

  • 패키지와 클래스는 이 그림으로 기억하면 좋을 것 같아 함께 첨부한다.

13-3. 자바 문서 보는 법 - 클래스

클래스란?

클래스는 서로 연관된 변수와 메소드로 구성되고, 연관된 클래스들을 묶어서 정리한 것을 패키지라는 것을 알게 되었다.

  • Programming 프로젝트에서 ClassApp 클래스를 생성해보자.

ClassApp.java 소스코드

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));
 
    }
 
}

ClassApp.java 소스코드 분석

 System.out.println(Math.PI);
  • Math 클래스에는 수학과 관련된 여러 변수들과 메소드들이 있다.
  • 그중 PI 변수는 원주율이 적절한 정밀도로 저장되어 있는 변수이다.
  • 원주율(3.141592...) 이 출력된다.
System.out.println(Math.floor(1.6));
  • floor 메소드는 특정 소수점 이하에 대해 버림한 값을 산출한다.
  • 1.0 이 출력된다.
System.out.println(Math.ceil(1.6));
  • ceil 메소드는 특정 소수점 이하에 대해 올림한 값을 산출한다.
  • 2.0 이 출력된다.

클래스가 위와 같이 다양한 변수와 메소드들을 Math 라는 이름을 붙여 묶어서 정리한 것임을 알 수있다!


13-4. 자바 문서 보는 법 - 인스턴스

인스턴스란?

인스턴스는 클래스를 컴퓨터 상에서 실체화한 것이다.

  • Programming 프로젝트에서 InstanceApp 클래스를 만들어보자.

InstanceApp.java 소스코드

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
public class InstanceApp {
 
    public static void main(String[] args) throws IOException{
         
        PrintWriter p1 = new PrintWriter("result1.txt");
        p1.write("Hello 1");
        p1.close();
         
        PrintWriter p2 = new PrintWriter("result2.txt");
        p2.write("Hello 2");
        p2.close();

    }
 
}

InstanceApp.java 소스코드 분석

PrintWriter p1 = new PrintWriter("result1.txt");
  • Math 클래스와 달리 PrintWriter 객체는 new 키워드를 이용해 인스턴스를 생성하여 사용해야 한다.
  • result1.txt 파일에 쓰기가 가능한 PrintWriter 클래스를 실제로 생성하여 이름을 p1으로 만들었다.
import java.io.PrintWriter;
  • PrintWriter 클래스는 java.io 패키지에 속해 있기 때문에 이를 사용하기 위해서는 import 구문으로 불러줘야한다.

  • PrinterWriter 인스턴스를 생성할 떄는 사용할 파일이 실제로 존재하지 않는다면 오류를 내기 때문에 이에대한 처리를 해주어야 한다.
  • Add throws declaraton 을 이용해 에러 핸들링을 할 수 있다.

인스턴스를 만드는 이유

PrintWriter.write("파일 이름", "쓸 내용");
  • 만약 인스턴스를 만들지 않고 위와 같이 구현한다면?
  • 여러 파일에 반복적으로 여러 내용을 쓰는 상황이라고 가정해보자.
  • 이런 경우 파일에 한번 쓰기 작업을 수행할 때마다 일일이 파일의 이름을 입력해 주어야 한다는 단점이 있다.

이처럼 인스턴스는 객체를 다양한 상태에서 사용하고, 기능을 재사용할 경우가 많은 상황에서 유용한 방식이라고 할 수 있다.


  • Math 클래스는 자바 API Documentation 를 보면 Constructor 가 없다.(쉽게 일회용이라는 뜻)

  • PrintWriter 클래스는 자바 API Documentation 에 Constructor에 대해 기술되어 있다. 이는 자바 Constructor로 인스턴스를 만드는 것이 허용된다는 뜻.

  • 인스턴스를 생성할 수 있는 클래스는 자바 API Documentation에 Constructor Summary가 존재한다.


13-5. 자바 문서 보는 법 - 상속

클래스의 상속관계

클래스는 서로 계층적인 관계를 갖고 있을 수 있다.

  • 위는 PrintWriter 클래스상속관계를 나타낸 것이다.
  • PrintWriter 클래스Writer 클래스에서 상속을 받았고, Writer 클래스Object 클래스에서 상속을 받았음을 알 수 있다.

클래스 간의 상속관계의 특성

자식에 해당하는 클래스는 부모에 해당하는 클래스의 모든 변수와 메소드를 사용할 수 있다.

  • 이클립스 안에서 Open Type hierarchy를 이용해 클래스의 상속관계를 확인할 수 있다.

  • PrintWriter 는 Writer를 확장해서 만들어진 클래스이고, Writer는 Object를 확장해서 만들어진 클래스이다.

  • 그렇기 때문에 PrintWriter 클래스Writer 클래스write 메소드를 사용할 수 있고, ObjecttoString 메소드를 사용할 수 있다.

  • Object 클래스는 모든 클래스의 부모이다.
  • 모든 클래스는 Object의 변수와 메소드를 상속받는다.

  • Writer 클래스들을 상속받는 자식 클래스들에 대한 것들도 확인할 수 있다.

  • PrintWriter 클래스를 다시 확인해보면, Object 클래스에서 상속받아 다음과 같은 메소드들을 사용할 수 있다는 것을 알 수 있다.

부스트코스
https://www.boostcourse.org/opencourse

부스트코스 쉽게 배우는 자바 1
https://www.boostcourse.org/cs126


profile
성장하는 developer

0개의 댓글