![](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で質問しましょう!
似たような質問が見つかりました
- 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#で実行時にメソッドの返り値...
-
Javaについて
-
C# Form処理
-
SwingでJtableのヘッダ行が表示...
-
IN演算子の中身を動的に生成
-
コード中の謎のエラー
-
JAVA エラー 式の開始が不正で...
-
初心者ですが、今javaで簡単な...
-
intが負の時に投げる例外はあり...
-
DataSet(DataTable)の使い方
-
複数のボタンを配置し、それぞ...
-
JAVAでCの関数ポインタのような...
-
javaでカレンダー作成
-
sin曲線とcos曲線を描くプログ...
-
java spring でエラーが出て困...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
Javaで電卓を作りたい
-
式の型は配列型で int に解決済...
-
javaでカレンダー作成
-
JAVA エラー 式の開始が不正で...
-
JAVAでCの関数ポインタのような...
-
java spring でエラーが出て困...
-
6桁の数字を重複なしでランダム...
-
c# デリゲート関連の命名について
-
C++からC#のdllを参照する際、...
-
メインが含まれていません
-
(Swing)JTextFieldを半角のみ入...
-
DataSet(DataTable)の使い方
-
三目並べ(Tick-Tack-Toe)をJav...
-
JUnit4のアノテーションについて
-
初心者ですが、今javaで簡単な...
-
classを使って座標軸を求めるコ...
-
javaでcsvファイル読込時の改行...
-
C#で実行時にメソッドの返り値...
-
Java 初心者 int型の取り扱い方
おすすめ情報
emacs で書いています。