java の配列についての質問です。
java の配列についての質問です。
java 及び C++についての知識は初心者です。
public abstract class Plan implements Shapeable {
Shape[] shape = new Shape[5];
Shape[0] = new Rectangle(10,10,10,10); // x,y 座標 及び 長さ、高さ
Shape[1] = new Triangle(10,10,30,10,20,20); // 3点間の座標
Shape[2] = new Triangle(20,10,40,10,30,20);
Shape[3] = new Triangle(15,15,35,15,25,25);
Shape[4] = new Circle(20,20,20); // 円の座標と半径
public float[] calculaterAreas(){
???????????????????
}
内容としては複雑なのですが、三角形、四角形、円の面積をShapeというclassの配列にあるデータ(座標や長さなど)
を使ってShapeの配列のデータを置き換えてfloatのデータとして返すんですが・・・・。どうやっていいのかさっぱり
わかりません。面積については、Rectangle,Triangle,Circleのクラスでそれぞれ計算できるようになっているのですが、それを持ってくる方法もわかりません・・・どうしたらいいのか教えてください 宜しくお願いします。
ちなみに Rectangle,Triangle,Circle class の area の メソットは
--- Rectangle class
public class Rectangle extends Shape{
int x;
int y;
int width;
int height;
public float area(Rectangle r) {
return r.width * r.height;
}
--- Circle class
public class Circle extends Shape{
int x;
int y;
int radius;
public float area(Circle c) {
return (float) (c.x * c.y * 3.14);
}
}
--- Triangle class
public class Triangle extends Shape{
int x;
int y;
int x2;
int y2;
int x3;
int y3;
public float area(Triangle t) {
float dt1,dt2,dt3;
float s1;
float area1;
dt1 = Point.distance(x, y); // Point は
dt2 = Point.distance(x2, y2);
dt3 = Point.distance(x3, y3);
s1 = (dt1+dt2+dt3)/2;
area1 = (float) Math.sqrt((s1-dt1)*(s1-dt2)*(s1-dt3));
return area1;
}
}
*** Shape class
public abstract class Shape implements Shapeable {
public abstract float area(Shape obj);
}
*** Shapeable インターフェイス
public interface Shapeable {
float area (Shape obj);
}
** コンストラクター等は省略してあります。
お礼
お返事ありがとうございます。 <<図形クラスはrの存在を知らないからよ。 という言葉から明示的にキャストをすればいいと考えつき、キャストすることでrを会得することができました。ありがとうございました。