2017-01-04 2 views
-4

Я должен реализовать класс Geom, который способен представлять трехмерные геометрические формы. Класс имеет два поля данных:OOP: реализующий класс, представляющий трехмерные геометрические формы

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

Есть два конструктора: первый передают все поля данных в списке параметров, то вторые из них является «конструктор по умолчанию», который выделяет значение черного к атрибуту цвет и размещает форму в месте происхождения.

Следующие методы должны быть реализованы:

  1. public void move(double dX, double dY, double dZ), изменяет координаты

  2. public double getVolume(), выдает Volumn из GeoM. Для формы арбитража это всего лишь 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

Это имеет меньше общего с ООП и многое другое с алгоритмом, который вы принимаете в вашем курсе, как сейчас. –

+0

Ну, вот что они назвали. – Julian

+0

Почему downvotes? – Julian

ответ

1

Для начала введите код. Вам придется реализовать реальную логику самостоятельно.

геом-класс

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; 
    } 
} 

Тест-класс

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; 
    } 
}