-
[Java] ClassJava 2024. 2. 19. 16:30
java 는 객체지향 언어로서 유지보수에 용이하고 높은 재사용성을 보여준다
클래스란 하나의 설계도로 보면된다.
클래스의 메서드는 기능, 필드는 구성용품으로 예를 들 수 있다
우선 블랙박스라는 클래스를 만들어주어 작성해 보자
각 설명은 주석을 해놓았다.
package Chapter_07; public class BlackBox { //기본 인스턴스변수 -> 객체 필요 String modelName; String resolution; int price; String color; int serialNumber; //시리얼 넘버 static int counter = 0; //시리얼 번호를 생성해주는 역할 (처음엔 0이었다가 ++ 연산을 통해서 값을 증가) // static 붙이면 클래스 변수이다. -> 객체 없이 메소드 이름으로 바로 접근 가능 static boolean canAutoReport = false; // 자동 신고 기능 BlackBox() { // System.out.println("기본 생성자 호출"); // this.serialNumber = ++counter; // System.out.println("새로운 시리얼 넘버를 발급 받았습니다 : "+ this.serialNumber); }//생성자 BlackBox(String modelName, String resolution, String color, int price){ // this();//기본 생성자의 바로 접근 후 아래 생성자 호출 // // System.out.println("사용자 정의 생성자 호출"); // this.modelName = modelName; // this.resolution =resolution; // this.color=color; // this.price=price; } void autoReport() { if (canAutoReport) { System.out.println("충돌이 감지되어 자동 신고 합니다."); } else { System.out.println("신고 기능이 지원되지 않습니다."); } } void insertMemoryCard(int capacity) { System.out.println("메모리 카드가 삼입되었습니다."); System.out.println("용량은 "+ capacity + "GB 입니다."); } int getVideoFileCount(int type) { if (type == 1) { return 9; } else if (type == 2) { return 1; } return 10; } void record(boolean showDateTime, boolean showSpeed, int min) { System.out.println("녹화를 시작합니다."); if(showDateTime){ System.out.println("영상에 날짜정보가 표시됩니다."); } if(showSpeed) { System.out.println("영상에 속도정보가 표시됩니다."); } System.out.println("영상은 " + min + "분 단위로 기록됩니다."); } void record(){ record(true,true,5); // 기본 정보 } static void callServiceCenter() { System.out.println("서비스 센터(1588-0000) 로 연결합니다."); } void appendModelName(String modelName) { this.modelName += modelName; //인스턴스 변수인 modelName 에 직접 접근 : this.변수 } // getter : 값을 가져온다, setter : 값을 설정한다 String getModelName() { return modelName; } void setModelName(String modelName) { this.modelName = modelName; } String getResolution() { if(resolution == null || resolution.isEmpty()) { return "판매자 문의 요함."; } return resolution; } void setResolution() { this.resolution = resolution; } int getPrice(){ return price; } void setPrice(int price){ if (price < 100000){ this.price = 100000; } else{ this.price = price; } } String getColor() { return color; } void setColor(String color) { this.color = color; } }
이렇게 생성 후 다른 클래스에서 인스턴스를 생성하여 블랙박스를 호출 해보겠다.
package Chapter_07; public class _01_Class { public static void main(String[] args) { BlackBox BBox = new BlackBox(); // BlackBox 클래스로부터 BBox 객체 생성 //BBox 객체는 Blackbox 클래스이 인스턴스 //BBOX. 으로 BlackBox 에 있는 메서드를 호출 할 수 있다. // 여기서 필드를 호출하기 위해선 get으로 호출하고 필드 값을 재정의 하기위해선 set 으로 재정의한다. } }
인스턴스 생성 후 필드호출
package Chapter_07; public class _02_InstanceValuable { public static void main(String[] args) { // 처음 만든 블랙박스 BlackBox b1 = new BlackBox(); b1.modelName = "까망이"; b1.resolution = "PHD"; b1.price = 200000; b1.color = "블랙"; // 처음 만든 블랙박스 System.out.println(b1.modelName); System.out.println(b1.resolution); System.out.println(b1.color); System.out.println(b1.price); System.out.println("------------"); // 새로운 블랙박스 제품 BlackBox b2 = new BlackBox(); b2.modelName = "하양이"; b2.resolution = "UHD"; b2.price = 300000; b2.color = "화이트"; System.out.println(b2.modelName); System.out.println(b2.resolution); System.out.println(b2.color); System.out.println(b2.price); } }
package Chapter_07; public class _03_ClassVariables { public static void main(String[] args) { BlackBox b1 = new BlackBox(); b1.modelName = "까망이"; System.out.println(b1.modelName); BlackBox b2 = new BlackBox(); b2.modelName = "하양이"; System.out.println(b2.modelName); // 특정 법위를 초과하는 충동 감지 시 자동 신고 기능 개발 여부 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; System.out.println(" - 개발 후 - "); System.out.println(b1.modelName + " 자동 신고 기능 : " + b1.canAutoReport); System.out.println(b2.modelName + " 자동 신고 기능 : " + b2.canAutoReport); System.out.println("모든 블랙부스 제품 자동 신고 기능 : "+ BlackBox.canAutoReport); // 권장 } }
인스턴스 생성 후 메서드 호출
package Chapter_07; public class _04_Method { public static void main(String[] args) { BlackBox b1 = new BlackBox(); b1.modelName ="까망"; b1.autoReport(); // 지원 안됨 BlackBox.canAutoReport = true; b1.autoReport(); // 지원 됨 b1.insertMemoryCard(256); // 일반 영상 : 1 // 이벤트 영상 ( 충돌 감지 ) : 2 int fileCount = b1.getVideoFileCount(1); // 일반영상 System.out.println(" 일반 영상 파일 수 : "+ fileCount + "개"); fileCount =b1.getVideoFileCount(2); System.out.println(" 이벤트 영상 파일 수 : "+ fileCount + "개"); } }
'Java' 카테고리의 다른 글
[Java] MethodOverriding (0) 2024.02.20 [Java] Method OverLoding (0) 2024.02.20 [Java] priority Queue(우선 순위) (1) 2024.01.29 <Java > ASCII (0) 2023.11.01 <Java> 다차원 배열 순회 (0) 2023.11.01