以下のソースコードにてメインメソッドにて各メンバーやメソッドを
呼び出している状態です。
以下の実行結果を得るmain()メソッドを作成して各図形描画インスタンスは、キーボードより入力された値を用いて生成するものとする。 【実行結果】プログラムを実行したら、どの図形の情報を表示させるか番号をキーボードから入力させます 図形描画[ 0:円 2:線 3:三角形 4:長方形 44:正方形 ] : >0 [円を描画] 中心点(100,100)から半径20 周囲の長さは、125.66370614359172 図形描画[ 0:円 2:線 3:三角形 4:長方形 44:正方形 ] : >2 [線を描画] 始点(0,0)から終点(100,100)まで 周囲の長さは、141.4213562373095 図形描画[ 0:円 2:線 3:三角形 4:長方形 44:正方形 ] : >3 [三角形を描画] 点1(0,0)から点2(100,100)、点3(0,200)の三角形 周囲の長さは、482.842712474619 内角の和は、180 図形描画[ 0:円 2:線 3:三角形 4:長方形 44:正方形 ] : >4 [四角形(矩形)を描画] 点(0,0)を基準として幅100,高さ50の四角形 周囲の長さは、300.0 内角の和は、360 図形描画[ 0:円 2:線 3:三角形 4:長方形 44:正方形 ] : >44 [正方形を描画] 点(0,0)を基準として幅・高さ200の正方形 周囲の長さは、800.0 内角の和は、360
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("図形描画[ 0:円 2:線 3:三角形 4:長方形 44:正方形 ] :"); int input = s.nextInt(); if (input == 0) { Figure a = new Circle(100, 100, 20); a.draw(); System.out.println("周囲の長さは、" + a.getPerimeter()); } else if (input == 2) { Figure b = new Line(0, 0, 100, 100); b.draw(); System.out.println("周囲の長さは、" + b.getPerimeter()); } else if (input == 3) { Polygon c = new Triangle(0, 0, 100, 100, 0, 200); c.draw(); System.out.println("周囲の長さは、" + c.getPerimeter()); System.out.println("内角の和は、" + c.getInternalAngle()); } else if (input == 4) { Polygon d = new Rectangle(0, 0, 100, 50); d.draw(); System.out.println("周囲の長さは" + d.getPerimeter()); System.out.println("内角の和は、" + d.getInternalAngle()); } else if (input == 44) { Polygon e = new Square(0, 0, 200); e.draw(); System.out.println("周囲の長さは" + e.getPerimeter()); System.out.println("内角の和は、" + e.getInternalAngle()); } else { } s.close(); } }
※初学者です
mainメソッドにて、
a.draw();
a.getPerimeter());
この2つのメソッドに対して一度に呼びだす
書き方が思いつかないです方法を教えてください。
なお、継承関係は以下に記載します。
interface Figure { void draw(); double getPerimeter(); }
public class Line implements Figure { private Point p1; private Point p2; public Line() { this(0, 0, 0, 0); } public Line(int x1, int y1, int x2, int y2) { this.p1 = new Point(x1, y1); this.p2 = new Point(x2, y2); } public void draw() { System.out.println("[線を描画]始点" + this.p1.getX() + "," + this.p1.getY() + "から終点" + this.p2.getX() + "," + this.p2.getY() + "まで"); } public double getPerimeter() { double dx = Math.pow(this.p2.getX() - this.p1.getX(), 2); double dy = Math.pow(this.p2.getY() - this.p1.getY(), 2); return Math.sqrt(dx + dy); } }
public abstract class Shape implements Figure { public abstract void draw(); public abstract double getPerimeter(); }
public class Line implements Figure { private Point p1; private Point p2; public Line() { this(0, 0, 0, 0); } public Line(int x1, int y1, int x2, int y2) { this.p1 = new Point(x1, y1); this.p2 = new Point(x2, y2); } public void draw() { System.out.println("[線を描画]始点" + this.p1.getX() + "," + this.p1.getY() + "から終点" + this.p2.getX() + "," + this.p2.getY() + "まで"); } public double getPerimeter() { double dx = Math.pow(this.p2.getX() - this.p1.getX(), 2); double dy = Math.pow(this.p2.getY() - this.p1.getY(), 2); return Math.sqrt(dx + dy); } }
public class Circle extends Shape { private Point center; private int radius; public Circle() { this(0, 0, 0); } public Circle(int x, int y, int r) { this.center = new Point(x, y); this.radius = r; } public void draw() { System.out.println("[円を描画]中心点" + this.center.getX() + "," + this.center.getY() + "から半径" + this.radius); } public double getPerimeter() { return this.radius * 2 * Math.PI; } }
public abstract class Polygon extends Shape { protected int angle; public int getInternalAngle() { return (this.angle - 2) * 180; } }
public class Triangle extends Polygon { Point p1; Point p2; Point p3; public Triangle(int x1, int y1, int x2, int y2, int x3, int y3) { this.p1 = new Point(x1, y1); this.p2 = new Point(x2, y2); this.p3 = new Point(x3, y3); super.angle = 3; } public void draw() { System.out.println("[三角形を描画] 点1(" + this.p1.getX() + "," + this.p1.getY() + ")から点2(" + this.p2.getX() + "," + this.p2.getY() + "),点3(" + this.p3.getX() + "," + this.p3.getY() + ")の三角形"); } public double getPerimeter() { double x21 = this.p2.getX() - this.p1.getX(); double y21 = this.p2.getY() - this.p1.getY(); double a = Math.sqrt(x21 * x21 + y21 * y21); double x32 = this.p3.getX() - this.p2.getX(); double y32 = this.p3.getY() - this.p2.getY(); double b = Math.sqrt(x32 * x32 + y32 * y32); double x13 = this.p1.getX() - this.p3.getX(); double y13 = this.p1.getY() - this.p3.getY(); double c = Math.sqrt(x13 * x13 + y13 * y13); return a + b + c; } }
public class Rectangle extends Polygon { protected Point p; protected int width; protected int height; public Rectangle(int x, int y, int width, int height) { this.p = new Point(x, y); this.width = width; this.height = height; super.angle = 4; } public void draw() { System.out.println("[長方形(矩形)を描画] 点" + this.p.getX() + "," + this.p.getY() + "を基準として幅" + this.width + "、高さ" + this.height + "の長方形"); } public double getPerimeter() { return (this.width + this.height) * 2; } }
public class Square extends Rectangle { public Square(int x, int y, int width) { super(x, y, width, width); } public void draw() { System.out.println("[正方形を描画] 点" + this.p.getX() + "," + this.p.getY() + "を基準として幅・高さ" + this.width + "の正方形"); } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。