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 |