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


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로 설정해주고 있는데 이것 또한 왜 그런지 잘 모르겠습니다.

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

  • 2017년 10월 05일에 작성됨

조회수 86


1 답변


좋아요
0
싫어요
채택취소하기

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로 바뀌는 겁니다.

  • 2017년 10월 05일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close