boolean(불린) 두번째 질문 자바

조회수 1160회

public class TapeDeckTestDrive {

public static void main(String[] args) {

    TapeDeck t = new TapeDeck();

    t.canRecord =true;

    if (t.canRecord == true) {
        t.recordTape();
    }

}

}

class TapeDeck{

boolean canRecord = false;

void playTape() {
    System.out.println("tape playing");
}

void recordTape() {
    System.out.println("tape recording");
}

}

boolean값이 너무 어렵게만 느껴지는 초보입니다.

TapeDeck class에서 왜 boolean값으로 canRecord에 false값을 줬는지 잘 모르겠습니다.

게다가 false라고 지정한 후에 TapeTestDrive class가서 t라는 object의 값을

true로 설정해주고 있는데 이것 또한 왜 그런지 잘 모르겠습니다.

객체지향프로그래밍 배우는 중입니다...

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • TapeDeck class에서 왜 boolean값으로 canRecord에 false값을 줬는지 잘 모르겠습니다.

    => 기본적으로 초기화 값을 주기 않으면 false 를 갖습니다. boolean canRecord; 라고만 하면 컴파일시에 false 로 셋팅합니다. 그럼에도 왜 false 를 주었는가? 라고 묻는다면 그건 디자인한 사람한테 물어봐야 하는 겁니다.

    일단 객체지향에서 프로퍼티(필드)와 메소드를 잘 생각해보세요.

    TapeDeck 은 테이프에 record 하는 기능을 넣어야 합니다. 그런데 중간에 잠시 멈춘다거나 혹은 실수를 방지하기 위해 record 동작 가능 여부 스위치를 넣고 싶습니다.

    여기서 메소드는 reocrd하는 기능이고 record 동작 여부는 프로퍼티가 되는 겁니다.

    즉 canRecord 가 true여야 record 되도록 디자인 한 겁니다.

    사실 위의 예제에서는

    if (t.canRecord == true) {
            t.recordTape();
        }
    

    했는데 제거하고

    void recordTape() {
        if(canRecord)
            System.out.println("tape recording");
    }
    

    와 같이 하는게 맞습니다.

    canRecord 값은 t.canRecord =true; 하면 true로 바뀌는 겁니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)