# 추상화
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 |