-
JAVA_10_실습_추상1. JAVA/1.2 실습 2022. 3. 20. 23:29
문제 ]
랜덤하게 3~5까지 정수를 발생시켜서
3이 나오면 삼각형 , 4가 나오면 사각형 , 5가 나오면 원의 형태로 10개의 도형을 만들어서
하나의 변수로 관리하고 각 도형의 내용을 출력하세요
/* 이 클래스는 삼각형, 사각형, 원의 정보를 기억할 클래스들의 상위클래스로서 사용 예정. 추상클래스로 연습 */ public abstract class Figure { public abstract void setArea(); // 면적을 셋팅해주는 추상함수 // 따라서 이함수는 몸체{}를 가지면 안된다. public abstract void toPrint(); //이 클래스의 정보를 출력해주는 함수 /* 위 함수들은 이 클래스를 상속받아서 만드는 각 도형클래스에서 각 함수의 내용들이 모두 달라지므로 상속 받은 클래스에서 내용을 정해서 써야하므로 추상함수로 작성함. 따라서 이 클래스를 상속받은 일반 클래스들은 모두 위의 두 함수를 오버라이드 해서 몸체를 만들어서 사용해야 한다. */ }
/* 이 클래스는 Figure이라는 추상클래스를 상속받아서 만든 클래스이다 따라서 상위클래스가 가지고 있는 추상함수를 100% 모두 구현해야한다. */ public class Nemo extends Figure { private int garo, sero,area; public Nemo() {} public Nemo(int garo, int sero) { this.garo = garo; this.sero = sero; setArea(); } @Override public void setArea() { //사각형 면적 셋팅하는 기능 area = garo*sero; } public int getgaro() { return garo; } public void setgaro(int garo) { this.garo = garo; } public int getsero() { return sero; } public void setsero(int sero) { this.sero = sero; } public double getArea() { return area; } public void setArea(int area) { this.area = area; } public void toPrint(){ //사각형 내용 출력하는 기능 System.out.printf("이 사각형은 가로가 %3d이고 세로가 %3d이고 면적이 %6d 입니다.\n",garo,sero,area); } }
public class Semo extends Figure { private int width, height; private double area; public Semo() {} public Semo(int width, int height) { this.width = width; this.height = height; setArea(); } public void toPrint(){ System.out.printf("이 삼각형은 밑변이 %3d이고 높이가 %3d이고 면적이 %6.2f 입니다.\n",width,height,area); } @Override public void setArea() { area = width*height/2.0; } public int getWidth() { return width; } public void setWidth(int width) { this.width = width; } public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } public double getArea() { return area; } public void setArea(double area) { this.area = area; } }
public class Dongl extends Figure { final static double PI = 3.14; private int rad; private double area,arround; public Dongl() {} public Dongl(int rad) { this.rad = rad; setArea(); setArround(); } public void setArround() { arround = 2*rad*PI; } @Override public void setArea() { area = rad*rad*PI; } @Override public void toPrint() { System.out.printf("이 원은 반지름이 %3d이고 둘레가 %.2f이고 면적이 %.2f 입니다.\n",rad,arround,area); } public int getRad() { return rad; } public void setRad(int rad) { this.rad = rad; } public double getArea() { return area; } public void setArea(double area) { this.area = area; } public double getArround() { return arround; } public void setArround(double arround) { this.arround = arround; } }
public class Study { Figure[] fig; public Study() { setRand(); Print(); } public int setting() { return (int)(Math.random()*3+3); } public void setRand() { fig = new Figure[10]; for(int i = 0; i<fig.length;i++) { int no = setting(); switch(no) { case 3: fig[i] = new Semo((int)(Math.random()*21+10),(int)(Math.random()*21+10)); break; case 4: fig[i] = new Nemo((int)(Math.random()*21+10),(int)(Math.random()*21+10)); break; case 5: fig[i] = new Dongl((int)(Math.random()*21+10)); break; } } } public void Print() { for(Figure f : fig) { f.toPrint(); } } public static void main(String[] args) { new Study(); } }
'1. JAVA > 1.2 실습' 카테고리의 다른 글
JAVA_08_실습_객체(4) (0) 2022.03.25 JAVA_08_실습_객체(3) (0) 2022.03.24 JAVA_09_실습_상속 (0) 2022.03.20 JAVA_08_실습_객체(2) (0) 2022.03.20 JAVA_08_실습_객체(1) (0) 2022.03.16