국비학원/공부

16일차 java(4)

mikan- 2023. 5. 15. 08:41

# 추상화

	public static void main(String[] args) {
		// 1. 객체생성 : 객체(저장할 대상자)를 저장할 수 있는 공간을 만듦
		// 형식) 클래스이름(설계도 이름) 객체명(변수) = new 클래스명()
		//int age; // 4byte 기억공간이 생성
		//Car morning; // 객체선언 -> 기억공간이 아직 생성된건 아님(예약된 상태)
		Car morning = new Car(); // 공간이 생성됨
		Car sonata = new Car(); // 서로 다른 공간이 생성됨

		// 객체는 4byte 기억공간
		// morning : j20230512(패키지명).Car(클래스명)@6f2b958e(데이터가 저장된 주소값)
		System.out.println("morning : " + morning);
		System.out.println("sonata : " + sonata);

		// 2. 객체명(저장된 위치).멤버변수명 = 값(저장)
		morning.name = "모닝";
		morning.output = 1000;
		morning.color = "red";
		morning.year = 2023;

		// 3. 메소드 호출(운전) -> 기능 작동(리모컨의 버튼 클릭)
		morning.startEngine(); // 객체명.호출할 메소드명() or (~)
		// speedUp이란 메소드를 호출 하면서 int 150 값을 전달받음
		morning.speedUp(150);
		morning.speedDown(30); // 150 - 30 = 120
		// 객체명(저장된 위치).멤버변수
		System.out.println("차의 이름은 : " + morning.name);
		System.out.println("차의 베기량은 : " + morning.output);
		System.out.println("차의 현재 속도는 : " + morning.current_speed);

		// 자주 사용되고 반복적인 코드가 있으면 메소드를 만들어서 호출함
		// 장점 : 코드의 재사용성, 코딩양이 줄어듦(개발시간이 단축)
		sonata.name = "소나타";
		
		morning.carInfoPrint();
		sonata.carInfoPrint(); // 같은 메소드라도 저장되는 위치가 다르다.
	}
}
public class Car {
	/*-
	 * 추상화 : 새롭게 저장할 대상자(자동차, 학생, 건물...)를 저장할 목적으로 만들어진 설계도
	 * 
	 * 1.객체(car) : 저장하고 싶은 대상자(공통점)
	 * 1. 멤버변수 : 클래스 내부에서 선언된 변수 -> 초기값이 설정(8가지 기본 자료형)
	 */
	String name; // 자동차 이름(명사) Default : null
	int output; // 자동차 배기량 Default : 0, double : 0.0 초기화
	int year; // 자동차 만들어진 년도 Default : 0
	String color; // 자동차 색 Default : null

	//현재 상태
	int current_speed; // 자동차 속도
	// int sidong = 0; // 시동걸린 유무
	boolean sidong = false; // 시동 유무

	// 2. 공통기능(움직임) -> 메소드 구현(함수) -> 요구분석
	// 1) 시동걸기(단순 반복) : 매개변수 랑 반환값이 없음
	void startEngine() { // 멤버변수의 값을 저장하거나 불러오기
		sidong = true;
		System.out.println("시동이 걸림!!!");
	}
	
	// 2) 주차하기(단순 반복)
	void stop() {
		sidong = false;
		current_speed = 0;
		System.out.println("정상적으로 주차 완료");
	}
	
	// 기존의 데이터를 입력 받아서 저장, 계산, 출력
	// 3) 속도 증가시키기 = 매개변수는 다른 메서드에서 똑같이 사용이 가능함(지역변수이기 때문에)
	void speedUp(int speed) { // function speedUp(speed){}
		current_speed += speed; // += : current_speed = current_speed + speed
		System.out.println(speed + "km 만큼 속도가 증가됨");
	}
	
	// 4) 속도 감소시키기
	void speedDown(int speed) { // function speedUp(speed){}
		current_speed -= speed; // += : current_speed = current_speed - speed
		System.out.println(speed + "km 만큼 속도가 감소됨");
	}
	
	// 5) 차의 정보를 출력(단순 반복)
	void carInfoPrint() {
		System.out.println("==차의 정보 출력==");
		System.out.println("차의 시동유무 : " + sidong);
		System.out.println("차의 이름 : " + name);
		System.out.println("차의 배기량 : " + output);
		System.out.println("차의 연식 : " + year);
		System.out.println("차의 색깔 : " + color);
		System.out.println("차의 현재 속도 : " + current_speed);
	}
}

 

#

public class TVHandling {

	public static void main(String[] args) {
		// 1. TV객체(같은구조 지만 모양이 다름(size))
		TV smartTV = new TV(); // 객체생성 : 저장할 공간을 만듦
		
		// 2. 객체명.멤버변수 = 값
		System.out.println("smartTV : " + smartTV); // 주소
		smartTV.name = "삼성 smartTV s34";
		smartTV.maker = "삼성";
		smartTV.color = "red";
		smartTV.size = 50;
		
		// 3. 주문 -> 배송 -> 설치 : 객체명.호출할 메소드명() or (~)
		smartTV.turnOn();
		smartTV.channelUp(45); // 45값을 보내서 다시 받음(45번 채널로 감)
		smartTV.channelDown(15); // 45 - 15 = 30
		smartTV.speakChannel("ocn");
		
		// 전체채널 편성표
		smartTV.tvDisplay();
		smartTV.turnOff();
	}
}
public class TV {
	// 1. 공통의 저장할 특성, 특징
	String maker; // 제조사 -> default : null
	String name; // 모델명
	String color; // 색깔
	int size; // 인치 -> default : 0, boolean default : false, double default : 0.0
	
	// 상태
	boolean power; // 전원 상태
	int channel; // 채널
	
	// 2. TV기능
	// 1) 리모콘으로 전원 on(단순, 반복) -> 매개변수X, 반환값X
	void turnOn() {
		power = !power; // power = true;
		System.out.println("TV 전원 ON, 로딩중...");
	}
	
	// 2) 전원 off
	void turnOff() {
		power = !power; // power =! true; -> false
		System.out.println("TV 전원 OFF");
	}
	
	// 3) 채널 change -> up(매개변수 O), 반환값X
	void channelUp(int ch) {
		channel = ch; // channel++;
		System.out.println("현재 변경된 채널은 : " + channel + "입니다.");
	}
	
	// 4) 채널 change -> down
	void channelDown(int ch) {
		channel -= ch; // channel--;
		System.out.println("현재 변경된 채널은 : " + channel + "입니다.");
	}
	
	// 5) TV채널정보 -> 채널 편성표
	void tvDisplay() {
		System.out.println("== TV정보 출력 ==");
		System.out.println("모델명 : " + name);
		System.out.println("색상 : " + color);
		System.out.println("메이커 : " + maker);
		System.out.println("현재 채널 : " + channel);
		System.out.println("전원 상태 : " + power);
	}
	
	// 6) 말하면 채널변경기능 -> 매개변수 O -> 말 (String), 반환값X
	void speakChannel(String ch) { // "ocn"(35번 채널), "sbs sports"(121번 채널)
		//String 객체 -> 문자열을 비교(equals("비교할 문자열")) 대,소문자 구분O
		//                          equalsIgnoreCase : 대소문자 구분X
		if (ch.equals("ocn")) {
			channel = 35;
		} else if (ch.contentEquals("sbs sports")) {
			channel = 121;
		} else if (ch.equals("tvn")) {
			channel = 3;
		}
		System.out.println("현재 선택한 채널은 " + channel + "로 이동중");
		
	}

 

#

public static void main(String[] args) {
		/*-
		 * 1. 사용자로부터 값을 입력받아서(2개) 최대값을 구하기 <-> 최소값은 구하기
		 * 2. 최대값을 구해주는 메소드(MAX)를 작성해서 최대값을 구하기
		 * 3. 최소값을 구해주는 메소드(MIN)를 작성해서 최소값을 구하기
		 */
		// 지역변수 이기 때문에
		int x = 12;
		int y = 67;

		/*- 비 효율적인 코딩방식(단순, 반복적인 문장)
		if (x > y) {
			System.out.println("큰 값은 : " + x + "입니다.");
		} else {
			System.out.println("큰 값은 : " + y + "입니다.");
		}
		
		int a = 56;
		int b = 97;
		
		if (a > b) {
			System.out.println("큰 값은 : " + a + "입니다.");
		} else {
			System.out.println("큰 값은 : " + b + "입니다.");
		}
		*/

		TwoTest tt = new TwoTest(); // max 와 min이 호출하기 위해서 만듦
		tt.max(x, y); // max라는 메소드를 호출하면서 x,y값을 전달함
		tt.max(100, 1);
		System.out.println("=================");
		tt.min(x, y);
		tt.min(34, 14);
	}

	// 부하직원 (최대값)
	void max(int x, int y) {
		if (x > y) {
			System.out.println("큰 값은 : " + x + "입니다.");
		} else {
			System.out.println("큰 값은 : " + y + "입니다.");
		}
	}

	// 부하직원 (최소값)
	void min(int x, int y) {
		if (x > y) {
			System.out.println("적은 값은 : " + y + "입니다.");
		} else {
			System.out.println("적은 값은 : " + x + "입니다.");
		}
	}

'국비학원 > 공부' 카테고리의 다른 글

18일차 java(6)  (0) 2023.05.16
17일차 java(5)  (1) 2023.05.15
15일차 java(3)  (1) 2023.05.11
14일차 java(2)  (0) 2023.05.10
13일차 java(1)  (0) 2023.05.09