Sec 02
Exam 01
Car.java
package chap06.sec02.exam01;
/**
* packageName : chap06.sec02.exam01
* fileName : Car
* author : GGG
* date : 2023-09-19
* description : 자동차 클래스
* 요약 :
* 클래스 : 객체의 구조를 정의하는 곳 (속성(필드, 멤버변수), 생성자, 함수(메소드))
* 객체(인스턴스) : 클래스로부터 생성되면 new 생성자함수() 이용해서 생성함
* new 연산자 : 객체 생성 연산자이며 , 생성자함수를 호출하고 힙 메모리방에 객체를 저장함
* 사용법 : 클래스 객체변수 = new 생성자함수();
* 객체변수 : 힙 메모리 방번호(주소)가 저장됨
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-19 GGG 최초 생성
*/
public class Car {
// 클래스의 3요소 : 속성, 생성자함수, 함수 (메소드)
// TODO: 속성(필드, 멤버변수)
String company = "현대자동차";
String model = "그랜저";
String color = "검정";
int maxSpeed = 350;
int speed; // 기본 초기화 (0)
}
CarApplication.java
package chap06.sec02.exam01;
/**
* packageName : chap06.sec02.exam01
* fileName : CarApplication
* author : GGG
* date : 2023-09-19
* description : 실행 클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-19 GGG 최초 생성
*/
public class CarApplication {
public static void main(String[] args) {
// 객체 생성 : 클래스명 객체변수명 = new 생성자함수();
// 생성자함수명 == 클래스명
Car car = new Car();
// TODO: 클래스의 속성 출력하기 : 사용법 : 객체변수명.속성명
System.out.println("제작회사 :" + car.company);
System.out.println("모델명 :" + car.model);
System.out.println("색깔 :" + car.color);
System.out.println("최고속도 :" + car.maxSpeed);
System.out.println("현재속도 :" + car.speed); // 기본값 출력
// Car 클래스 속성값 수정(현재속도 : car.speed) : 0 => 60
car.speed = 60;
// 결과 출력
System.out.println("수정된 속도 : " + car.speed);
}
}
결과
제작회사 :현대자동차
모델명 :그랜저
색깔 :검정
최고속도 :350
현재속도 :0
수정된 속도 : 60
Exam 02
FieldInit.java
package chap06.sec02.exam02;
/**
* packageName : chap06.sec02.exam02
* fileName : FieldInit
* author : L.DH
* date : 2023-09-20
* description : 필드 초기화
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-20 L.DH 최초 생성
*/
public class FieldInit {
// TODO: 속성(필드), 생성자함수, 함수(메소드) 설계 선택
// TODO: 속성(필드)
// 정수 : byte, short, int, long
byte bField;
short sField;
int iField;
long lField;
// 실수 : float, double
float fField;
double dField;
// char / boolean
char cField;
boolean boField;
// string / int[]
String strField;
int[] arrField;
}
FieldInitApplication.java
package chap06.sec02.exam02;
/**
* packageName : chap06.sec02.exam02
* fileName : FieldApplication
* author : L.DH
* date : 2023-09-20
* description : 실행 클래스 (main())
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-20 L.DH 최초 생성
*/
public class FieldApplication {
public static void main(String[] args) {
// TODO : 객체 생성 : new 연산자(힙방에 해당 객체를 생성함)
// TODO : 클래스명 명명법 : 첫글자 대문자 나머지 소문자, 단어 사이는 대문자(파스칼표기법)
// 사용법 : 클래스명 객체변수명 = new 생성자함수();
FieldInit fieldInit = new FieldInit();
// TODO: 예제 : fieldInit 객체변수의 모든 속성 출력하세요.
// TODO : 힌트 : sout
System.out.println("byte : " + fieldInit.bField); // 0
System.out.println("short : " + fieldInit.sField); // 0
System.out.println("int : " + fieldInit.iField); // 0
System.out.println("long : " + fieldInit.lField); // 0
System.out.println("==================");
System.out.println("float : " + fieldInit.fField); // 0.0
System.out.println("double : " + fieldInit.dField); // 0.0
System.out.println("==================");
System.out.println("char : " + fieldInit.cField); // "\"u(유니코드(숫자)로 떠서 결과가 출력이 안됨)
System.out.println("boolean : " + fieldInit.boField); // false
System.out.println("==================");
System.out.println("String : " + fieldInit.strField); // null
System.out.println("int[] : " + fieldInit.arrField); // null
}
}
결과
byte : 0
short : 0
int : 0
long : 0
==================
float : 0.0
double : 0.0
==================
char :
boolean : false
==================
String : null
int[] : null
Verify
Member
package chap06.sec02.Verify;
/**
* packageName : chap06.sec02.Verify
* fileName : Member
* author : L.DH
* date : 2023-09-20
* description : 회원 정보 클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-20 L.DH 최초 생성
*/
public class Member {
String name; // 회원명
String id; // 회원 id
String password; // 회원 패스워드
int age; // 회원 나이
}
MemberApplication
package chap06.sec02.Verify;
/**
* packageName : chap06.sec02.Verify
* fileName : MemerApplication
* author : L.DH
* date : 2023-09-20
* description : 실행 클래스 (main())
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-20 L.DH 최초 생성
*/
public class MemerApplication {
/**
* Member 객체를 생성하고 속성에 아래의 값으로 저장한 후 속성의 값을 출력하세요.
* 결과 :
* 이름 : 최하얀
* id : 23
* @param args
*/
public static void main(String[] args) {
// 객체 생성
// 사용법 : 클래스명 객체변수명 = new 생성자함수()
Member member = new Member();
// 속성 정의
member.name = "최하얀";
member.id = "23";
// 속성 값 결과 출력
System.out.println("이름 : " + member.name);
System.out.println("id : " + member.age);
}
}
결과
이름 : 최하얀
id : 0
Sec 03
Exam 01
Car
package chap06.sec03.exam01;
/**
* packageName : chap06.sec03.exam01
* fileName : Car
* author : GGG
* date : 2023-09-20
* description : 생성자 함수
* 요약 :
* 자바소스 (.java ) => 컴파일러(컴파일) => (.class) => 실행
* 기본 생성자 : 생성자가 1개도 없을 경우 클래스 선언(정의) 시
* 컴파일러에 의해 자동으로 추가되는 생성자
* (만약에 있을 경우(2nd 생성자 등) 자동 추가되지 않음)
* 오버로딩 : 함수의 이름이 같은 경우라도 에러를 발생시키지 않고 정의하게 하는 기능
* (주로 함수의 이름이 같고, 매개변수 자료형/개수/순서가 다른 경우에 오버로딩이 됨)
*
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class Car {
// TODO: 속성(필드), 생성자함수, 함수(메소드)
// 속성
String col; // 자동차 색깔
int ccNum; // 자동차 배기량
// TODO: 생성자 함수
// 기본 생성자 : 만들지 않아도 컴파일러가 자동으로 1개 생성함(생략 가능)
// 1) 생성자함수 이름은 클래스명과 같음
// 2) 생성자함수는 여러개를 만들수 있음 : 생성자 오버로딩(overloading)
// 사용법 : 클래스명(){}
Car(){};
// TODO: 2nd 생성자 함수 : 개발자가 정의하기 나름(매개변수 있고 자유롭게 정의 가능)
// **) 생성자 오버로딩 : 같은 이름을 가진 함수를 여러개 정의할 수 있게 하는 기능 (객체지향언어만 가능)
Car(String color, int cc) {
// TODO: 생성자 함수의 역할 : 속성의 초기화를(변수에 값을 처음 넣어두는 행위) 담당
col = color;
ccNum = cc;
}
}
Car
package chap06.sec03.exam01;
/**
* packageName : chap06.sec03.exam01
* fileName : CarApplication
* author : GGG
* date : 2023-09-20
* description : 실행 클래스
* 요약 :
*
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class CarApplication {
public static void main(String[] args) {
// 객체 생성 :
// 사용법: 클래스명 객체변수명 = new 생성자함수();
// 2nd 생성자함수 : Car(String color, int cc)
Car car = new Car("검정", 3000);
Car car2 = new Car("흰색", 2000);
// 결과 출력 : 1st 자동차(car)
System.out.println(car.ccNum);
System.out.println(car.col);
// 결과 출력 : 2nd 자동차(car2)
System.out.println(car2.ccNum);
System.out.println(car2.col);
}
}
결과
3000
검정
2000
흰색
Exam 02
korean
package chap06.sec03.exam02;
/**
* packageName : chap06.sec03.exam02
* fileName : Korean
* author : GGG
* date : 2023-09-20
* description : 한국인 클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class Korean {
// TODO: 속성, 생성자함수, 함수(메소드)
// 속성
String name; // 이름
String ssn; // 주민번호
// 생성자함수
Korean(){}; // 기본생성자
Korean(String strName, String strSsn){
// 생성자의 역할 : 속성에 값을 처음에 넣어 두는 행위
name = strName; // 매개변수 이름 값을 속성에 저장
ssn = strSsn; // 매개변수 주민번호 값을 속성에 저장
}
}
koreanApplication
package chap06.sec03.exam02;
/**
* packageName : chap06.sec03.exam02
* fileName : KoreanApplication
* author : GGG
* date : 2023-09-20
* description : 실행 클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class KoreanApplication {
/**
* 한국인 객체를 생성하고 매개변수 2개짜리 생성자를 이용해서 속성을 초기화하세요.
* 초기화 한 결과를 출력하세요
* TODO: 힌트 : Korean 클래스 속성 : String name, String ssn
* 객체의 사용 : 객체변수.속성명
* // 결과 :
* // k1.name : 박자바 (문자열)
* // k1.ssn : 011225-1234567 (문자열)
* // k2.name : 김자바
* // k2.ssn : 930525-0654321
*/
public static void main(String[] args) {
// 객체 생성
// 사용법: 클래스명 객체변수명 = new 생성자함수(변수1, 변수2);
Korean k1 = new Korean("박자바", "011225-1234567");
Korean k2 = new Korean("김자바", "930525-0654321");
// 결과 각각 출력 : sout , 줄복사 : ctrl + d
System.out.println("k1.name : " + k1.name);
System.out.println("k1.ssn : " + k1.ssn);
System.out.println("k2.name : " + k2.name);
System.out.println("k2.ssn : " + k2.ssn);
}
}
결과
k1.name : 박자바
k1.ssn : 011225-1234567
k2.name : 김자바
k2.ssn : 930525-0654321
Exam 03
car
package chap06.sec03.exam03;
/**
* packageName : chap06.sec03.exam03
* fileName : Car
* author : GGG
* date : 2023-09-20
* description : 생성자 오버로딩
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class Car {
// TODO: 속성(필드), 생성자함수, 함수(메소드)
// 속성
String company = "현대자동차"; // 제조사
String model; // 자동차 모델(SUV, 세단)
String color; // 자동차 색깔
int maxSpeed; // 최고속도
// 기본 생성자
public Car(){}
// 매개변수 1개짜리 생성자
public Car(String model){
// TODO: this (객체 자기자신을 의미하는 객체변수)
// 객체의 사용 : 객체변수.속성명
this.model = model;
}
// 매개변수 2개짜리 생성자
public Car(String model, String color) {
this.model = model;
this.color = color;
}
public Car(String model, String color, int maxSpeed) {
this.model = model;
this.color = color;
this.maxSpeed = maxSpeed;
}
}
carApplication
package chap06.sec03.exam03;
/**
* packageName : chap06.sec03.exam03
* fileName : CarApplication
* author : GGG
* date : 2023-09-20
* description :
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class CarApplication {
public static void main(String[] args) {
// 객체 생성 : 모든 생성자 이용하기
Car car1 = new Car(); // 기본 생성자
Car car2 = new Car("자가용"); // 매개변수 1개짜리 생성자
Car car3 = new Car("자가용","빨강"); // 매개변수 2개짜리 생성자
Car car4 = new Car("자가용","빨강",200); // 매개변수 3개짜리 생성자
// 결과 출력 : 2개
System.out.println(car1.color);
System.out.println(car1.company);
System.out.println(car1.maxSpeed);
System.out.println(car1.model);
System.out.println(car4.color);
System.out.println(car4.company);
System.out.println(car4.maxSpeed);
System.out.println(car4.model);
}
}
결과
null
현대자동차
0
null
빨강
현대자동차
200
자가용
Verify
exam02
Member
package chap06.sec03.verify.exam02;
/**
* packageName : chap06.sec03.verify.exam02
* fileName : Member
* author : GGG
* date : 2023-09-20
* description : 회원 클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class Member {
String id; // 회원 id
String name; // 회원명
// 생성자 : 2
public Member(String name, String id) {
this.id = id;
this.name = name;
}
}
memberApplication
package chap06.sec03.verify.exam02;
/**
* packageName : chap06.sec03.verify.exam02
* fileName : MemberApplication
* author : GGG
* date : 2023-09-20
* description : 실행 클래스(main)
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class MemberApplication {
/**
* Member 객체를 생성하고 싶습니다. 생성자에서 name 속성과 id 속성을
* 초기화 할 수 있도록 Member 클래스를 작성해 보세요.
* @param args
*/
public static void main(String[] args) {
Member member = new Member("홍길동", "hong");
System.out.println("name :" + member.name);
System.out.println("id :" + member.id);
}
}
결과
name :홍길동
id :hong
exam03
Board
package chap06.sec03.verify.exam03;
/**
* packageName : chap06.sec03.verify.exam03
* fileName : Board
* author : GGG
* date : 2023-09-20
* description : 모델 클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class Board {
// TODO: 속성, 생성자, 함수
// 속성 정의
String title; // 제목
String content; // 본문
String writer; // 작성자
// 생성자
public Board(String title) {
this.title = title;
}
public Board(String title, String content) {
this.title = title;
this.content = content;
}
public Board(String title, String content, String writer) {
this.title = title;
this.content = content;
this.writer = writer;
}
}
BoardApplication
package chap06.sec03.verify.exam03;
/**
* packageName : chap06.sec03.verify.exam03
* fileName : BoardApplication
* author : GGG
* date : 2023-09-20
* description :
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class BoardApplication {
public static void main(String[] args) {
Board board = new Board("제목");
Board board2 = new Board("제목", "내용");
Board board3 = new Board("제목", "내용", "작가");
System.out.println("title :" + board.title);
System.out.println("title2 :" + board2.title);
System.out.println("content2 :" + board2.content);
System.out.println("title3 :" + board3.title);
System.out.println("content3 :" + board3.content);
System.out.println("content3 :" + board3.writer);
}
}
결과
title :제목
title2 :제목
content2 :내용
title3 :제목
content3 :내용
content3 :작가
Sec 04
exam 01
Calculator
package chap06.sec04.exam01;
/**
* packageName : chap06.sec04.exam01
* fileName : Calculator
* author : GGG
* date : 2023-09-20
* description : 모델 클래스
* 함수(멤버 메소드)
* 요약 :
* MVC 디자인 패턴 : M(Model), V(View), C(Controller)
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class Calculator {
// TODO: 속성(필드), 생성자함수, 함수(메소드)
// 속성 생략 : 사물이나 사람의 특징을 나타냄
// 생성자 생략
// TODO: 함수 : 사물이나 사람의 동작을(행동) 나타냄
/**
* 전원 켜는 함수 : 리턴값 없이 만듬 : void
* 사용법: 접근제어자 리턴자료형 함수명(매개변수1, ... 매개변수n){}
* 접근제어자 : public(공용,*), private(개인,*), default(생략), protected
*/
void powerOn(){
System.out.println("전원을 켭니다.");
}
/**
* 더하기 함수 : 리턴값이 있는 함수
*/
int plus(int x, int y) {
int result = x + y;
return result; // 결과 내보내기의 자료형(정수:int)
}
/**
* 나눗셈 함수 : calculator.divide(10, 4)
*/
double divide(int x, int y) {
double result = (double) x / (double) y;
return result;
}
/**
* 전원 끄는 함수 : calculator.powerOff() , "전원을 끕니다."
*/
void powerOff() {
System.out.println("전원을 끕니다.");
}
}
CalculatorApplication
package chap06.sec04.exam01;
/**
* packageName : chap06.sec04.exam01
* fileName : CalculatorApplication
* author : GGG
* date : 2023-09-20
* description : 실행 클래스(main)
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class CalculatorApplication {
public static void main(String[] args) {
// 객체 생성
// 사용법: 클래스명 객체변수명 = new 생성자함수();
Calculator calculator = new Calculator();
// TODO: 1) 전원을 On
calculator.powerOn();
// TODO: 2) 더하기 계산
// 리턴값이 있는 함수를 사용하는 전용 패턴(형태)
int result = calculator.plus(5, 6); // 11
// 결과 출력 : sout
System.out.println(result);
// TODO: 예제 3) 계산기에 나눗셈 기능을 추가하려고 합니다.
// 나눗셈을 추가하고 결과를 실행하세요
double result2 = calculator.divide(10, 4);
System.out.println(result2);
// TODO: 예제 4) 추가 기능을 요청해서 추가했습니다.
// 계산기를 끄는 기능을 추가해 주세요
calculator.powerOff(); // "전원을 끕니다."
}
}
결과
전원을 켭니다.
11
2.5
전원을 끕니다.
exam 02
computer
package chap06.sec04.exam02;
/**
* packageName : chap06.sec04.exam02
* fileName : Computer
* author : GGG
* date : 2023-09-20
* description : 컴퓨터 모델 클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class Computer {
// TODO: 속성 , 생성자함수, 함수(메소드)
// 속성 생략
// 생성자함수 생략
// TODO : 함수
// 배열을 함수의 매개변수로 사용하면 장점이 있음
// 실행시에 함수의 매개변수로 1개를 넣을지, 2개를 넣을지 정해지지 않았을때 사용
int sum1(int[] value) {
int sum = 0;
// 매개변수 배열의 개수까지 모두 더하는 로직
for (int i = 0; i < value.length; i++) {
sum = sum + value[i]; // 누적합
}
return sum;
}
// TODO: 예제) 기능 추가 : 매개변수의 모든 값을 곱하는 함수 를 만들어 보세요
// 함수명 : multi()
int multi(int[] value) {
int mul = 1; // 초기값
// 매개변수 배열의 개수까지 모두 더하는 로직
for (int i = 0; i < value.length; i++) {
mul = mul * value[i]; // 누적합
}
return mul;
}
// TODO: 자바의 새로운 기능 : ... 연산자
// ...value : 매개변수의 각각의 변수를 배열로 만들어 줌
int sum2(int ...value) {
int sum = 0;
// 매개변수 배열의 개수까지 모두 더하는 로직
for (int i = 0; i < value.length; i++) {
sum = sum + value[i]; // 누적합
}
return sum;
}
}
computerApplication
package chap06.sec04.exam02;
/**
* packageName : chap06.sec04.exam02
* fileName : ComputerApplication
* author : GGG
* date : 2023-09-20
* description : 실행클래스 (main)
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class ComputerApplication {
public static void main(String[] args) {
// 객체 생성
Computer computer = new Computer();
// 배열 정의
// TODO: 더하기 함수 실행
int[] value1 = {1,2,3};
int result1 = computer.sum1(value1);
System.out.println("result1 : " + result1);
int[] value2 = {1,2,3,4,5};
int result2 = computer.sum1(value2);
System.out.println("result2 : " + result2);
// TODO: 곱하기 함수 실행
int[] value3 = {1,2,3};
int result3 = computer.multi(value3);
System.out.println("result3 : " + result3); // 6
// TODO: 새로운 ...연산자 사용하기
int result4 = computer.sum2(1,2,3);
System.out.println("result4 : " +result4);
int result5 = computer.sum2(1,2,3,4,5,6);
System.out.println("result5 : " + result5);
}
}
결과
result1 : 6
result2 : 15
result3 : 6
result4 : 6
result5 : 21
exam 03
car
package chap06.sec04.exam03;
/**
* packageName : chap06.sec04.exam03
* fileName : Car
* author : GGG
* date : 2023-09-20
* description :
* 요약 : 자동차 모델 클래스
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
/**
* // gas 체크해서 차가 출발을 합니다.
* // gas 있으면 "출발합니다" 출력하고,
* // .run() 실행 // gas--; 감소시킴 반복문 종료
* // 다시 gas > 0 인지 확인해서 "gas를 주입할 필요가 없습니다"
* // 아니면 "gas"를 주입하세요"
* // 결과 :
* // gas가 있습니다.
* // 출발합니다.
* // 달립니다.(gas잔량:5)
* // 달립니다.(gas잔량:4)
* // 달립니다.(gas잔량:3)
* // 달립니다.(gas잔량:2)
* // 달립니다.(gas잔량:1)
* // 멈춥니다.(gas잔량:0)
* // gas가 없습니다.
* // gas를 주입하세요.
*/
public class Car {
// TODO: 속성(필드), 생성자함수, 함수(메소드)
int gas; // 기름
// 속성에 값을 넣지 않고 1) 생성자를 이용해서 값을 넣거나
// 2) setter 함수 이용해서 값을 수정하거나
// 사용법: void set속성명(int 속성명) { this.속성명 = 속성명;}
// 역할 : 속성에 값을 저장/수정하는 함수
// 자동화기능 : alt + insert => setter 선택
void setGas(int gas) {
this.gas = gas;
}
/**
* gas가 남았는지 확인하는 함수
*/
boolean isLeftGas() {
if(gas == 0) {
System.out.println("gas 가 없습니다. ");
return false;
}else {
System.out.println("gas 가 있습니다.");
return true;
}
}
/**
* 자동차를 달리게 하는 함수 : gas 가 1씩 감소함
* 계속 달리다가 gas == 0 순간 중단
*/
void run () {
while (true) {
if(gas > 0) {
System.out.println("달립니다.(gas잔량:" + gas + ")");
gas = gas - 1;
} else {
System.out.println("멈춥니다..(gas잔량:" + gas + ")");
return; // break 동일한 효과(강제 중단)
}
}
}
}
carApplication
package chap06.sec04.exam03;
/**
* packageName : chap06.sec04.exam03
* fileName : CarApplication
* author : GGG
* date : 2023-09-20
* description : 실행 클래스 (main)
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class CarApplication {
public static void main(String[] args) {
// 객체 생성
Car car = new Car();
// TODO: 1) 기름 넣기 : 5
car.setGas(5);
// TODO: 2) 남아 있는 기름 확인 : true , 없으면 false
boolean gasState = car.isLeftGas();
// TODO: 3) 자동차 출발
if(gasState) {
System.out.println("출발합니다.");
car.run(); // 출발
}
// TODO: 4) 기름 확인
if(car.isLeftGas() == true) {
System.out.println("gas 를 넣을 필요가 없습니다.");
} else {
System.out.println("gas 를 주입하세요");
}
}
}
결과
gas 가 있습니다.
출발합니다.
달립니다.(gas잔량:5)
달립니다.(gas잔량:4)
달립니다.(gas잔량:3)
달립니다.(gas잔량:2)
달립니다.(gas잔량:1)
멈춥니다..(gas잔량:0)
gas 가 없습니다.
gas 를 주입하세요
exam 04
calcurator
package chap06.sec04.exam04;
/**
* packageName : chap06.sec04.exam04
* fileName : Calculator
* author : GGG
* date : 2023-09-20
* description : 계산기 모델 클래스 (덧셈, 평균)
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class Calculator {
// TODO: 속성, 생성자함수, 함수(메소드)
// 속성생략
// 생성자생략
// TODO: 함수 : 덧셈, 평균, 계산실행
// 사용법: 접근제한자 리턴자료형 함수명(매개변수...){}
/**
* 덧셈 함수
* @param x
* @param y
* @return
*/
int plus(int x, int y) {
int result = x + y;
return result;
}
/**
* 평균 구하는 함수
* @param x
* @param y
* @return
*/
double avg(int x, int y) {
// TODO: 자신의 클래스 내에서는 자유롭게 함수를 사용할 수 있음
int sum = plus(x, y); // 합 구하는 함수 호출
double result = (double) sum / 2; // 평균
return result;
}
/**
* 자신의 계산결과를 출력하는 함수
*/
void println(String message){
System.out.println("계산결과 :" + message);
}
/**
* 평균과 계산결과를 출력하는 실행 함수
*/
void execute() {
// 1) 평균 함수
double result = avg(7, 10);
println(result + "");
}
}
calcuratorApplication
package chap06.sec04.exam04;
/**
* packageName : chap06.sec04.exam04
* fileName : CalculatorApplication
* author : GGG
* date : 2023-09-20
* description : 실행 클래스(main)
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class CalculatorApplication {
public static void main(String[] args) {
// 객체 생성
Calculator calculator = new Calculator();
calculator.execute(); // 실행 함수
}
}
결과
계산결과 :8.5
exam 05
Car
package chap06.sec04.exam05;
/**
* packageName : chap06.sec04.exam05
* fileName : Car
* author : GGG
* date : 2023-09-20
* description :
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class Car {
// TODO: 속성, 생성자함수, 함수(메소드)
int speed; // 자동차 속도
/**
* 현재 속성의 값을 구하는 함수 : getter 함수
* 사용법: 리턴자료형 get속성명(){ return 속성명; }
*/
// 자동화 기능 : alt + insert => getter 선택
public int getSpeed() {
return speed;
}
/**
* 키를 돌립니다. 출력 함수
*/
void keyTurnOn() {
// 결과 출력 : sout
System.out.println("키를 돌립니다.");
}
/**
* 달립니다. 5개 출력 + 속도 함수
*/
void run() {
// 반복문 5번 실행 : 10씩 증가
for (int i = 10; i <=50 ; i=i+10) {
// 속성 = 10씩 증가
speed = i;
System.out.println("달립니다.(시속:" + speed + "km/h)");
}
}
}
CarApplication
package chap06.sec04.exam05;
/**
* packageName : chap06.sec04.exam05
* fileName : CarApplication
* author : GGG
* date : 2023-09-20
* description : 실행클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
/**
* // 결과 :
* // 키를 돌립니다.
* // 달립니다.(시속:10km/h)
* // 달립니다.(시속:20km/h)
* // 달립니다.(시속:30km/h)
* // 달립니다.(시속:40km/h)
* // 달립니다.(시속:50km/h)
* // 현재 속도: 50km/h
*/
public class CarApplication {
public static void main(String[] args) {
Car car = new Car();
car.keyTurnOn(); // 키를 돌립니다. 출력
car.run(); // 5개의 달립니다.
int speed = car.getSpeed(); // 현재 속도 값을 리턴 (getter 함수 : get속성명())
System.out.println("현재속도:" + speed + "km/h");
}
}
결과
키를 돌립니다.
달립니다.(시속:10km/h)
달립니다.(시속:20km/h)
달립니다.(시속:30km/h)
달립니다.(시속:40km/h)
달립니다.(시속:50km/h)
현재속도:50km/h
exam 06
Calculator
package chap06.sec04.exam06;
/**
* packageName : chap06.sec04.exam06
* fileName : Calculator
* author : GGG
* date : 2023-09-20
* description : 계산기 모델
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class Calculator {
// TODO: 속성, 생성자함수, 함수
//함수
/**
* 정사각형 넓이 구하는 함수 : areaRectangle(10)
* 사용법: 접근제한자 리턴자료형
*/
double areaRectangle(double width) {
return width * width;
}
/**
* 직사각형 넓이 구하는 함수 : areaRectangle(10, 20)
*/
double areaRectangle(double width, double height) {
return width * height;
}
}
CalculatorApplication
package chap06.sec04.exam06;
/**
* packageName : chap06.sec04.exam06
* fileName : CalculatorApplication
* author : GGG
* date : 2023-09-20
* description : 실행 클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class CalculatorApplication {
public static void main(String[] args) {
Calculator calculator = new Calculator();
// 함수의 오버로딩을 이용한 예제
// 정사각형의 넓이 구하기(한변의 길이(가로) * 한변의 길이(가로))
double result1 = calculator.areaRectangle(10);
// 직사각형 넓이 구하기(가로 * 세로)
double result2 = calculator.areaRectangle(10, 20);
// 결과 출력
System.out.println("정사각형 넓이 :" + result1);
System.out.println("직사각형 넓이 :" + result2);
}
}
결과
정사각형 넓이 :100.0
직사각형 넓이 :200.0
Verify
exam03
MemberService
package chap06.sec04.verify.exam03;
/**
* packageName : chap06.sec04.verify.exam03
* fileName : MemberService
* author : GGG
* date : 2023-09-20
* description :
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class MemberService {
boolean login(String id, String password) {
if (id.equals("hong") && password.equals("12345")) {
return true;
} else {
return false;
}
}
void logout(String id){
System.out.println( id + "이 로그아웃 되었습니다.");
}
}
MemberServiceApplication
package chap06.sec04.verify.exam03;
/**
* packageName : chap06.sec04.verify.exam03
* fileName : MemberServiceApplication
* author : GGG
* date : 2023-09-20
* description :
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
/**
* //MemberService 클래스에 login() 함수와 logout() 함수를 선언하려고 합니다. 클래스를 작성하세요.
* // login() 함수를 호출할 때에는 매개값으로 id와 password를 제공하고,
* logout() 함수는 id만 매개값으로 제공합니다.
* // MemberService 클래스와 login(), logout() 함수를 선언해 보세요.
* // login() 함수는 매개값 id가 "hong", 매개값 password 가 "12345" 일 경우에만 true 로 리턴하고,
* // 그 이외의 값일 경우에는 false 를 리턴하세요.
* // logout() 함수의 내용은 "hong이 로그아웃 되었습니다."가 출력되도록 하세요.
* // 리턴타입 : boolean, 함수명 : login, 매개변수타입 : id(String), password(String)
* // 리턴타입 : void, 함수명 : logout, 매개변수타입 : id(String)
* // 결과 :
* // 로그인 되었습니다.
* // hong이 로그아웃 되었습니다.
*/
public class MemberServiceApplication {
public static void main(String[] args) {
MemberService memberService = new MemberService();
boolean result = memberService.login("hong", "12345");
if(result) {
System.out.println("로그인 되었습니다.");
memberService.logout("hong");
} else {
System.out.println("id 또는 password가 올바르지 않습니다.");
}
}
}
결과
로그인 되었습니다.
hong이 로그아웃 되었습니다.
exam04
Printer
package chap06.sec04.verify.exam04;
/**
* packageName : chap06.sec04.verify.exam04
* fileName : Printer
* author : GGG
* date : 2023-09-20
* description : 프린터 모델 클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
public class Printer {
// TODO: 속성, 생성자함수 , 함수(메소드)
// 속성, 생성자함수 생략
// 함수 : 오버로딩 기능
// .println(10), .println(true), .println(5.7), .println("홍길동")
static void println(int value){
System.out.println("공유함수(int) :" + value);
}
static void println(boolean value){
System.out.println("공유함수(boolean) :" + value);
}
static void println(double value){
System.out.println("공유함수(double) :" + value);
}
static void println(String value){
System.out.println("공유함수(String) :" + value);
}
}
PrinterApplication
package chap06.sec04.verify.exam04;
/**
* packageName : chap06.sec04.verify.exam04
* fileName : PrinterApplication
* author : GGG
* date : 2023-09-20
* description :
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-09-20 GGG 최초 생성
*/
/**
* TODO: 힌트 : static 함수 정의하기
* static void 함수명(자료형 매개변수) { sout + 매개변수 ; }
* 정적함수(공유함수, 전역함수) : 프로그램 상에 1개만 존재
* 일반적으로 객체/함수를 만들면 여러개의 복사본으로 객체/함수가 만들어 질 수 있음
* (스택방(기본자료형 값) / 힙방(참조자료형 값), 메소드방(정적함수/정적변수))
* => 자바 메모리 관리 : 가비지 컬렉션 (메모리 회수하는 역할하는 프로세스)
* => 정적(공유,전역) 함수/변수 : 가비지 컬렉션 대상이 아니어서 메모리가 회수되지 않음
* (최소화해서 사용해야함)
* => 사용법(정의) : static 리턴자료형 함수명(자료형 매개변수) { }
* => 사용법(사용) : 클래스명.함수명();
* // 결과 :
* // 공유함수(int) :10
* // 공유함수(boolean) :true
* // 공유함수(double) :5.7
* // 공유함수(String) :홍길동
*/
public class PrinterApplication {
public static void main(String[] args) {
// 공유함수 오버로딩 예제
// 공유함수 호출하는 방법
// 사용법 : 클래스명.공유함수명();
Printer.println(10);
Printer.println(true);
Printer.println(5.7);
Printer.println("홍길동");
}
}
결과
공유함수(int) :10
공유함수(boolean) :true
공유함수(double) :5.7
공유함수(String) :홍길동
'HTML > Java' 카테고리의 다른 글
[Java]조건문(if, switch), 반복문(for, while), 기본 자료형과 참조 자료형, 배열 (1) | 2023.09.19 |
---|---|
[Java]자바 기초 (변수, 연산자, 자료형, 자료형 변환, 스캐너, 입력, 출력) (1) | 2023.09.18 |
[Java]인텔리제이 단축키 (0) | 2023.09.18 |
[Java]인텔리제이 설치 & 설정 (0) | 2023.09.15 |