자바에서 boolean(불린)의 사용용도가 궁금합니다.

조회수 7681회

public class DrumKitTestDrive {

public static void main(String[] args) {
    DrumKit d = new DrumKit();
    d.playSnare();
    d.playSnare = false;

    d.playTopHat();

}

}

class DrumKit{

boolean topHat = true;
boolean playSnare = true;

void playSnare() {
    System.out.println("bang bang ba-bang");
    }

void playTopHat() {
    System.out.println("ding ding da-ding");
    }

}

위에나오는 코드 중 boolean이 들어간 줄들이 아예 이해가 안갑니다.

왜 사용하는지도 모르겠고 단순히 boolean은 참,거짓 값을 갖는다고만

배웠는데 맞는말인가요?

d.playSnare = false; << 이 부분은 d라는 object가 playSnare라는 메소드를 실행하라는

말과 어디가 어떻게 다른가요? 그리고 false값을 왜 갖는지도 모르겠습니다.

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

2 답변

  • 동명의 필드와 메소드가 있을 때의 차이점을 보여주기 위한 코드가 아닌가 싶습니다.

    DrumKit 클래스는 boolean playSnare 필드와 void playSnare() 메소드 두개를 갖고 있습니다.

    d.playSnare = false;
    

    위의 코드는 필드인 boolean playSnare 을 사용하게 되고

    d.playSnare();
    

    는 메소드인 void playSnare() 를 사용하게 됩니다.

    이 처럼 사용하는 연산자가 = 또는 () 인지에 따라서 동명이여도 접근하는 필드나 메소드가 달라진다를 설명하고 싶었던것 같습니다.

    true, false 에 대해서는 별다른 의미를 둔것 같진 않구요.

    참고로 C++ 의 경우 메소드와 필드의 이름이 동명일 때, 컴파일 오류가 발생할 수 있습니다.

  • 프로퍼티와 메소드는 다른겁니다.

    프로퍼티는 해당 객체의 속성을 나타내고 메소드는 행위를 나타냅니다.

    예를들어 자동차라는 객체라면...색상, 배기량 등이 프로퍼티가 되고 전진, 후진 등이 메소드가 됩니다.

    자바는 근래의 모던한 언어들과 달리 ()이 필수입니다. ()가 없으면 필드를 가리키고 ()가 있으면 메소드 입니다.

    질문내용중 예제가 무슨 설명중에 제시된 것인지 모르겠으나 객체지향적인 측면에서는 많이 부족해보이는 예제입니다.

    제 생각에는 아래와 같이 디자인 되어야 할 것 같습니다.

    class DrumKit{
    
        //boolean topHat = true;            
        private boolean isTopHat = true;            //캡슐화. TopHat의 존재유무
        //boolean playSnare = true;
        private boolean isPlaySnare = true;        // snare 연주 가능 유무
    
        public void playSnare() {
            if(isPlaySnare)    // 참이면 수행
                System.out.println("bang bang ba-bang");
        }
    
        public void playTopHat() {
            if(isTopHat)
                System.out.println("ding ding da-ding");
        }
    
        public void setIsTopHat(boolean value){
            isTopHat = value;
        }
        public boolean getIsTopHat (){
            return isTopHat;
        }
    
        public void setIsPlaySnare(boolean value){
            isPlaySnare= value;
        }
        public boolean getIsPlaySnare (){
            return isPlaySnare; 
        }
    
    }
    

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

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

(ಠ_ಠ)
(ಠ‿ಠ)