解答例 - j2.lesson01.CuboidAction

package j2.lesson01;

import java.io.*;

/**
 * 課題1402 - 解答例.
 {@link Cuboid} を操作するクラス.
 @author arakawa
 @version $Id: CuboidAction_java.rps,v 1.1 2006/03/06 12:56:15 java2005 Exp $
 */
public class CuboidAction {
    
    /**
     * 入力された底面と高さを持つ直方体の表面積と体積を計算するプログラム。
     @param args 無視される
     @throws IOException 入力中に例外が発生した場合
     */
    // プログラム全体
    public static void main(String[] argsthrows IOException {
        BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
        
        // cuboid = 新しい直方体インスタンス
        Cuboid cuboid = new Cuboid();

        // 直方体の底面に新しい長方形インスタンスを代入
        cuboid.base = new Rectangle();
        
        // print "底面の高さを入力:"
        System.out.print("底面の高さを入力:");
        
        // 入力された底面の高さを代入
        cuboid.base.height = Double.parseDouble(console.readLine());
        
        // print "底面の幅を入力:"
        System.out.print("底面の幅を入力:");
        
        // 入力された底面の幅を代入
        cuboid.base.width = Double.parseDouble(console.readLine());

        // print "直方体の高さを入力:"
        System.out.print("直方体の高さを入力:");

        // 入力された直方体の高さを代入
        cuboid.height = Double.parseDouble(console.readLine());
        
        // print "表面積は" + surface-area-of(cuboid) + 改行
        System.out.println("表面積は" + surfaceAreaOf(cuboid));
        
        // print "体積は" + volume-of(cuboid) + 改行
        System.out.println("体積は" + volumeOf(cuboid));
    }
    
    /**
     * この直方体の表面積を計算する。
     @param cuboid 表面積を計算する直方体
     @return 表面積
     */
    // surface-area-of(cuboid)
    public static double surfaceAreaOf(Cuboid cuboid) {
        double a = cuboid.height;
        double b = cuboid.base.height;
        double c = cuboid.base.width;
        
        // 2(ab + bc + ca)
        return (a * b + b * c + c * a);
    }
    
    /**
     * この直方体の体積を計算する。
     @param cuboid 体積を計算する直方体
     @return 体積
     */
    // volume-of(cuboid)
    public static double volumeOf(Cuboid cuboid) {
        // a * b * c
        return cuboid.height * cuboid.base.height * cuboid.base.width;
    }
}