'전체 글'에 해당되는 글 384건

  1. 2019.06.10 예외 - 만들기
  2. 2019.06.10 예외 - 예외 던지기
  3. 2019.06.07 예외 - 문법
  4. 2019.06.07 다형성
  5. 2019.06.07 인터페이스
  6. 2019.06.07 여러가지 수식자(final, static, abstract)
  7. 2019.06.07 abstract
  8. 2019.06.06 패키지와 접근 제어(접근제한자)
  9. 2019.06.06 API와 API 문서 보는 법
  10. 2019.05.29 클래스 패스

예외 - 만들기

|

throw는 예외를 발생시키는 명령이다. throw 뒤에는 예외 정보를 가지고 있는 예외 클래스가 위치한다. 자바 가상 머신은 이 클래스를 기준으로 어떤 catch 구문을 실행할 것인지를 결정한다. 또 실행되는 catch 구문에서는 예외 클래스를 통해서 예외 상황의 원인에 대한 다양한 정보를 얻을 수 있다. 이 정보를 바탕으로 문제를 해결하게 된다.

 

############### 기억할만한 주요 Exception들의 리스트 ################## 

예외 사용해야 할 상황
IllegalArgumentException 매개변수가 의도하지 않은 상황을 유발시킬 때
IllegalStateException 메소드를 호출하기 위한 상태가 아닐 때
NullPointerException 매개 변수 값이 null 일 때
IndexOutOfBoundsException 인덱스 매개 변수 값이 범위를 벗어날 때
ArithmeticException 산술적인 연산에 오류가 있을 때

 

############### 예외들의 가계도 ################## 

Throwable

클래스 Throwable은 범 예외 클래스들의 공통된 조상이다. 모든 예외 클래스들이 가지고 있는 공통된 메소드를 정의하고 있다. 중요한 역할을 하는 클래스임에는 틀림없지만 이 클래스를 직접 사용하지는 않기 때문에 우리에게는 중요하지 않다.

Error

에러는 여러분의 애플리케이션의 문제가 아니라 그 애플리케이션이 동작하는 가상머신에 문제가 생겼을 때 발생하는 예외다. 애플리케이션을 구동시키기에는 메모리가 부족한 경우가 이에 속한다. 이런 경우는 애플리케이션 개발자가 할 수 있는 것이 없다. 따라서 예외처리를 하지 말고 그냥 에러로 인해서 애플리케이션이 중단되도록 내버려둔다. 대신 자신의 애플리케이션이 메모리를 과도하게 사용하고 있다면 로직을 변경하거나 자바 가상머신에서 사용하는 메모리의 제한을 변경하는 등의 대응을 한다.

Exception

결국 우리의 관심사는 Exception 클래스와 RuntimeException 클래스로 좁혀진다. 우선 Exception 클래스의 하위 클래스들의 목록을 살펴보자. 아래 클래스들은 모두 Exception 클래스를 상속한 예외 클래스다.

저 많은 클래스 중의 하나가 RuntimeException이다. 도대체 RuntimeException 클래스는 어떤 특이점이 있길래 부모 클래스인 Exception 클래스와 함께 언급되는 것일까? RuntimeException을 제외한 Exception 클래스의 하위 클래스들과 RuntimeException 클래스의 차이를 자바에서는 checked와 unckecked라고 부른다. 관계를 정리하면 아래와 같다.

  • checked 예외 - RuntimeException을 제외한 Exception의 하위 클래스 -> IOException -> 반드시 예외처리가 존재해야함.
  • unchekced 예외 - RuntimeException의 하위 클래스

checked 예외는 반드시 예외처리를 해야 하는 되는 것(try~ catch 혹은 throw를 통해)이고, unchekced는 해도 되고 안 해도 되는 예외다. 바로 이 지점이 IOException과 ArithmeticException의 차이점이다. 아래는 두개 클래스들의 가계도를 보여준다.

강조 표시한 부분을 주의 깊게 살펴보자. ArithmeticException의 부모 중에 RuntimeException이 있다. 반면에 IOException은 Exception의 자식이지만 RuntimeException의 자식은 아니다. 이런 이유로 IOException은 checked이고 ArithmeticException은 unchekced이다. (Error도 unchecked이다)

 

예외는 오류 없는 애플리케이션을 만들기 위해서 꼭 필요한 기능!!!

'Java' 카테고리의 다른 글

상수와 enum  (0) 2019.06.12
Object 클래스  (0) 2019.06.12
예외 - 예외 던지기  (0) 2019.06.10
예외 - 문법  (0) 2019.06.07
다형성  (0) 2019.06.07
And

예외 - 예외 던지기

|

throw/throws : 예외처리를 다음 사용자에게 넘기는 것

 

예외 처리는 귀찮은 일이다. 그래서 예외를 다음 사용자에게 전가(throw)하거나 try...catch로 감싸고 아무것도 하지 않고 싶은 유혹에 빠지기 쉽다. 하지만 예외는 API를 사용하면서 발생할 수 있는 잠재적 위협에 대한 API 개발자의 강력한 암시다. 이 암시를 무시해서는 안 된다. 물론 더욱 고민스러운 것은 예외 처리 방법에 정답이 없다는 것이겠지만 말이다.

'Java' 카테고리의 다른 글

Object 클래스  (0) 2019.06.12
예외 - 만들기  (0) 2019.06.10
예외 - 문법  (0) 2019.06.07
다형성  (0) 2019.06.07
인터페이스  (0) 2019.06.07
And

예외 - 문법

|

예외는 실패하지 않는 법에 대한 수업.

덜 실패하는 법이라고 할 수 있다.

덜 실패하는 법은 실패의 크기를 줄여주는 효과 뿐 아니라 실패에 대한 두려움을 억제해서 성공하는 법을 보다 적극적으로 시도할 수 있게 촉진한다는 점에서 중요하다.

 

예외(Exception)란 프로그램을 만든 프로그래머가 상정한 정상적인 처리에서 벗어나는 경우에 이를 처리하기 위한 방법이다. 

 

class Company{
	public void practice() throw Exception{ //전가시킴. throw 선언
    	throw new Exception();
        }
}
    
    Compnay c = new Compnay();
    try{
    	c.practice(); // 항상 실행되는 구문
    } catch(Exception) {
    	  			  // 오류 발생시 처리할 구문 내용
    } finally {
    				  // 예외가 발생하든 발생하지 않든 항상 실행되는 구간.
    }
    		

 

############### try...catch ##################

############### 뒷수습의 방법 + 다양한 예외들 ##################

e.getMessage();

오류에 대한 기본적인 내용을 출력해준다. 상세하지 않다.

e.toString()

e.toString()을 호출한 결과는 java.lang.ArithmeticException: / by zero 이다. e.toString()은 e.getMessage()보다 더 자세한 예외 정보를 제공한다. java.lang.ArithmeticException은 발생한 예외가 어떤 예외에 해당하는지에 대한 정보라고 지금을 생각하자. ArithmeticException 수학적인 계산의 과정에서 발생하는 예외상황을 의미한다. (우리는 어떤 숫자를 0으로 나누려고 하고 있다는 것을 상기하자)

e.printStackTrace()

메소드 getMessage, toString과는 다르게 printStackTrace는 리턴값이 없다. 이 메소드를 호출하면 메소드가 내부적으로 예외 결과를 화면에 출력한다. printStackTrace는 가장 자세한 예외 정보를 제공한다.

 

Exception은 catch문 마지막에 써야함 : ArrayIndexOutOfBoundsException, ArithemeticException 보다 포괄적인 예외를 의미하기 때문에 Exception 이후에 등장하는 catch 문은 실행될 수 없는 구문이 됨.

 

############### finally ##################

그럼 finally는 언제 사용하는 것일까? 어떤 작업의 경우는 예외와는 상관없이 반드시 끝내줘야 하는 작업이 있을 수 있다. 

예를 들어 데이터베이스를 사용한다면 데이터베이스 서버에 접속해야 한다. 이때 데이터베이스 서버와 여러분이 작성한 에플리케이션은 서로 접속상태를 유지하게 되는데 데이터베이스를 제어하는 과정에서 예외가 발생해서 더 이상 후속 작업을 수행하는 것이 불가능한 경우가 있을 수 있다. 예외가 발생했다고 데이터베이스 접속을 끊지 않으면 데이터베이스와 연결 상태를 유지하게 되고 급기야 데이터베이스는 더 이상 접속을 수용할 수 없는 상태에 빠질 수 있다. 접속을 끊는 작업은 예외 발생여부와 상관없기 때문에 finally에서 처리하기에 좋은 작업이라고 할 수 있다. 말하자면 finally는 작업의 뒷정리를 담당한다고 볼 수 있다.

'Java' 카테고리의 다른 글

예외 - 만들기  (0) 2019.06.10
예외 - 예외 던지기  (0) 2019.06.10
다형성  (0) 2019.06.07
인터페이스  (0) 2019.06.07
여러가지 수식자(final, static, abstract)  (0) 2019.06.07
And

다형성

|

다형성(Polymorphism) : '다양한 형태를 가지는 성질'

자바에서의 다형성이란 슈퍼클래스를 상속받은 하위 클래스의 객체가 슈퍼클래스의 객체로도 사용되고 하위클래스의 객체로도 사용되는 등 다양한 형태를 취할 수 있는것.

 

하위클래스의 객체는 슈퍼클래스의 객체가 될 수 있지만, 슈퍼 클래스의 객체는 하위 클래스의 객체가 될 수 없다. 

('모든 학생은 사람이라고 볼 수 있지만, 그렇다고 모든 사람이 학생이라고 볼수는 없다')

 

하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미

 

오버로딩은 다형성의 한 예

 

다형성이란 하나의 클래스가 다양한 동작 방법을 가지고 있는데 이것을 다형성이라고 할 수 있겠다. 

 

같은 방식으로 요청하지만 다양한 결과물을 냄.

 

<예시>

abstract class Animal{

  abstract void cry();

class Dog extends animal{

  void cry(){

    System.out.println("멍멍");

  }

}

class Cat extends animal{

  void cry(){

    System.out.println("야옹");

  }

}

class Duck extends animal{

  void cry(){

    System.out.println("꽥꽥");

  }

}

class PolyTest{

  pubic static void main(String args[]){ 

    Animal animals[] = {new Dog(), new Cat(), new Duck()};   

    // Animals 이라는 클래스의 객체를 담는 animals 라는 배열을 선언하고 Dog라는 클래스의 객체를 새로 생성하여 0번째 요소에, Cat라는 클래스의 객체를 새로 생성하여 1번째 요소에, Duck라는 클래스의 객체를 새로 생성하여 2번째 요소에 저장한다.

    for(int  i=0;, i<animals.length;, i++){

    // 정수 값을 담는 i라는 변수에 0을 저장하고 i를 1씩 증가시키면서 i가 animals 배열의 크기(3)보다 작을 동안 {}안을 반복해라

      animals[i].cry();

      // animals 배열의 i번째 요소에 저장된 값 안의 cry() 메소드를 호출한다.

    }

  }

}

 

* 배열명.length : 배열의 요소(혹은 배열의 크기)가 몇 개인지 알 수 있다.

'Java' 카테고리의 다른 글

예외 - 예외 던지기  (0) 2019.06.10
예외 - 문법  (0) 2019.06.07
인터페이스  (0) 2019.06.07
여러가지 수식자(final, static, abstract)  (0) 2019.06.07
abstract  (0) 2019.06.07
And

인터페이스

|

interface : '결합부', '서로 다른 두 시스템이나 장치, 사람 등을 이어주는 부분'

 

자바에서 인터페이스는 클래스와 외부세계(ex. 개발자, 다른 클래스)를 이어주는 역할을 함.

인터페이스는 내부에 추상 메소드를 가지고 있으며, 인터페이스를 받은 클래스에서는 해당 메소드를 오버라이딩으로 다시 정의하여 사용함.

인터페이스를 이용하면 메소드의 선언과 구현을 분리할수 있어서 인터페이스를 상속받아 메소드를 구현하는 클래스와 그 메소드를 호출하는 클래스를 서로 독립적으로 개발하거나 관리할 수 있는 장점이 있음.

 

<예시>

interface Money{         공통 기능을 추출한 Money라는 인터페이스를 선언한다.

  abstract void give(int money, String date);

}

자바의 클래스는 여러개의 인터페이스로부터 메소드를 받아 올 수 있다.(다중상속)

 

어떤 객체가 있고 그 객체가 특정한 인터페이스를 사용한다면 그 객체는 반드시 인터페이스의 메소드들을 구현해야 한다. 만약 인터페이스에서 강제하고 있는 메소드를 구현하지 않으면 이 에플리케이션은 컴파일 조차 되지 않는다.

 

인터페이스와 상속은 다르다. 상속이 상위 클래스의 기능을 하위 클래스가 물려 받는 것이라고 한다면, 인터페이스는 하위 클래스에 특정한 메소드가 반드시 존재하도록 강제한다.

 

인터페이스는 다형성에 의한 클래스제어 역할을 한다고 볼 수 있다.

 

클래스를 선언 할 때는 class를 사용하지만 인터페이스는 interface를 사용한다.

 

상속은 extends를 사용하지만 인터페이스는 implements를 사용한다. 이를 바탕으로 위의 예제를 해설해보면 아래와 같다.

 

"클래스 A는 인터페이스 I를 '구현' 한다."

 

################## 실질적인 쓰임 ##################

인터페이스를 이용해서 서로가 동일한 메소드를 만들도록 규약을 만들어서 공유한 결과

각자가 상대의 일정이나 구현하는 방식에 덜 영향을 받으면서 에플리케이션을 구축 할 수 있음.

 

################## 인터페이스의 규칙 ##################

하나의 클래스가 여러개의 인터페이스를 구현 할 수 있다.

여러 개의 인터페이스를 상속하는 경우 콤마(,)를 이용해 인터페이스 명을 구분함.
인터페이스도 상속이 된다. extends와 함께 쓰일때는 항상 extends가 implements보다 먼저 오게 됨.
인터페이스의 맴버는 반드시 public이다.

 

<예시>

class Citizen extends Person implements Money{

  // Person이라는 클래스를 확장(상속)하여, 공통기능을 추출한 Money라는 인터페이스를 담는 객체를 정의/생성하는 툴인 Citizen이라는 클래스를 만든다

  public void give(int Money, String date){

  // 모든 패키지와 클래스에서 접근이 가능하고, 리턴값이 없는 give라는 함수를 선언하고, 정수 값을 담는 money와 문자열 값을 담는 date 파라미터 변수를 인자로 받는다.

 

################## abstract vs. interface ##################

인터페이스와 추상 클래스는 서로 비슷한 듯 다른 기능이다.

인터페이스는 클래스가 아닌 인터페이스라는 고유한 형태를 가지고 있는 반면 추상 클래스는 일반적인 클래스다.

또 인터페이스는 구체적인 로직이나 상태를 가지고 있을 수 없고, 추상 클래스는 구체적인 로직이나 상태를 가지고 있을 수 있다.

'Java' 카테고리의 다른 글

예외 - 문법  (0) 2019.06.07
다형성  (0) 2019.06.07
여러가지 수식자(final, static, abstract)  (0) 2019.06.07
abstract  (0) 2019.06.07
패키지와 접근 제어(접근제한자)  (0) 2019.06.06
And

여러가지 수식자(final, static, abstract)

|

################## final ##################

변수앞에 final이 붙으면 선언문이나 생성자 안에서 반드시 처음 값을 지정해야 하고, 그 변수의 값을 변경할 수 없다. 즉, final 변수에는 새로운 값을 저장할수 없다. 이때 처음 값을 설정하는 것을 '초기화' 라고 함.

 

abstract와는 대칭점에 있는, 상속/변경을 금지하는 규제.

 

한번 세팅된 값을 변경하지 못함.(필드)

 

클래스 앞에 final이 붙으면 해당 클래스는 상속할 수 없다. 즉, final 클래스를 확장하여 다른 클래스를 만들 수 없다.

 

<예시>

final String name = "Hee Eun"; 변경할수없는 문자열 값을 담는 name 이라는 변수를 선언하고 "Hee Eun'을 저장한다.

 

################## static ##################

static : '정적인, 정지된'

자바에서 static은 정지된 메모리, 즉 하나의 메모리 주소에 계속 저장한다는 의미.

 

변수 앞에 static이 붙으면 그 변수는 같은 메모리 주소에 값을 계속 저장. 해당 클래스로 생성된 객체들의 static 변수는 모두 같은 메모리 주소에 값을 저장하므로 결과적으로는 객체들끼리 그 값을 공유 할 수 있음.

 

<예시>

static int price;      같은 클래스에서 생성된 객체들과 값을 공유하고, 정수 값을 담는 price라는 변수를 선언한다.

 

메소드 앞에 static이 붙으면 클래스 메소드로 불리며 한 메모리 주소에 메소드 코드가 저장됨. 따라서 클래스와 그 클래스로 생성한 객체 모두가 메소드를 공유하고 객체를 생성하지 않아도 클래스 이름으로 바로 참조할 수 있다. 또한 static 메소드는 오버라이딩이 불가능하다.

 

<예시>

static void greeting(){   같은 클래스에서 생성된 객체들과 값을 공유하고, 리턴값이 없는 greeting 이라는 메소드를 선언한다.

 

################## abstract ##################

'Java' 카테고리의 다른 글

다형성  (0) 2019.06.07
인터페이스  (0) 2019.06.07
abstract  (0) 2019.06.07
패키지와 접근 제어(접근제한자)  (0) 2019.06.06
API와 API 문서 보는 법  (0) 2019.06.06
And

abstract

|

추상(abstract) : 여러가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용.

 

추상 클래스란 다른 클래스들의 공통이 되는 변수나 메소드의 이름과 형태만 기술해 놓았을 뿐 구체적인 내용이 없는 클래스.

 

메소드에서 무엇을 하는가는 추상클래스를 상속받은 하위클래스에서 오버라이딩을 통해 반드시 재정의해야함.

(재정의안되면 compile 안됨)

따라서 추상클래스는 다른 클래스의 템플릿으로 사용됨.

 

상속을 하도록 강제하는 것.

즉 abstract 클래스나 메소드를 사용하기 위해서는 반드시 상속해서 사용하도록 강제하는 것이 abstract다.

추상 메소드란 메소드의 시그니처만이 정의된 비어있는 메소드를 의미.

 

<예시>

abstract class Animal{     구체적인 내용 없이 공통점만 뽑아낸, 객체를 정의/생성하는 툴인 Animal이라는 클래스를 만든다

  abstract void cry();       구체적인 내용 없이 공통점만 뽑아낸, 리턴값이 없는 cry 라는 메소드를 선언한다.

}

 

############### 추상 클래스를 사용하는 이유 ##################

부모 클래스에는 메소드의 시그니처만 정의해놓고 그 메소드의 실제 동작 방법은 이 메소드를 상속 받은 하위 클래스의 책임으로 위임하고 있다. 

상황에 따라서 동작 방법이 달라지는 메소드는 추상 메소드로 만들어서 하위 클래스에서 구현하도록 하고 모든 클래스의 공통분모의 경우에는 상위 클래스에 두어서 코드의 중복, 유지보수의 편의성 등을 꾀할 수 있다.

코드의 확장성을 높여서 유연한 프로그램을 만들고, 큰 프로그램일수록 추상 클래스가 중요!!

 

* 추상클래스 자동으로 만들기 : 클래스 생성창 -> Modifiers -> abstract 체크

 

############### 추상 메소드 ##################

템플릿 역할.

추상메소드가 있는 클래스는 추상클래스여야 한다.

추상메소드를 상속 받은 자식클래스가 메소드를 재정의하지 않는다면, 자식클래스는 추상메소드를 재정의하지 않아 추상클래스가 되기 때문에 객체를 생성하지 못하게 된다.

 

############### 디자인 패턴 ##################

프로그래밍이라는 것은 반복되는 패턴이 있다. 이런 패턴들을 모아서 정리한 것이 디자인 패턴(design pattern)이다.

물론 시각 디자이너들의 디자인이 아니라 좋은 소프트웨어를 만들기 위한 설계로서 디자인이라는 표현을 쓰고 있는 것이다.

디자인 패턴의 장점은 크게 두가지이다. 하는

좋은 설계를 단기간에 학습할 수 있다는 점이다. 물론 비교적 단기간이라는 뜻이다. 다른 하나는 소통에 도움이 된다는 점이다. 설계 방법을 토의하거나 전달할 때 설계 방법에 따라 적절한 이름이 있다면 상호간에 생각을 일치시키는 데 큰 도움이 될 것이다.

지금 당장 디자인 패턴이 필요하지는 않겠지만 이러한 것이 있다는 것은 기억해두자. 프로그래밍에 대한 권태가 왔을 때 시작하기 딱 좋은 주제가 디자인 패턴이다.

 

'Java' 카테고리의 다른 글

인터페이스  (0) 2019.06.07
여러가지 수식자(final, static, abstract)  (0) 2019.06.07
패키지와 접근 제어(접근제한자)  (0) 2019.06.06
API와 API 문서 보는 법  (0) 2019.06.06
클래스 패스  (0) 2019.05.29
And

패키지와 접근 제어(접근제한자)

|

################ 패키지 ################

규모가 큰 자바 프로그램을 작성하다 보면 클래스와 인터페이스가 많아진다. 이를 효율적으로 분류하고 관리하기 위하여 연관성 있는 클래스와 인터페이스를 모아둔 것이 바로 패키지.

 

<예시>

package iotest;    클래스와 인터페이스를 분류별로 모아 관리하는 iotest라는 패키지를 만든다

class StuInfo{

    ...

}

 

패키지를 통해 이름의 중복을 해결

 

'배우고 익히고 잊어버려라'

 

패키지는 일종의 디렉토리 개념

 

클래스를 로드한다는 것은 같은 패키지안에 있는 클래스만 가능해서 이때는 import를 활용해서 다른 패키지에 속한 클래스를 불러올 수 있음.

 

<예시>

import java.io.*;    java.io 패키지의 모든 클래스를 여기서도 사용한다. *는 '모든' (와일드카드)

class StuInfo{

    ...

}

 

############### 손 컴파일 ##################

개발도구 없이 코딩하는 경우는 거의 없지만, 언젠가는 알고 있어야 하는 부분.

 

############### 로드된 패키지 파일들의 중복의 회피 ##################

 

################ 접근 제어자(접근 제한자) ################

어떤 클래스를 다른 패키지의 클래스가 상속하지 못하게 하는 등 경우에 따라 클래스나 인터페이스를 사용하는 것을 제한할 필요가 있다.

 

접근 제어자(제한자): public, protected, private (외부;다른 클래스 의 접근을 제한함) 


public: 어디서든 접근 가능(다른 패키지의 클래스도 접근가능)

protected: 같은 패키지 내부에서만 접근 가능. 상속 관계에 있다면 서로 다른 패키지에 있는 클래스의 접근도 허용한다.

default : 접근 제어 지시자가 없는 경우, 접근 제어자가 없는 메소드는 같은 패키지에 있고 상속 관계에 있는 메소드에 대해서만 접근을 허용
private: 외부면 어디서든 접근 불가. 같은 클래스 내부에서만 사용이 가능. nested class(클래스 안에 클래스가 정의된 경우에만 만들수있음)

 

 

접근 제어자를 사용하는 이유 : 사용자가 접근하면 안되거나 접근 할 필요가 없는 맴버에 대한 접근을 규제할 수 있게 되었다. 어떤 맴버에 대한 접근을 허용할 것인가를 작업자의 판단에 달렸다.

 

하나의 소스 코드에는 하나의 public 클래스가 존재 할 수 있다는 의미

 

public 접근 제어자 사용시 주의할 점

- 소스 코드 파일명과 public이 붙은 클래스명은 동일해야 한다.

- main 함수는 public이 붙은 클래스 안에 위치해야 한다.

 

'Java' 카테고리의 다른 글

여러가지 수식자(final, static, abstract)  (0) 2019.06.07
abstract  (0) 2019.06.07
API와 API 문서 보는 법  (0) 2019.06.06
클래스 패스  (0) 2019.05.29
오버라이딩(Overriding) 과 오버로딩(Overloading)  (0) 2019.05.23
And

API와 API 문서 보는 법

|

################## 기본 패키지와 사용자 정의 로직 ##################

 

UI(User Interface) : 사용자를 대면하는(접점하는) 지점을 포괄하는 것을 지칭.

API(Application Programming Interface) : 개발자가 이용하여 플랫폼(시스템)을 제어.

App과 프로그래밍의 접점(프로그램이 동작하는 환경을 제어하기 위해서 환경에서 제공되는 조작 장치)

 

개발자가 아닌 사람은 UI를 통해 시스템을 제어하는것이고,
개발자는 UI와 더불어 API를 이용해서 App을 제어할수 있다.

ex)
'사용자'에게 '웹 개발자'는 인프라를 제공하고,
'웹 개발자'에게 '브라우저 개발자'는 인프라를 제공한다.
'사용자'와 '웹 개발자'의 관계의 접점이 " Interface "

여기서,
웹 개발자는 사용자에게 App을 제어할 수 있도록 User interface를 제공하고,
브라우저 개발자는 웹 개발자에게 App을 제어할 수 있도록, Application programming interface를 제공한다.

 

자바 에플리케이션을 만든다는 것은 결과적으로 자바에서 제공하는 패키지들을 부품으로 조립해서 사용자 정의 로직을 만드는 과정이라고 할 수 있다. 

 

################## API 문서 보는 법 ##################

 

자바 플랫폼 위에서 동작하는 자바 애플리케이션을 개발하는 개발자들은 자바 API를 사용하게 된다. 그런데 자바에서 제공하는 API는 방대하기 때문에 이것을 이용하기 위해서는 API의 목록과 사용법이 체계적으로 정리된 문서를 이용할 수 있어야 한다.

아래 페이지는 Java의 각종 문서들을 모아둔 웹페이지다.

http://docs.oracle.com/javase/

이중에서 API Documentation을 클릭한다.

 

자바를 통해서 어떤 문제를 해결하기 위해서는 우선 자신이 필요한 로직이 담겨있을 것으로 기대되는 패키지의 후보군을 선정해야 한다. 자바에서 제공하는 기본 패키지들은 아래와 같은 기능을 담고 있다.

  • java.lang
    자바 프로그래밍을 위한 가장 기본적인 패키지와 클래스를 포함하고 있다.
  • java.util
    프로그램을 제어하기 위한 클래스와 데이터를 효율적으로 저장하기 위한 클래스들을 담고 있다.
  • java.io
    키보드, 모니터, 프린터, 파일등을 제어할 수 있는 클래스들의 모음
  • java.net
    통신을 위한 기능들을 담고 있다.

 

'Java' 카테고리의 다른 글

abstract  (0) 2019.06.07
패키지와 접근 제어(접근제한자)  (0) 2019.06.06
클래스 패스  (0) 2019.05.29
오버라이딩(Overriding) 과 오버로딩(Overloading)  (0) 2019.05.23
상속  (0) 2019.05.23
And

클래스 패스

|

옵션 -classpath는 자바를 실행할 때 사용할 클래스들의 위치를 가상머신에게 알려주는 역할을 한다. -classpath의 값으로 사용된 ".;lib"를 살펴보자.

.

현재 디렉터리에서 클래스를 찾는다는 뜻이다.

;

경로와 경로를 구분해주는 구분자

lib

현재 디렉터리에 없다면 현재 디렉터리의 하위 디렉터리 중 lib에서 클래스를 찾는다는 의미

 

클래스 패스라는 것은 자바를 실행할 때 클래스의 위치를 지정하는 역할을 하는 것이다. 클래스 패스는 자바 애플리케이션이 사용하고 있는 클래스가 여러 경로에 분산되어 있을 때 유용하게 사용할 수 있는 방법이다.

지금까지는 자바를 실행할 때 클래스 패스를 지정하는 방법을 알아봤다. 실행 할 때마다 클래스 패스를 지정하는 것이 귀찮다면 클래스 패스를 시스템의 환경변수로 지정하면 된다.

 

############### 환경변수 ##################

환경변수는 운영체제에 지정하는 변수로 자바 가상머신과 같은 애플리케이션들은 환경변수의 값을 참고해서 동작하게 된다. 자바는 클래스 패스로 환경변수 CLASSPATH를 사용하는데 이 값을 지정하면 실행할 때마다 -classpath 옵션을 사용하지 않아도 되기 때문에 편리하다. 

'Java' 카테고리의 다른 글

패키지와 접근 제어(접근제한자)  (0) 2019.06.06
API와 API 문서 보는 법  (0) 2019.06.06
오버라이딩(Overriding) 과 오버로딩(Overloading)  (0) 2019.05.23
상속  (0) 2019.05.23
초기화와 생성자  (0) 2019.05.23
And
prev | 1 | ··· | 33 | 34 | 35 | 36 | 37 | 38 | 39 | next