解答は
- ホスト名: earth.mlab.im.dendai.ac.jp
- ディレクトリ: /home/submit/1I-Computer2/[今日の日付]/[学籍番号]
に提出しなさい。クラスファイル (〜.class) は提出しなくてよい。 提出には gFTP 等の ftp ソフトを用いること。
以下のやり方はプログラムの設計方法として正しいか否かを判断しなさい。 ○×で答え、その理由を述べること。 ファイル名は Q1.txt とする。
今日の例題では2次元の図形としてのインタフェースを表す Shape を定義し、 円と矩形のクラスを定義した。
同様の考え方に基づき、3次元の図形としてのインタフェース ThreeDShapeを定義しなさい。3次元の図形には次のような機能があるとする。
ThreeDShape のインタフェースを実装し、 少なくとも 2 種類の立体図形を表すクラスを作成しなさい。 さらに、クラス SolidFigures に main メソッドを作成し、 表面積や体積を求める様子を書きなさい。 (ファイル名 SolidFigures.java)
あなたはこの冬休み、念願の車の購入に踏み切ることにした。信号が青に変わった時に先頭で飛び出さなければ気が済まない性格なため、加速最優先で車選びをすることにした。
車は数多くの部品から成り立っているが、ここでは大雑把に、 車クラス Car、車体クラス Body、エンジンクラス Engine を定義することを考える。
車クラスを定義するために以下の2通りが考えられる。
どちらの方法が正しいか答えなさい。 また、その理由と、なぜもう一方の方法は間違っているのかについて考察しなさい。 ファイル名はQ3-1.txtとする。
車クラス Car、車体クラス Body、エンジンクラス Engine 、 それぞれのクラスには、重量を求めるメソッド getWeight() を実装すること。 車の重量は、エンジンの重量と車体の重量の和を計算することで求める。
また、クラス Car には、外部で生成した Engine オブジェクトを受け取り、 車にエンジンを搭載することができるメソッド setEngine(Engine) を作成しなさい。
車の加速のよさを判断する際に参考になる指標として、 パワーウエイトレシオ (Power-to-Weight Ratio; 車重/エンジンの出力) がある。 エンジンの出力が大きくても車体が重ければ加速は鈍くなる。 エンジンの出力 1 [kW] 当たりの車重が軽いほど、つまり、 パワーウエイトレシオの値が小さいほど加速がよいと判断できる。
クラス Engine に出力を返すメソッド getPower() を実装し、 クラス Car には、エンジンの出力と車重から、 パワーウエイトレシオを計算するメソッド getPowerToWeightRatio() を実装しなさい。
以下のように、エンジンを交換する様子を表わせるようにすること。
class Driver { public static void main(String[] args) { Engine engine1 = new Engine( 80, 300); // 80[kW], 300[kg] Engine engine2 = new Engine(100, 400); // 100[kW], 400[kg] Car car = new Car(1000); // 1000[kg] (body) car.setEngine(engine1); System.out.println( "エンジン1搭載時のパワーウエイトレシオ: " + car.getPowerToWeightRatio()); car.setEngine(engine2); System.out.println( "エンジン2搭載時のパワーウエイトレシオ: " + car.getPowerToWeightRatio()); }
この問題の提出ファイルのファイル名は Driver.java とする。