국비학원/과제 (Test)

16일차 과제 (Test) - java

mikan- 2023. 5. 15. 17:37

1.Rect.java,RectHandling.java 클래스에 캡슐화를 적용하시오.
   RectHandling.java에 작성
  
1) x,y값은 음수를 받을 수 없도록 설정=>양수만 입력이 가능
2) Setter,Getter Method를 작성할것.

===============================
2.ThreeTest.java로 저장할것.

세개의 값을 입력받아서 최대값을 구해주는 프로그램작성

  int x,y,z or int a,b,c

  12,4,19 

 최대값은 19 입니다.  =>main() 작성

//(단 getMaxPrint메서드를 작성해서 구현할 것.) =>부하직원

 

# 내 답

public class Rect1 {
	
	private int su;
	
	public void setSu(int x, int y) {
		if((x > 0) && (y > 0)) {
			su = x;
			su = y;
		} else {
			System.out.println("둘 중 하나라도 음수면 안됨");
			System.out.println("=============");
		}
		
	}
	
	public int getSu() {
		return su;
	}
}

public class RectHandling {
	public static void main(String[] args) {
		Rect1 rt = new Rect1();
		
		rt.setSu(3, 1);
		System.out.println(rt.getSu());
		
		rt.setSu(3, -1);
		rt.setSu(-1, 3);
	}
}

 

# 강사님 답

// 추상화 -> 직사각형의 면적(객체)를 공통속성, 공통기능 -> 새로운 자료형
class Rect {
	// 1. 공통멤버변수
	private int x;
	private int y = 10; // 가로, 세로
	private int area; // 면적(사각형의 넓이) -> double area; // 삼각형 또는 원의 면적

	public void setX(int a) { // int a = 매개변수
		if (a < 0) {
			System.out.println("X값은 음수 입력 불가");
			x = 20; // 값을 입력을 못받기 때문에 초기값 설정
			return;
		}
		x = a; // 멤버변수 = 매개변수
				// else 안쓰면 return 해서 나가야됨
	}

	public void setY(int b) {
		if (b < 0) {
			System.out.println("Y의 값은 음수 입력 불가");

		} else {
			y = b;
		}
	}

	// public 반환형 getXXX() { return 꺼내올 멤버변수명;}
	public int getX() {
		return x;
	}

	public int getY() {
		return y;
	}

	// 2. 공통기능(메소드) 면적을 구하는 메소드
	// 1) 매개변수X, 반환값X : 단순, 반복 -> 똑같은 문장 여러번 반복
	void print() {
		System.out.println("x의 값은 = " + x);
		System.out.println("y의 값은 = " + y);
		System.out.println("x * y = " + (x * y));
	}
	
	// 2) 매개변수O, 반환값X : 입력 -> 출력, 계산, 저장
	void area(int a, int b) {
		x = a;
		y = b;
		System.out.println("x * y = " + (x * y));
	}
	
	// 3) 매개변수O, 반환값O : 계산, 웹프로그래밍 방식
	// 반환값 : 호출되는 메소드가 계산한 결과값 -> 메소드 자체에서 처리X
	//			호출하는 caller에서 처리하는 계산값 : 보고O 반환값O
	int area2(int a, int b) {
		int result = a * b;
		return result; // return 계산 결과값(변수) or 수식 or 객체
	}

}

public class RectHandling_Answer {

	public static void main(String[] args) {

		Rect r = new Rect(); // 객체 생성(계산할 공간을 생성)
		System.out.println("r : " + r);

		//r.x = 10; // 2. 객체명.멤버변수 -> 값(X)
		r.setX(-20); // x = 20
		r.setY(30); // y = 30;
		
		// 3. 객체명.호출할 메소드명() or (~)
		r.print();
		
		// 4. 매개변수를 전달 -> 계산 -> 출력
		r.area(20, 40); // area라는 메소를 호출 하면서 매개변수 20,40을 전달
		
		// 5. 반환값이 있는 메소드 호출
		// 형식) 반환받는 변수명 = 객체명.호출할 메소드명
		int reply = r.area2(60, 40);
		System.out.println("계산받은 결과값(reply) : " + reply);
		System.out.println("==================================");
		System.out.println("r.area2(30, 40) : " + r.area2(30, 40));

		
	}

}
// 3개의 값을 입력받아서 최대값을 구하기
public class ThreeTest_Answer {

	public static void main(String[] args) {
		int a = 12;
		int b = 4;
		int c = 19;
		// int max; // 최대값
		
		/*//    12 > 4(참)
		max = (a > b)?a : b;	// max = 12;
		//     12 > 19(거짓) 이므로 c가 더큼
		max = (max > c)?max:c;	// max = 19;
		System.out.println("max : " + max);*/
		ThreeTest_Answer tt = new ThreeTest_Answer();
		tt.getMaxPrint(a, b, c);
		tt.getMaxPrint(20, 30, 40);
		tt.getMaxPrint(40, 20, 30);
		System.out.println("==================");
		System.out.println("tt.getMaxPrint2(34, 12, 99)" +tt.getMaxPrint2(34, 12, 99));
	}
	
	void getMaxPrint(int a, int b, int c) {
		int max = (a > b)?a : b;
		max = (max > c)?max:c;
		System.out.println("max : " + max);
	}
	
	// 반환값O 메소드 작성
	int getMaxPrint2(int a, int b, int c) {
		int max = (a > b)?a : b;
		max = (max > c)?max:c;
		return max;
	}
}