2次元平面上の点を扱う Point クラス (Point.java) と長方形を扱う Rectangle クラス (Rectangle.java) ,円を扱う Circleクラス (Circle.java)およびこれらのクラスを利用したプログラムである Ex_12_3.java が下記のように与えられています. このとき,正しく動作するよう Circle.javaおよび Ex_12_3.java の空欄 【 a 】 ~ 【 f 】を埋めてください. ここで Circle.javaおよび Ex_12_3.java は以下の要件を満たすものとします: •Circle クラスは Point クラスを継承しています. Circle クラスでは,「円の中心の x 座標」,「円の中心の y 座標」,「円の半径」 をフィールドとして持ち,円の面積を計算するメソッドを持つものとします. •Ex_12_3.java では,「点」,「長方形」 に関する結果の表示に加えて,「円」 に関する結果を以下のように表示します. ==== 円circ ==== 中心のx座標:2 中心のy座標:2 半径:1 面積:3.141592653589793 Point.java (Point クラス) public class Point { private int x; private int y; public Point() { x = 0; y = 0; } public Point( int x, int y) { this.x = x; this.y = y; } public int getX() { return x; } public int getY() { return y; } public void setX(int x) { this.x = x; } public void setY(int y) { this.y = y; } public double distance() { return Math.sqrt(x*x + y*y); } } Rectangle.java (Rectangle クラス : Point クラスのサブクラス) public class Rectangle extends Point { private int x2; private int y2; public Rectangle() { super(); x2 = 0; y2 = 0; } public Rectangle(int x, int y, int x2, int y2) { super(x, y); this.x2 = x2; this.y2 = y2; } public int getX2() { return x2; } public int getY2() { return y2; } public void setX2(int x2) { this.x2 = x2; } public void setY2(int y2) { this.y2 = y2; } public int area() { return (x2 - super.getX()) * (y2 - super.getY()); } public double distance() { double cx = (super.getX() + x2) / 2.0; double cy = (super.getY() + y2) / 2.0; return Math.sqrt(cx*cx + cy*cy); } } Circle.java (Circle クラス : Point クラスのサブクラス) public class Circle extends Point { private int r; public Circle() { super(); r = 0; } public Circle(int x, int y, int r) { 【 a 】 this.r = r; } public int getR() { 【 b 】 } public void setR(int r) { 【 c 】 } public double circleArea() { return 【 d 】 } } Ex_12_3.java (円に関する表示部分を含む状態のファイルです.) public class Example_12_3 { public static void main(String[] args) { Point p = new Point(10, 7); double d = p.distance(); System.out.println("==== 点p ===="); System.out.println("x座標 : " + p.getX()); System.out.println("y座標 : " + p.getY()); System.out.printf("原点からの距離 : %.3f\n", d); Rectangle rec = new Rectangle(3, 5, 9, 9); d = rec.distance(); System.out.println("==== 長方形rec ===="); System.out.println("左下の座標 : (" + rec.getX() + ", " + rec.getY() + ")"); System.out.println("右上の座標 : (" + rec.getX2() + ", " + rec.getY2() + ")"); System.out.println(" 面積 : " + rec.area()); System.out.printf("原点からの距離 : %.3f\n", d); /* Circle に関連する部分(新たに追加した部分) */ Circle circ = new Circle(2, 2, 1); int r = circ.getR(); System.out.println("==== 円circ ===="); System.out.println("中心のx座標 : " + circ.getX()); System.out.println("中心のy座標 : " + circ.getY()); System.out.println(" 半径 : " + 【 e 】); System.out.println(" 面積 : " + 【 f 】); } }
↧