코린이 예습 9일차

9일차 22.02.18

No.12 자바 문서 보는 법

API vs UI

JAVA는 우리가 쉽게 만들수 있도록 부품을 제공. [SYSTEM/ DATE/ MATH/ PRINT]
이것을 기본 LIBRARY라고 부름. 이것으로 나의 PROGRAM을 만듬.
이때 자바가 제공하는 문법을 통해> 시간의 순서에 따라 [DATE→PrintWriter →System]
자바가 제공하는 부품들의 조작방법을 Application Programming Interface라고 함.
Application은 Java가 주는 부품들을 응용한다는데 방점/ Program은 시간에 순서에 따라 실행된다.
잘만들기 위해서는 어떤 API가 있고 어떻게 조작하는지 알고 사용할 수 있는것이 중요

결과물이 사람에게 사용된다면
사용자가 Program을 조작하기 위해서 조작해야하는 조작장치 ex.버튼, argument 등
User Interface>UI라고 부름

Class와 Package
우리가 만든 Program을 사람이 사용하지 않고, 부품으로 하는 Program이 있을 수도 있음
우리의 Program이 우리Program을 사용하는 완제품에게 API를 제공해야함...이거의 순환이 있을지도

자립의 핵심 요소인 JAVA의 공식사용설명서 보는 법
Google>API documentation Java
Class는 하나의 Program이다 라고 생각하면 일단 OK/ All classes에서 필요한 것을 검색.
서로 연관된 변수(viravble)와 method라는 것을 모아서 이름을 붙인게 Class

Java.lang은 math라는 Program이 소속되어 있는 package>정리정돈의 도구가 package
Packages는 Java가 기본적으로 제공하는 package, 비슷한 성격의 class를 모은게 Package.


Class알아보기-Math를 통해
Ex. 수학과 관련된 작업을 해야하는데 PI의 값이 떠오르지 않는 상황이라면? Java는 기본적으로 Math라는 Class가 내장되어 있어 이에 도움을 줄 수 있음.
System.ou.println(Math.PI); > 3.141592653589793...이런식으로 나옴.
Ex. 소수점을 잘라버리고 싶으면 System.out.println(Math.floor(1.6)); >1.0 올리고 싶다면 System.out.println(Math.ceil(1.6)); > 2.0하고 나옴.
▶Math.하면 Math 에 소속되어 있는 변수나 Method들의 List들을 보여줌 즉 Math라는 Class는 디렉토리라고 할 수 있다.
▶한번 더 강조하면 Class는 관련된 Method와 변수들을 모아 이름을 붙인것.

Instance

PrintWirter.write(“result1.txt”,”Hello 1”);
PrintWirter.write(“result2.txt”,”Hello 2”);

// 이 두 코드는 돌아가지도 않지만 된다고 가정해보고 이 두개많이 아니라 무수히 많다고 생각해보자. 얘네들은 PrintWriter라는 하나의 Class를 method가 돌려쓰기 하고 있기에, class에 직접 write 하는 방법을 사용할때마다 어떤 파일을 수정할지에 대한 상태를 그때 그때 얘기해줘야 하는 불편함이 있음.

import java.io.FileNotFoundException;//PrintWriter에서 발생가능한 throws의 대처방법
import java.io.IOException;
import java.io.PrintWriter; //=이 파일에서 PW라는 Class는 java.io에 소속되어 있는 것이다.
public class InstanceApp {

  public static void main(String[] args) throws IOException{ 

//DataType이 PrintWriter로 지정해줌.아무거나 들어가지 않게

  PrintWriter P1 = new PrintWriter("result1.txt"); 
  P1.write("Hello 1"); 
  P1.close(); 

  PrintWriter P2 = new PrintWriter("result2.txt"); 
  P2.write("Hello 2"); 
  P2.close();	 

New를 통해 P1,P2라는 Intance를 만들었고, 얘네들은 내부적으로 각자의 상태를 가지고 있는 것이다. P1.은 result1.txt P2는 result2.txt를 내장하고 있음.
P1.write라고 하면 result1.txt에 대한거고 P2역시 마찬가지
Math같은 class는 주로 짧은 작업, 1회용 같은 작업이라고 볼 수 있음.
PrintWriter는 constructor생성자라는게 있고, Math는 그게 없음=1회용이라고 생각하면 편함.
(Constructor가 있다는 것은 저 constructios를 이용해서 Instance를 만드는 것이 허용되어 있다라고 할 수 있음.)

File을 수정하는 것은 하나만이 아닌 File에 대한 여러가지 작업들이 진행되어야 할 수도 있기 때문에 하나의 class를 사용하는 것보단, 하나의 class에 new를 붙여 복제해서 각자의 다른 상태를 가지고 있는 Instance를 만들어 사용하는게 더 효율적일 수 있음.

상속 Inheritance

Java.lang.Object
Java.io.Writer //Writer라는 class는 Object라는 class를 상속받았다.
Java.io.PrintWriter //printwriter라는 class는 Writer라는 class를 상속받았다.
이미 있는 Class에 [Method,변수]를 추가한게 상속받았다라고 할 수 있는것

TIp. Class 우클릭 Open Type Hierarchy하면 상속관계를 보여줌. 어떤 method와 변수를 가지고 있는지 또한 나타내줌.

Extends: A extends B > B를 상속받아 확장해서 A를 만들었다.
Object > Writer extends Objects > PrintWriter entends Writer

PrintWriter P1 = new PrintWriter(“result1”);
P1.toString(); //toString은 Object class에만 적혀있는 method or 변수임

이렇게 하였을 경우 PrintWriter entends Writer > Writer extends Objects > Object 순으로 toString이 어디 있는지 찾아봄. 없으면 error겠지만 있으면 실행됨

P2.write("Hello 2"); //Write는 Writer의 Write일까 PrintWriter의 Write일까?

PrintWriter의 Write임. Writer의 write가 맘에 들지 않거나 취지가 맞이 않으면 덮어쓰는데 그것을 덮어쓰기=override라고 함

Java docs에서 Tree를 보면 상속관계를 쭉 볼수 있음. 그 정점에 Object가 있음. 얘가 가지고 있는 Method는 모든 class가 공통적으로 사용할 수 있음.

좋은 웹페이지 즐겨찾기