본문 바로가기

Language/Java

Java api 일기 2 클래스란?

 현실 세계에서는 종종 같은 종류의 많은 개별 객체를 찾을 수 있다.
예를 들어, 동일한 제조사와 모델을 가진 수천 개의 다른 자전거가 존재할 수 있다.
각 자전거는 동일한 설계도 세트로 제작되었으므로 동일한 구성 요소를 포함한다. (고성능 바퀴 2개, 가죽 핸들 1개 등등..)
객체 지향 관점에서, 우리는 그 많은 동일한 자전거들 중 하나, 즉, 나의 자전거라고 말할 경우를
객체의 -> 클래스의 -> 인스턴스라고도한다.

클래스 개별 객체가 생성되는 청사진(설계도), 혹은 프로토 타입이다.

다음 Bicycle class는 자전거라는 객체의 가능한 구현 중 하나이다.

class Bicycle {

int cadence = 0;   // 현재 속도
int speed = 0;     // 속력
int gear= 1;        // 기어

  void changeCadence (int newValue) { //void -> 반환 타입이 없는 메소드
  cadence = newValue;
  }
  void changeGear (int newValue) {
  gear = newValue;
  }
  void speedUp (int increment) {
  speed  = speed + increment;
  }
  void applyBrakes (int decrement) {
  speed  = speed - decrement;
  }
  void printStates () {
  System.out.println ( "cadence :"+ cadence + "speed :"+ speed + "gear :"+ gear );
  }
}

Java 프로그래밍 언어의 구문은 새로운 것처럼 보이지만,
이 클래스의 디자인은 자전거 객체에 대한 이전 논의를 기반으로 한다. (이전 포스팅 참고)
필드 cadence, speed, 및 gear객체의 상태를 나타내며, 방법은 ( changeCadence, changeGear, speedUp등) 외부 세계와의 상호 작용을 정의한다.

여기서 새로운 Bicycle 객체를 만들고 사용하는 것은 응용 프로그램의 다른 클래스가 행한다. (main 메소드가 없으므로)

다음 BicycleDemo class는 두 개의 개별 Bicycle 객체를 만들고 해당 메서드를 호출하는 클래스이다 .

class BicycleDemo {

public static void main (String [] args) {

// 두 개의 다른 자전거 객체 생성
Bicycle bike1 = new Bicycle ();    //Bicycle class를 사용하여 bike1객체 생성.
Bicycle bike2 = new Bicycle ();    //Bicycle class를 사용하여 bike2객체 생성.

  // 해당 객체 에 대한 메서드를 호출.
  bike1.changeCadence (50);
  bike1.speedUp (10);
  bike1.changeGear (2);
  bike1.printStates ();     //bike1의 상태 출력

  bike2.changeCadence (50);
  bike2.speedUp (10);
  bike2.changeGear (2);
  bike2.changeCadence (40);
  bike2.speedUp (10);
  bike2.changeGear (3);
  bike2.printStates ();      //bike2의 상태 출력
  }
}

이 테스트는 두 자전거의 마지막 속도, 속력 및 기어를 출력한다.

bike1 = 속도: 50 속력: 10 기어 : 2

bike2 = 속도: 40 속력: 20 기어 : 3

이렇듯, class를 사용하여 똑같은 성질의 객체를 여러 개 생성하고, 동일한 메소드를 재사용 할 수 있다.

 

출처 : docs.oracle.com/javase/tutorial/java/concepts/class.html

'Language > Java' 카테고리의 다른 글

Java api 일기 6 연산자 요약  (0) 2021.01.18
Java api 일기 5 패키지란?  (0) 2021.01.18
Java api 일기 4 인터페이스란?  (0) 2021.01.18
Java api 일기 3 상속이란?  (0) 2021.01.17
Java api 일기 1 객체란?  (0) 2021.01.17