2017-01-04 4 views
-4

クラスを実装する必要があります。Geomは、3次元の幾何学的形状を表現することができます。OOP:3次元の幾何学的形状を表す実装クラス

//colour of the form 
public String colour; 
//coordinates of the form 
public double x, y, z; 

は、2つのコンストラクタがあります:クラスは、2つのデータフィールド所有する最初の転送パラメータのリスト内のすべてのデータフィールドを、もう一つは値を割り当て、「デフォルトコンストラクタ」、である属性の色に変更し、フォームを原点に配置します。

次のメソッドを実装する必要があります

  1. public void move(double dX, double dY, double dZ)は、座標

  2. public double getVolume()を変更はGeomのvolumnを与えます。仲裁判断の場合は、0.0です。

  3. public double getArea()は、表面積を示す。

  4. public double getDistanteTo(Geom other)は、はGeomの位置とはGeomユークリッドメトリックの他間の距離を与えます。

  5. public String toString()は、文字列はGeomのすべてのデータフィールドを提供します。

    私はインターフェイスとして動作するクラスを記述する必要が

、それは次のようになります。

public interface GeomInterface { 

    public void move(double dX, double dY, double dZ); 

    public double getVolume(); 

    public double getArea(); 

    public double getDistanceTo(Geom other); 

    public String toString(); 

} 

次のステップははGeomクラスを記述するために、次のようになります。

public class Geom implements GeomInterface { 

public String colour; 
public double x, y, z; 

それは私の知る限りです。これらの方法の1つを今すぐ実装するにはどうすればよいでしょうか?誰かが例を持っていますか?

+1

。 –

+0

さて、それは彼らがそれを呼んだものです。 – Julian

+0

なぜdownvotes? – Julian

答えて

1

ここから始めていくつかのコードがあります。実際のロジックを自分で実装する必要があります。

はGeomクラス

public class Geom implements GeomInterface { 
    private double dx; 
    private double dy; 
    private double dz; 
    private String color; 

    public Geom() { 
     this.dx = 0; 
     this.dy = 0; 
     this.dz = 0; 
     this.color = "Black"; 
    } 

    public Geom(double dx, double dy, double dz, String color) { 
     this.dx = dx; 
     this.dy = dy; 
     this.dz = dz; 
     this.color = color; 
    } 

    @Override 
    public void move(double dx, double dy, double dz) { 
     // Implement logic here 

     // Sample 
     this.dx = dx; 
    } 

    @Override 
    public double getVolume() { 
     double volume = 0; 

     // Implement logic here 

     // Sample 
     volume = this.dx * this.dy * this.dz; 

     return volume; 
    } 

    @Override 
    public double getArea() { 
     double area = 0; 

     // Implement logic here 

     // Sample 
     area = this.dx * this.dy; 

     return area; 
    } 

    @Override 
    public double getDistanceTo(Geom other) { 
     double distance = 0; 

     // Implement logic here 

     // Sample 
     distance = this.dx - other.dx; 

     return distance; 
    } 

    public double getDx() { 
     return dx; 
    } 

    public double getDy() { 
     return dy; 
    } 

    public double getDz() { 
     return dz; 
    } 

    public void setDx(double dx) { 
     this.dx = dx; 
    } 

    public void setDy(double dy) { 
     this.dy = dy; 
    } 

    public void setDz(double dz) { 
     this.dz = dz; 
    } 

    public String getColor() { 
     return color; 
    } 

    public void setColor(String color) { 
     this.color = color; 
    } 
} 

テストクラスOOPとし、より多くのあなたが今のようあなたのコースに取っているアルゴリズムを使用して行うことが少なくあり

public class TestGeom { 
    public TestGeom() { 
     Geom geom1 = new Geom(); 
     Geom geom2 = new Geom(1.0, 2.5, 3.1, "White"); 

     geom1.setDx(5.3); 
     geom1.setDy(1.2); 
     geom1.setDz(2.0); 
     geom1.setColor("Red"); 

     System.out.println("Geom1 area: " + geom1.getArea()); 
     System.out.println("Geom2 volume: " + geom2.getVolume()); 
     System.out.println("Distance from geom1 to geom2: " + geom1.getDistanceTo(geom2)); 
    } 

    public static void main(String[] args) { 
     new TestGeom(); 
    } 
} 
+0

'move'メソッドはおそらくそれを意図しているので、おそらく座標のセッターを省略するべきです。 – eli

+0

ありがとうございます!私は最初の方法について質問しています:あなたはすでに、私はthis.dx = dxを設定しなければならないことを私に与えました。メソッドの残りの部分は "this.dy = dy"と "this.dz = dz"で構成されていませんか?私はここで座標を変更するよりも多くのことがあるとは思わない。 – Julian

+0

これは、あなたが決定するか、あるいはあなたがその課題をどのように解釈するかである。 – eli

1

これはあなた自身で行うべき他の方法です。

public class Geom implements GeomInterface { 

    public String colour; 
    public double x, y, z; 

    //define constructors here 

    public double getDistanceTo(Geom other){ 

     // access local x,y,z as it is 
     // access passed x,y,z as other.x,other.y,other.z 
     // write some function to get distance between two points and 
     //save it in distance. 

     return distance; 
    } 
} 
関連する問題