일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 조건문#중첩반복문#기본
- 오버라이딩
- jpa
- 자바
- 물
- Update
- 탐사수
- /자바 #/간단한프로그램
- sprinboot
- 자바#제네릭스기본#List개념
- springboot
- t삭제(delete)
- 절차지향
- 자바#게임
- 쿠팡
- 문자와숫자#특수기호
- CRUD
- Today
- Total
간단
자바)객체지향으로 BlackBox 만들기(2) 본문
(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 조건을 넣어주어 제어
해주도록한다
'Java' 카테고리의 다른 글
자바)객체지향으로 BlackBox 만들기(4) (0) | 2023.04.29 |
---|---|
자바) 객체지향으로 BlackBox 만들기(3) (0) | 2023.04.27 |
자바)객체지향으로 BlackBox 만들기(1) (0) | 2023.04.26 |
자바)배열을 이용한 간단한 문제풀이 (0) | 2023.04.25 |
자바)반복문을 이용한 기본 문제 풀이 정리 (0) | 2023.04.22 |