Java/Excercise

generic ch05 Point

낭구리 2021. 9. 6. 16:57
package ch05;

public class Point<X, Y> {
	// 클래스나 int , double등 여러 자료형으로 들어와서 <X,Y> 로표현
	// X와 Y 좌표값을 받는 클래스
	// 제네릭을 사용
	private X x;
	private Y y;

	public Point(X x, Y y) {
		this.x = x;
		this.y = y;
	}

	public X getX() {
		return this.x;
	}
	
	public Y getY() {
		return this.y;
	}
	
}

 

package ch05;

import java.util.Scanner;

public class GenericMethod {
	//제네릭 메서드는 실무에서 많이 사용하지는 않지만
	//원시코드는 제네릭으로 쓰여져있는것이 많아 참고하기좋다.

	// 함수 만들기 1
	public static <X, Y> int makeRectangle1(Point<X, Y> p1, Point<X, Y> p2) {
		// 사각형 넓이 구하는 공식 가로*세로= 넓이

		int left = (Integer) p1.getX();
		int right = (Integer) p2.getX();

		int top = (Integer) p1.getY();
		int bottom = (Integer) p2.getY();

		int width = right - left;
//		int width = (Integer) p2.getX() - (Integer) p1.getX();
		int height = bottom - top;
//		int height = (Integer) p2.getY() - (Integer) p1.getY();

		return width * height;
	}

	// 함수 만들기2
	public static <X, Y> double makeRectangle2(Point<X, Y> p1, Point<X, Y> p2) {

		double left = ((Number) p1.getX()).doubleValue();
		double right = ((Number) p2.getX()).doubleValue();

		double top = ((Number) p1.getY()).doubleValue();
		double bottom = ((Number) p2.getY()).doubleValue();

		double width = right - left;
		double height = bottom - top;

		return width *height;
	}

	//문제3 삼각형의 넓이를 구하는 점수를 만들어주세요
	

	
	public static void main(String[] args) {

		Point<Integer, Integer> p1 = new Point<Integer, Integer>(0, 0);
		Point<Integer, Integer> p2 = new Point<>(20, 10);// 제네릭을 사용할때 뒤는 생략가능
		double size = makeRectangle1(p1, p2);
		System.out.println("size: " + size);
		
		System.out.println("----------");
		
		Point<Integer, Double> p3 = new Point<Integer, Double>(0, 0.0);
		Point<Integer, Double> p4 = new Point<Integer, Double>(20, 20.0);
		
		double size2 =makeRectangle2(p3, p4);
		System.out.println(size2);
		
		Scanner sc = new Scanner(System.in);
		int make;
		System.out.println("길이를 입력하시오");
		int x = sc.nextInt();
		System.out.println("높이를 입력하시오");
		int y = sc.nextInt();
	    make = x * y;
	    System.out.println("넓이는 : " + make);
	
	}

		
}

'Java > Excercise' 카테고리의 다른 글

swing ch05 EventListenerEx2  (0) 2021.09.06
swing ch05 EventListenerEx1  (0) 2021.09.06
swing ch04 MainTest2  (0) 2021.09.03
swing ch04 MainTest  (0) 2021.09.03
swing ch03 MyFrame2  (0) 2021.09.03