반응형
package chap06.sec04.exam01;
/**
* packageName : chap06.sec04.exam01
* fileName : Calculator
* author : GGG
* date : 2023-09-20
* description : 모델 클래스
* 함수(멤버 메소드)
* 요약 :
* MVC 디자인 패턴 : M(Model), V(View), C(Controller)
* TODO : <요약>
* 함수형태 :
* 접근제어자 리턴자료형 함수명(매개변수1...., 매개변수 n) {실행문 ;}
* ex) public void sample(int a, String b, double c) { }
* 접근제어자 : public(공용), default(생략, package 내에서는 사용가능) 등...
* 함수이름 명명법 : 낙타표기법(카멜표기법), 첫 글자는 소문자, 단어 + 단어는 대문자
* 매개변수 : 함수 실행시 전달되는 데이터
* 리턴자료형 : 함수가 실행된 이후 결과값을 내보내기 할 떄 사용
* 리턴값이 없는 함수 형태 호출: 객체변수.함수()
* 리턴값이 있는 함수 형태 호출: 자료형 변수명 = 객체변수.함수()
* <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("전원을 켭니다.");
}
void powerOff(){
System.out.println("전원을 끕니다.");
}
/**
* 더하기 함수 : 리턴값이 있는 함수
*/
int plus(int x, int y){
int result = x + y;
return result; // 결과 내보내기의 자료형이(정수:int)
}
/**
* 나누기 함수
*/
double divide(int x, int y){
double result = (double) x / y;
return result;
}
}
package chap06.sec04.exam01;
/**
* packageName : chap06.sec04.exam01
* 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();
// TODO: 1) 전원을 on
calculator.powerOn();
// TODO: 2) 덧셈계산
// 리턴값이 있는 함수를 사용하는 전용 패턴(형태)
int result = calculator.plus(5,6);
System.out.println(result);
// TODO: 예제 3) 계산기에 나눗셈 기능을 추가하려고 합니다.
// 나눗셈을 추가하고 결과를 실행하세요
double result2 = calculator.divide(10, 4);
System.out.println(result2);
// TODO : 예제 4) 추가 기능을 요청해서 추가했습니다.
// 계산기를 끄는 기능을 추가해주세요.
calculator.powerOff();
}
}
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 += value[i]; // 누적합
}
return sum;
}
// TODO: 기능추가 : 매개변수의 모든 값을 곱하는 함수를 만들어보세요
int multi(int[] value) {
int mul = 1;
for (int i = 0; i < value.length; i++) {
mul *= value[i];
}
return mul;
}
// TODO: 자바의 새로운 기능 : ... 연산자
// ...value : 매개변수의 각각의 변수를 배열로 만들어 줌
int sum2(int... value) {
int sum = 0;
// 매개변수 배열의 개수까지 모두 더하는 로직
for (int i = 0; i < value.length; i++) {
sum += value[i]; // 누적합
}
return sum;
}
}
package chap06.sec04.exam02;
import java.util.ArrayList;
import java.util.List;
/**
* 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();
// 배열정의
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);
int result5 = computer.sum2(1, 2, 3, 4, 5);
System.out.println(result5);
}
}
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 최초 생성
*/
public class Car {
// gas 체크해서 차가 출발을 합니다.
// gas 있으면 "출발합니다" 출력하고,
// .run() 실행 // gas--; 감소시킴 반복문 종료
// 다시 gas > 0 인지 확인해서 "gas를 주입할 필요가 없습니다"
// 아니면 "gas"를 주입하세요"
// 결과 :
// gas가 있습니다.
// 출발합니다.
// 달립니다.(gas잔량:5)
// 달립니다.(gas잔량:4)
// 달립니다.(gas잔량:3)
// 달립니다.(gas잔량:2)
// 달립니다.(gas잔량:1)
// 멈춥니다.(gas잔량:0)
// gas가 없습니다.
// gas를 주입하세요.
int gas; // 연료
// 속성에 값을 넣지 않고, 1) 생성자를 이용해서 값을 넣거나
// 2) setter 함수를 이용해서 값을 수정하거나
// 사용법 : void set속성명(int 속성명){ this.속성명 = 속성명; }
// 역할 : 속성에 값을 저장, 수정하는 함수
// 자동화 기능 : alt + insert
public 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 동일한 효과(강제중단)
}
}
}
}
package chap06.sec04.exam03;
/**
* packageName : chap06.sec04.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 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를 주입하세요");
}
}
}
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 + "");
}
}
package chap06.sec04.exam04;
/**
* packageName : chap06.sec04.exam04
* 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();
calculator.execute(); // 실행함수
}
}
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)");
}
}
}
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 최초 생성
*/
public class CarApplication {
public static void main(String[] args) {
Car car = new Car();
car.keyTurnOn(); // 키를 돌립니다. 출력
car.run(); // 5개의 달립니다.
int speed = car.getSpeed(); // 현재 속도 값을 리턴
System.out.println("현재속도:" + speed + "km/h");
}
}
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;
}
}
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);
}
}
반응형