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); // 面積=半径*半径*円周率
}
}
No.1ベストアンサー
- 回答日時:
円は単純な図形の拡張ですが、
二重円の場合はコンポジションとして他の図形を持てと指定されているので、
少々考え方が異なります。
すべての部品(コンポジション)用のフィールドを用意しましょう
初期化子(コンストラクタ)にて、部品を用意してフィールドに入れましょう
移動などの操作時は、自分自身と同時に各部品も操作しましょう
面積などの計算時は、各部品の計算結果を合算しましょう
No.2
- 回答日時:
Shapeが、属性x、yを持つのは
意味不明。
で、クラス図からクラスをおこせないのは
何故ですか?
private Circle outerCircle;
pricate Circle innerCircle;
の2フィールドと必要なメソッドを実装するだけでは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
全組み合わせの出力
-
Java 初心者 int型の取り扱い方
-
C#で判断文(三択)の省略形は...
-
JUnit4のアノテーションについて
-
矢印を描画
-
Javaで電卓を作りたい
-
【C#】フォームをなめらかに移動
-
(Swing)JTextFieldを半角のみ入...
-
メインが含まれていません
-
C#で、デリゲートからその関数...
-
初心者です。JScrollPane につ...
-
javaでカレンダー作成
-
C#で実行時にメソッドの返り値...
-
「配列定数は、イニシャライザ...
-
すいません、質問というか困っ...
-
Javaプログラムについての質問...
-
intが負の時に投げる例外はあり...
-
sin曲線とcos曲線を描くプログ...
-
GridLayoutについて
-
消費税を計算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
式の型は配列型で int に解決済...
-
「配列定数は、イニシャライザ...
-
intが負の時に投げる例外はあり...
-
javaでカレンダー作成
-
メインが含まれていません
-
JAVA エラー 式の開始が不正で...
-
Javaで電卓を作りたい
-
javaでcsvファイル読込時の改行...
-
(Swing)JTextFieldを半角のみ入...
-
javaのエラーの意味がわかりま...
-
「WorkImage.getGraphics()」が...
-
初心者ですが、今javaで簡単な...
-
sin曲線とcos曲線を描くプログ...
-
java spring でエラーが出て困...
-
SwingでJtableのヘッダ行が表示...
-
Java 初心者 int型の取り扱い方
-
DataSet(DataTable)の使い方
-
JAVAでCの関数ポインタのような...
-
6桁の数字を重複なしでランダム...
-
JAVA EOFの検出 (条件文で「...
おすすめ情報
emacs で書いています。