
Chapter 12. 자바 문서 보는 법 : API vs UI
# API (Application Programming Interface)
응용 프로그램에서 사용할 수 있도록 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스.
자바가 제공하는 기본적인 문법을 통해서 시간의 순서에 따라
자바가 제공하는 기본 라이브러리를 실행되도록 하는 것을 통해 프로그램을 만든다.
자바가 기본적으로 제공하는 부품들의 조작 방법을 API라고 한다.
A-자바가 제공하는 부품들을 응용한다는 방점이 찍힌 표현
P-시간의 순서에따라 실행된다는 시간을 강조한 표현
자바를 응용해서 프로그래밍적으로 실행되는 프로그램을 만들기 위해서 사용해야 하는 조작장치, 조작방법을 API라고 한다.
# UI (User Interface)
우리가 만든 결과물이 사람에게 사용된다면
사람이 우리가 만든 프로그램을 사용하기 위해서 조작해야 하는 조작장치들이 있는데 (웹,링크,버튼,아귀먼트 등)
이런 것들을 사용자가 우리가 만든 프로그램을 조작하기 위해서 사용하는 조작장치라는 뜻에서 유저 인터페이스라고 부른다.
또한 우리가 만든 프로그램을 사람이 사용하지 않을 수 있다.
우리가 만든 프로그램을 부품으로 하는 다른 프로그램이 있을 수 있다.
완제품에 해당하는 프로그램에 부품으로서 API를 제공할 수 있다.
Chapter 12. 자바 문서 보는 법 : 패키지,클래스,변수,메소드
#JAVA Documentation 자바의 공식 사용설명서 보는 법
구글에 'api documentation java' 검색 : https://docs.oracle.com/javase/7/docs/api/
자바가 제공하는 라이브러리에 대한 설명들이 들어 있음.
왼쪽에 classes 하나의 프로그램이다라고 생각하면 됨.
예시) 수학 관련 프로그램을 만들고 싶을 때 'math' 검색하여 찾기
java.lang : math라는 클래스*가 소속되어있는 패키지(정리정돈 도구)
왼쪽 상단 패키지*에 jana.lang이 있는 걸 확인할 수 있음.
[패키지와 클래스]
*packages : 비슷한 성질의 클래스들을 모아서 이름을 붙인 것
*class : 서로 연관된 변수와 메소드를 모아서 이름을 붙인 것
Chapter 12. 자바 문서 보는 법 : 클래스
#Class : 서로 연관된 변수들과 메소드들을 모아서 이름을 붙인 것
01. 실습할 class 생성
02. PI
Math는 수학과 관련된 class가 있고,
. 을 찍으면 이 클래스에 소속되어 있는 변수/메소드의 리스트를 보여줌
*PI : 3.14… 파이의 구체적인 값이 적당한 정밀도로 저장되어있는 변수 PI
출력해보면 파이 값이 나오는 것을 확인할 수 있다.
03. floor
1.6이라는 숫자에서 소수점을 지우고 싶을 때
수학에서는 내림 = 영어로 바닥이라는 뜻의 floor를 쓰면 된다.
04. ceil
1.6이라는 숫자를 올림 하여 2.0을 만들고 싶을 때
수학에서는 올림 = 영어로는 천장이라는 뜻의 ceil을 쓰면 된다.
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));
}
}
Chapter 12. 자바 문서 보는 법 : 인스턴스
#인스턴스(instance)
PrintWriter라는 클래스를 이용할 건데 저장하고 싶은 파일의 이름을("이곳")에 적고 앞에 new를 적는다.
PrintWriter의 복제본을 만든다.
복제본을 p1이라는 변수에 담았다.
이때 p1이라는 변수에 담겨있는 어떠한 것을 PrintWriter라는 클래스의 인스턴스가 된다.
p1에 아무거나 들어가면 안 되기 때문에 데이터 타입으로 PrinterWriter로 지정해준다.
이때 빨간색 밑줄이 가는 이유는
자바에 내장되어 있긴 한데 패키지를 가져오는 작업을 해야 한다. (=import)
(밑줄에 커서를 올리면 해결 방법이 자동으로 뜸)
그래도 빨간 줄이 하나 더 있는데 이것은 파일을 읽다 보면 파일이 없을 때 문제가 될 수 있는데
그러한 예외 상황을 어떻게 처리할지를 정해주어야 하는데
지금은 커서를 올려 뜨는 것을 클릭하여 넘어가도록 한다.
p1이라는 인스턴트에 Write를 써서 Hello 1을 써놓고,
p1에 대한 작업을 다 끝냈으면 close를 통해 저 파일을 더 이상 붙잡지 않도록 한다.
밑에 똑같이 p2에 대한 내용을 입력 후 저장-실행-리프래쉬 하면 'recult1.txt' 'recult.2'가 생긴 것을 확인할 수 있다.
#인스턴스를 쓰지 않으면 어떤 불편함이 있는가?
result1.txt에다가 내용을 기록하고 싶은데
p1이라는 인스턴스를 사용하면 바로 'p1.write("hello 1");'이라고 표기하면 되는데
인스턴스 없이 클래스에 직접 write 하려면 write 할 때마다
어떤 파일을 수정할지에 대한 상태를 그때그때 입력해줘야 함
이유 : PrintWriter라는 하나의 클래스를 write 메소드가 서로 돌려쓰고 있음
PrintWriter라는 클래스를 new를 통해서 p1이라는 인스턴스를 만들었고
그 인스턴스는 내부적으로 각자의 상태를 가지고 있음
(여기서의 상태 : p1 = result1.txt / p2 = result2.txt)
p1.write를 하게 되면 이것은 result1에 대한 것이 됨
#인스턴스를 쓰는 이유?
파일을 수정한다 = 파일에 대한 여러 가지 작업들이 들어오게 되고 동시에 여러 개의 파일을 작업할 수도 있게 됨.
이럴 땐 하나의 클래스를 new를 붙여 복제하여 각각의 다른 상태를 가지고 있는
인스턴스를 만들어서 사용하는 것이 더 효율적일 수 있다.
클래스를 작업할 때 1회용으로 쓸 때는 인스턴스 없이 쓰고,
1회용이 아니라 꼬리의 꼬리를 물어 사용할 때는 인스턴스를 쓴다.
[PrintWriter Class 살펴보기]
PrintWriter : 컨스트럭터 (Constructor 생성자)라는 것이 있음.
컨스트럭터를 이용해서 인스턴스를 만드는 것이 허용되어있다고 생각하면 됨.
Math : 컨스트럭터가 없음 → 컨스트럭터가 없는 애들은 1회용
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("recult1.txt");
p1.write("Hello 1"); //p1이라는 인스턴트에 Write를 써서 Hello 1을 써놓고,
p1.close(); //p1에 대한 작업을 다 끝냈으면 close를 통해 저 파일을 더이상 붙잡지 않도록 한다.
PrintWriter p2 = new PrintWriter("recult2.txt"); //p2를 만들어 실행시키고 refrasf를 하면 recult 1,2가 생긴것을 볼 수 있음.
p2.write("Hello 2");
p2.close();
p1.write("hello 1");
// PrintWriter.write("reault1.txt", "Hello 1");
// PrintWriter.write("reault2.txt", "Hello 2");
// PrintWriter.write("reault1.txt", "Hello 1");
// PrintWriter.write("reault2.txt", "Hello 2");
// PrintWriter.write("reault1.txt", "Hello 1");
// PrintWriter.write("reault2.txt", "Hello 2");
// PrintWriter.write("reault1.txt", "Hello 1");
// PrintWriter.write("reault2.txt", "Hello 2");
}
}
Chapter 12. 자바 문서 보는 법 : 상속
#상속(inheritance)
PrintWriter라는 class 사용 설명서에 보면 이렇게 적혀 있는 것을 확인할 수 있는데
이것은 'PrintWruter라는 클래스는 Writer라는 클래스를 상속 받았다.' 라는 뜻
PrintWruter - 자식
Writer - 부모
Writer라는 클래스를 들어가 보면, Object라는 클래스를 상속 받음.
Object - 부모
Writer - 자식
프로그램을 만들 때 처음부터 끝까지 다 만들기는 힘드니까
이미 있는 Writer라는 클래스에 변수/메소드를 그대로 물려받으면서
새로 추가하고 싶은 변수/메소드를 넣은 것이 PrintWriter가 되는 것.
#이클립스로 상속관계 확인하는 방법
printWriter에 커서를 대고 오른쪽 마우스 클릭하면 오픈 타입 하이러키(Open Type Hierarchy)를 클릭
이렇게 상속관계를 확인할 수 있고
클래스를 클릭하면 어떤 변수와 메소드가 들어가있는지 확인이 가능하다.
이때, Object에는 toString이라는 메소드가 있는데,
Write와 PrintWrite에서는 구현한 적이 없다.
그럼에도 불구하고 PrintWrite는 Write를 상속받고,
Write는 Object를 상속받았기 때문에 'p2.toString();' 이라는 메소드를 사용 가능하다.
*JAVA의 모든 Class는 Object Class를 상속받는다.
Write에도 있는 메소드가 PrintWrite에도 동일하게 있을 때는PrintWrite를 만들 때 해당 메소드를 덮어쓰기 한 것.
'Backend > JAVA' 카테고리의 다른 글
[JAVA] 생활코딩 JAVA1 - Chapter 13. 나의 앱 만들기(2) (0) | 2022.05.09 |
---|---|
[JAVA] 생활코딩 JAVA1 - Chapter 13. 나의 앱 만들기(1) (0) | 2022.05.08 |
[JAVA] 생활코딩 JAVA1 - Chapter 11. 내 힘으로 컴파일 (0) | 2022.04.27 |
[JAVA] 생활코딩 JAVA1 - Chapter 10. 입력과 출력 : arguments & parameter (0) | 2022.04.20 |
[JAVA] 생활코딩 JAVA1 - Chapter 10. 입력과 출력 : 입력과 출력 (0) | 2022.04.20 |