![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Javaについて。
画像のように"図形(Shape)"のクラスをスーパークラス,"二重円(DoubleCircle)"と"円(Circle)"のクラスををサブクラスとするとき、二重円のクラスの書き方を教えて下さい。
※二重円は、2つの円(Circle)を部分として持つ、コンポジションで表現する。
※二重円も、円と同じく、コンストラクタ、 “getRadius” 、 “scale” 、 “getArea”とい
うメソッドを持つ。
※二重円の半径は外円の半径とする。
※ 内円の半径は外円の半径の1/2とする。
※ 二重円の面積は外円の面積から内円の面積を引いたものとする。
// Shape.java
public abstract class Shape { // 図形
private int x = 0; // X座標
private int y = 0; // Y座標
public Shape(int xx, int yy){
x = xx;
y = yy;
}
public int getX() { // X座標読み出し
return x;
}
public int getY(){
return y;
}
public void move(int dx, int dy) { // 移動
x = x + dx;
y = y + dy;
}
public abstract double getArea(); // 面積計算
}
// Circle.java
public class Circle extends Shape { // 円
private int radius = 0; // 半径
public Circle(int xx, int yy, int rr){
super(xx,yy);
radius = rr;
}
public int getRadius() { // 半径読み出し
return radius;
}
public void scale(double ratio) { // 拡大
radius = (int)(radius * ratio);
}
public double getArea() { // 面積計算
return (radius * radius * 3.14); // 面積=半径*半径*円周率
}
}
![「Javaについて」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/b/542998233_5ee88fae11f0b/M.jpg)
No.1ベストアンサー
- 回答日時:
円は単純な図形の拡張ですが、
二重円の場合はコンポジションとして他の図形を持てと指定されているので、
少々考え方が異なります。
すべての部品(コンポジション)用のフィールドを用意しましょう
初期化子(コンストラクタ)にて、部品を用意してフィールドに入れましょう
移動などの操作時は、自分自身と同時に各部品も操作しましょう
面積などの計算時は、各部品の計算結果を合算しましょう
No.2
- 回答日時:
Shapeが、属性x、yを持つのは
意味不明。
で、クラス図からクラスをおこせないのは
何故ですか?
private Circle outerCircle;
pricate Circle innerCircle;
の2フィールドと必要なメソッドを実装するだけでは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
java spring でエラーが出て困...
-
C#で、デリゲートからその関数...
-
Java 初心者 int型の取り扱い方
-
javaの課題・・
-
DataSet(DataTable)の使い方
-
javaでcsvファイル読込時の改行...
-
式の型は配列型で int に解決済...
-
偶数奇数の判定
-
【C#】フォームをなめらかに移動
-
多次元連想配列
-
後置インクリメントの計算過程...
-
素数のみの足し算
-
共有メモリについて
-
デスクトップのアイコンの位置...
-
二次元配列の初期化の方法。
-
【C#】ハッシュテーブル(連想...
-
オブジェクトの中のプロパティ...
-
IF関数でEmpty値を設定する方法。
-
javaで質問です。 文字列2023/2...
-
カタカナの小文字を大文字に変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
java spring でエラーが出て困...
-
式の型は配列型で int に解決済...
-
javaでcsvファイル読込時の改行...
-
SwingでJtableのヘッダ行が表示...
-
c# デリゲート関連の命名について
-
DataSet(DataTable)の使い方
-
C#で実行時にメソッドの返り値...
-
Javaで電卓を作りたい
-
JAVA エラー 式の開始が不正で...
-
JAVAでCの関数ポインタのような...
-
メインが含まれていません
-
C++からC#のdllを参照する際、...
-
共有メモリについて
-
6桁の数字を重複なしでランダム...
-
javaのエラーの意味がわかりま...
-
Javaのファイル名チェックについて
-
デスクトップのアイコンの位置...
-
【C#】フォームをなめらかに移動
-
C#でバブルソート
おすすめ情報
emacs で書いています。