도형의 면적을 구하는 프로그램 작성하기

추상클래스 + 인터페이스 

 

Drawable(인터페이스) 

//도형을 그린다(원, 삼각형, 직사각형의 면전을 구한다)
public interface Drawable {
	public void draw();
	//동사형으로 씀(원인지 삼각형인지는 나중에 정해줌), abstract생략가능함
	//public double area(int r); //원의 면적 => 추상클래스에서 작업하겠다는 의미
}

Shape(추상클래스)

//원의 면적, 직사각형의 면적을 구해서 출력시켜주는 역할(추상클래스)
public abstract class Shape {
	//모든 도형에서 공통으로 사용할 멤버변수도 선언할 수 있음
	public double res=0.0;//면적
	
	//원의 면적
	public abstract double area(int r); 
	
	//직사각형의 면적
	abstract public int area(int x, int y);
	
	//추상클래스의 장점-> 일반메소드도 존재가능
	/*원의 면적을 계산했다면 원의 면적을 뽑는 것이고 
	 * 직사각형의 면적을 계산했다면 직사각형의 면적을 뽑는 기능이 될 것임
	 */
	public void PrintArea() {
		System.out.println("도형의 면적은"+res+"입니다");
	}
}

ShapeTest(추상클래스를 상속하고 인터페이스를 구현하는 클래스)

import java.util.Scanner;
//형식) 자식클래스명 extends 추상클래스명 implements 부모인터페이스,,,
public class ShapeTest extends Shape implements Drawable {

	@Override
	public void draw() {
		// TODO Auto-generated method stub
		System.out.println("원, 직사각형의 면적을 구한다");
	}

	@Override
	public double area(int r) {//원의 넓이
		// TODO Auto-generated method stub
		return (r*r*Math.PI);//Math.PI(정적 상수값)
	}

	@Override
	public int area(int x, int y) {//직사각형 넓이
		// TODO Auto-generated method stub
		return (x*y);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc =new Scanner(System.in);//ctrl+shift+o(자동 import)
		System.out.println("원의 반지름을 입력?");
		int r = sc.nextInt();
		ShapeTest st = new ShapeTest();
	    st.res=st.area(r);//계산값을 저장
	    st.PrintArea();//저장된 값을 출력	
	}
}

 

+ Recent posts