JAVA/JAVACORE

[COMPARISON] State / Behavior in Object

기록해연 2024. 10. 3. 19:00

Technical Interview 에서 받았던 질문 中 1

Object에서의 State / Behavior 를 비교해 설명해주세요.


 

객체(Object)란?

객체는 현실 세계의 사물과 유사하게, 데이터와 기능을 하나로 묶어놓은 프로그래밍 요소이다. 자바 같은 객체지향 언어에서 모든 객체는 특정 클래스(Class)의 인스턴스로, 해당 클래스는 객체의 특성(속성)과 할 수 있는 행동을 정의한다.


 

상태(State)란?

객체의 상태는 객체가 갖는 데이터속성을 의미한다. 객체의 상태는 시간이 지남에 따라 변할 수 있으며, 이 상태는 객체의 변수에 저장된다. 상태는 객체가 특정 시점에서 가지고 있는 모든 정보를 포함한다. 예를 들어, Car 객체가 있다면, 그 객체의 상태는 "현재 속도", "연료량", "차 색상" 같은 데이터로 구성될 수 있다.

 

행동(Behavior)이란?

객체의 행동은 객체가 무엇을 할 수 있는지를 정의한다. 행동은 주로 객체가 수행할 수 있는 메서드(Method)로 표현된다. 예를 들어, Car 객체는 "달리기(run)", "정지하기(stop)" 같은 행동을 가질 수 있다.

class Car {
    // 상태 (State)
    // 이 코드에서 speed와 color는 Car 객체의 상태를 나타낸다. 
    // 객체가 생성되면, 이 변수들에 따라 상태가 정해진다.
    int speed;
    String color;

    // 행동 (Behavior)
    // run()과 stop() 메서드는 Car 객체의 행동을 정의한다.
    // Car 객체는 달릴 수 있고 멈출 수 있으며, 이 행동이 메서드로 표현된 것이다.
    void run() {
        System.out.println("The car is running.");
    }

    void stop() {
        System.out.println("The car has stopped.");
    }
}

 

상태와 행동의 관계

객체는 상태와 행동이 서로 연결되어 있으며, 상태는 행동에 의해 변할 수 있다. 예를 들어, Car 객체의 speed 상태는 run() 메서드를 호출할 때 변할 수 있다.

class Car {
    int speed;
    String color;
    
    // run() 메서드는 객체의 speed 상태를 바꿈. 
    void run(int increaseSpeed) {
        speed += increaseSpeed;
        System.out.println("The car is running at " + speed + " km/h.");
    }

    // stop() 메서드는 객체의 speed를 0으로 설정하여 정지 상태로 바꿈. 
    void stop() {
        speed = 0;
        System.out.println("The car has stopped.");
    }
}

 


최종 정리

객체의 상태(State)는 객체가 특정 시점에서 가지고 있는 데이터이고, 행동(Behavior)는 객체가 수행할 수 있는 동작을 의미한다. 상태와 행동은 객체지향 프로그래밍에서 객체를 구성하는 두 가지 핵심 요소로, 이 둘의 상호작용을 통해 객체는 현실 세계의 사물을 모방할 수 있다.

'JAVA > JAVACORE' 카테고리의 다른 글

[TOOL] Debugging on Eclipse  (1) 2024.10.20
[OVERVIEW] OOP  (0) 2024.10.16
[COMPARISON] Object / Class  (2) 2024.10.03