オブジェクト指向、インターフェイスの問題。

Q1
立体図形を表すインタフェースSolidFigure、
立方体を表すクラスCube、球を表すクラスSphereを作成し、
図形の体積と表面積を表示するプログラムを作成する。

■インタフェース:SolidFigure

<抽象メソッド>
displayAreaInfo()

■一般クラス:Cube(実装:SolidFigure)

<フィールド変数>
・立方体の1辺の長さ

<コンストラクタ>
・1辺の長さを設定する

<実装メソッド>
・立方体の1辺の長さ、体積と表面積を表示する

■一般クラス:Sphere(実装:SolidFigure)

<フィールド変数>
・球の半径

<コンストラクタ>
・半径を設定する

<実装メソッド>
・球の半径、体積と表面積を表示する

 [ヒント]
※立方体の体積は1辺の長さの3乗、表面積は 6×立方体の1辺の長さの2乗
※球の体積は(4 / 3)×π×球の半径の3乗、表面積は 4×π×半径の2乗
※累乗はMath.pow(値,累乗数)を使うと良いMath.pow(2.5,3)->2.5の3乗
※πはMath.PIを使うとよい

[実行例]

1. 立方体 / 2. 球 / 3.終了 >1
1辺の長さを入力して下さい >30
立方体 1辺の長さ= 30.00  体積 = 27000.00  表面積= 5400.00
1. 立方体 / 2. 球 / 3.終了 >1
1辺の長さを入力して下さい >5
立方体 1辺の長さ= 5.00  体積 = 125.00  表面積= 150.00
1. 立方体 / 2. 球 / 3.終了 >2
半径を入力して下さい >10
球 半径= 10.00  体積 = 4188.79  表面積= 1256.64
1. 立方体 / 2. 球 / 3.終了 >3
アプリケーションを終了します。

一般クラス

public interface SolidFigure {
	void displayAreaInfo();
}
class Cube implements SolidFigure{
	private double width;
	public Cube(double width){
		this.width=width;
	}
	@Override
	public void displayAreaInfo() {
		System.out.printf("立方体 1辺の長さ= %.2f  体積 = %.2f  表面積= %.2f%n",
				this.width,
				Math.pow(this.width, 3),
				Math.pow(this.width, 2)*6
				);
	}
}
class Sphere implements SolidFigure{
	private double r;
	public Sphere(double r){
		this.r=r;
	}

	@Override
	public void displayAreaInfo() {
		System.out.printf("球 半径= %.2f  体積 = %.2f  表面積= %.2f%n",
				this.r,
				4*Math.PI*Math.pow(this.r, 3)/3,
				4*Math.PI*Math.pow(this.r, 2)
				);		
	}
}

アプリケーションクラス

import java.util.Scanner;
public class SolidFigureApp {
	public static void main(String[] args) {
		Scanner s=new Scanner(System.in);
		while(true){
			System.out.print("1. 立方体 / 2. 球 / 3.終了 >");
			int select=s.nextInt();
			switch(select){
			case 1:
				System.out.print("1辺の長さを入力して下さい >");
				double width=s.nextDouble();
				new Cube(width).displayAreaInfo();
				break;
			case 2:
				System.out.print("半径を入力して下さい >");
				double r=s.nextDouble();
				new Sphere(r).displayAreaInfo();
				break;
			case 3:
				System.out.println("アプリケーションを終了します。");
				return;
			}
		}
	}
}