ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.