抽象クラスに関する問題です。
1.クラス図の作成
次のクラス仕様書を元にクラス図を作成しなさい。
なお、以下のいずれのクラスのメソッドにも引数列はない。
スーパークラス abstract Figure
役割:図形を表現する抽象クラス。
フィールド
なし
メソッド
メソッド名 | アクセス修飾子 | 戻り値の型 | 役割 |
getArea() | public | double | 図形の面積を返す抽象メソッド。 |
サブクラス1 Rectangle extends Figure
役割:図形の一種である四角形を表現する。
フィールド
フィールド名 | アクセス修飾子 | 型 | 役割 |
x | private | double | 四角形の横幅を保持する |
y | private | double | 四角形の縦幅を保持する |
コンストラクタ
役割:フィールドを初期化する
メソッド
メソッド名 | アクセス修飾子 | 戻り値の型 | 役割 |
getArea() | public | double | 四角形の「横幅×縦幅」を計算して面積を返す。 |
サブクラス2 Circle extends Figure
役割:図形の一種である円を表現する。
フィールド
フィールド名 | アクセス修飾子 | 型 | 役割 |
r | private | double | 円の半径を保持する |
コンストラクタ
役割:フィールドを初期化する
メソッド
メソッド名 | アクセス修飾子 | 戻り値の型 | 役割 |
getArea() | public | double | 円の面積を「半径×半径×円周率」を計算して返す。面積は小数点以下第2位四捨五入1位表示 |
2.Javaで実装
上記問題で作成したクラス図を基にJavaで実装しなさい。
以下Q02のように別クラスを作成し、オブジェクト配列を使ってテストすること。
・ヒント①:円周率はMath.PIを使ってください。
・ヒント②:小数点以下第2位四捨五入1位表示するための方法はインターネットで調べてください。
<メインメソッドの例>
public class Q02 {
public static void main(String[] args) {
Figure[] fg = new Figure[2];
fg[0] = new Rectangle(5.0, 10.0);
fg[1] = new Circle(5.0);
for (int i = 0; i < fg.length; i++) {
System.out.println((i + 1) + "番目の図形の面積 = " + fg[i].getArea());
}
}
}
<結果>
1番目の図形の面積 = 50.0 2番目の図形の面積 = 78.5 |
3.オリジナルクラスのクラス図
上記問題で作成したクラス図にオリジナルクラスを書き加えなさい。
例:平行四辺形や楕円の面積、球の表面積など。
(ホワイトボードにスーパークラスとオリジナルクラスを書く)
4.オリジナルクラスの実装
上記問題で作成したオリジナルのクラス図を基にJavaで実装しなさい。
2.と同様のテストをすること。
5.発表
オリジナルクラスを発表いただきます。