본문 바로가기
2015 IT 웹 기반 개발자과정/JAVA

JAVA 도형 면적 구하기 [상속 클래스]

by 한여름밤의코딩 2015. 11. 11.
                작성 클래스명 : AreaMain.java
                 조건 : 
                  - 메인 메소드를 구현합니다. 메인 메소드의 역할은 아래와 같습니다.
                  - 면적을 구할 도형의 종류를 표현할 랜덤한 숫자를 생성합니다.(1 ~ 4)
                       예> 1-정사각형, 2-직사각형, 3-삼각형, 4-원
                  - 생성된 숫자에 따라서 

                1, 4번일 경우는 도형의 면적을 구할 랜덤 숫자를 1개 합니다.
                2, 3번일 경우는 도형의 면적을 구할 랜덤 숫자를 2개 생성합니다.

                 - 면적을 구할 랜덤 숫자까지 생성되었다면 각각의 도형의 면적을 구하는 클래스를 호출합니다.
                 - 출력결과는 아래와 같이 출력됩니다.

                정사각형일 경우 : 정사각형의 면적은 9 입니다
                직사각형일 경우 : 직사각형의 면적은 12 입니다
                삼각형일 경우    : 삼각형의 면적은 6 입니다
                원일 경우         : 원의 면적은 6 입니다

                작성 클래스명  :  Shape
                조건 : 
                    -	public void area( ) 메소드 선언

                작성 클래스명  :  Rectangle (직사각형), Triangle (삼각형), Circle (원)
                조건 : 
                    -	Shape 클래스를 상속
                    -	필요한 값들은 자유롭게 구현

                작성 클래스명  :  Square(정사각형)
                조건 : 
                    -	Rectangle 클래스를 상속
                    -	필요한 값들은 자유롭게 구현







package src.kr.ac.jnu.day02.extend.homeWork;

public class Shape {
	
	String name;
	int width;  //가로
	int height; //세로
	int r;		//반지름
	int area;	//면적
	static final double PI = Math.PI;
	
	public Shape() {
	}
	
	public Shape(String name, int r){ //원, 정사각형
		this.name = name;
		this.r = r;
	}
	
	public Shape(String name, int width, int height) { // 사각형, 삼각형
		this.name = name;
		this.width = width;
		this.height = height;
	}
	
	public void area(){
		if(r==0) System.out.println("높이는 "+height + " 밑변은 " +width+ " 인 "+name+" 입니다.");	
		if(r!=0) System.out.println("반지름이 "+r + "인 "+name+" 입니다.");
		System.out.println(name+"의 면적은 "+area+" 입니다.");
	}
	
}
============================================================================================
package src.kr.ac.jnu.day02.extend.homeWork;

public class Rectangle extends Shape{

	public Rectangle(String name, int width, int height){
		super(name, width, height);
	}
	
	@Override
	public void area(){
		area= (width*height);
		super.area();
	}
}
============================================================================================
package src.kr.ac.jnu.day02.extend.homeWork;

public class Triangle extends Shape{

	public Triangle(String name, int width, int height){
		super(name, width, height);
	}
	
	@Override
	public void area(){
		area= (width*height)/2;
		super.area();
	}
}

============================================================================================
package src.kr.ac.jnu.day02.extend.homeWork;

public class Square extends Shape{

	public Square(String name, int r){
		super(name, r);
	}
	
	@Override
	public void area(){
		area= (r*r);
		System.out.println("밑변이 "+r + "인 "+name+" 입니다.");
		System.out.println(name+"의 면적은 "+area+" 입니다.");
	}
}

============================================================================================
package src.kr.ac.jnu.day02.extend.homeWork;

public class Circle extends Shape{

	public Circle(String name, int r){
		super(name, r);
	}
	
	@Override
	public void area(){
		area= (int)((r*r)*PI);
		super.area();
	}
}

============================================================================================
package src.kr.ac.jnu.day02.extend.homeWork;

import java.util.Random;

public class areaMain {

	public static void main(String[] args) {
		
		Random r = new Random();
		int Kind = r.nextInt(4)+1;
		int rN = r.nextInt(10)+1;
		int rN2 = r.nextInt(10)+1;
		
		System.out.println("1-정사각형, 2-직사각형, 3-삼각형, 4-원");
		System.out.println("랜덤 숫자는 "+Kind);
		System.out.println("================================");
		
		switch(Kind){
		case 1 :
			Square s1 = new Square("정사각형",rN);
			s1.area();
			break;
		case 2 :
			Rectangle r1 = new Rectangle("직사각형",rN,rN2);
			r1.area();
			break;
		case 3 :
			Triangle t1 = new Triangle("삼각형",rN,rN2);
			t1.area();
			break;
		case 4 :Circle c1 = new Circle("원",rN);
			c1.area();
		}
	
	}

}