オブジェクト指向、インターフェイスの問題。
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; } } } }
コメント