간단

자바)객체지향으로 BlackBox 만들기(2) 본문

Java

자바)객체지향으로 BlackBox 만들기(2)

I want to Sleep 2023. 4. 27. 22:45
728x90

(3) 클래스변수

 (1)에서는 BlackBox의 모델명 색상 해상도 가격 설정을 해놓았다. 이번에는 블랙박스의 시스템을 추가해볼거다

     -충돌 감지 시 자동 신고 기능 개발-

      자동신고기능을 클래스변수로 이용해 블랙박스 2개의 제품을 공통적으로 넣을 것 이다.

 

    BlackBox 클래스에 static 으로 시작하는 변수가있다.( false 라고 지정)

public class BlackBox {
    //인스턴스 변수 또는 필드
    //모델명,해상도,가격,색상
    String modelName;
    String resolution;
    int price;
    String color;
    //모든 객체에 똑같이 적용된다.(공통)
    static  boolean canAutoReport = false; //자동신고기능,//static이 붙으면 클래스변수라고 한다






}

현재는 개발 전으로 코드를 실행하면 개발여부가 false 라고 뜰것이다 

(!클래스 변수는 객체 생성 후 호출할 필요없이 클래스명.변수이름으로 바로 호출이 가능하다)

//특정 범위를 초과하는 충돌 감지 시 자동 신고 기능 개발 여부
System.out.println("- 개발 전 -");
System.out.println(b1.modelName + " 지동 신고 기능 : " + b1.canAutoReport);
System.out.println(b2.modelName + " 자동 신고 기능 : " + b2.canAutoReport);
System.out.println("모든 블랙박스 제품 자동 신고 기능 : " +BlackBox.canAutoReport);//권장방식 클래스명.변수이름
 

BlackBox.canAutoReport = true 로 변경 후  객체를 이용하지 않고 바로 호출

//기능 개발
BlackBox.canAutoReport = true;
System.out.println("- 개발 후 -");
System.out.println(b1.modelName + " 지동 신고 기능 : " + BlackBox.canAutoReport);
System.out.println(b2.modelName + " 자동 신고 기능 : " + BlackBox.canAutoReport);
System.out.println("모든 블랙박스 제품 자동 신고 기능 : " +BlackBox.canAutoReport);

- 개발 전 -
까돌이 지동 신고 기능 : false
하순이 자동 신고 기능 : false
모든 블랙박스 제품 자동 신고 기능 : false
- 개발 후 -
까돌이 지동 신고 기능 : true
하순이 자동 신고 기능 : true
모든 블랙박스 제품 자동 신고 기능 : true

 

이처럼 클래스 변수는 static이 앞에 붙으며 객체 생성 후 호출할 필요가 없고, 공통적으로 사용될 기능이 있을때 사용하면 유용하다.


(4)메소드

(4)에서는 1.자동신고시스템에 기능 부여, 2.외장메모리카드,3.충돌시 영상 기능을 메소드를 이용하여 만들 것이다.

   #전달값과 반환값이 없는 메소드#

     - void autoReport 라는 메소드를 선언 후 시스템에 조건(if)를 걸어준다.

     -canAutoReport 가 true면 자동신고 false면 지원x 로 설정 

static boolean canAutoReport = false; //자동신고기능
//전달값과 반환값이 없는 메소드
void autoReport() {//불리언이 false면 신고를 하지 않고 true면 자동 신고 기능을 넣어준다
    if (canAutoReport) {
        System.out.println("충돌이 감지되어 자동으로 신고합니다");
    } else {
        System.out.println("자동 신고 기능이 지원되지 않습니다.");
    }
}
BlackBox b1 = new BlackBox();
b1.modelName = "까망이";
b1.autoReport(); //지원안됨
BlackBox.canAutoReport = true;
b1.autoReport(); // 지원 됨

자동 신고 기능이 지원되지 않습니다.
충돌이 감지되어 자동으로 신고합니다

중간에 true로 바꾸어 지원 가능

 

블랙박스 외장 메모리카드 전달값이 있는 메소드를 선언 

//반환값이 없는 메소드
//블랙박스에 외장 메모리카드
void insetMemoryCard(int capacity) { //반환값이 없는 메소드
    System.out.println("메모리 카드가 삽입되었습니다.");
    System.out.println("용량은 " + capacity + "GB 입니다.");
}

호출

b1.insetMemoryCard(256);

메모리 카드가 삽입되었습니다.
용량은 256GB 입니다.

 

충돌시 영상기능

반환값과 전달값이 있는 메소드

//반환값과 전달값이 있는 메소드
//영상 기능
int getVideoFileCount(int type) { //전디
    if (type == 1) {// 일반 영상
        return 9; //임의로 저장
    } else if (type == 2) { //이벤트영상
        return 1;
    }
    return 0;
}

객체 생성 후 타입 1과2를 넣어주어 일반영상과 이벤트영상을 분리 시켜 놓는다, 

호출

//일반영상 : 1
 //이벤트 영상 (충돌감지) : 2
int fileCount = b1.getVideoFileCount(1);
 System.out.println("일반 영상 파일 수 : " + fileCount + "개");
int eventFileCount = b1.getVideoFileCount(2);
 System.out.println("이벤트 영상 파일 수 : " + eventFileCount + "개");

일반 영상 파일 수 : 9개
이벤트 영상 파일 수 : 1개

 

!! canAutoReport 의 기능이 false 일때 온전히 모든 기능을 지원하지 않을때는 각 메소드에 if 조건을 넣어주어 제어

해주도록한다