Java 创建一个多端向量
Java Creating a vector with multiple ends
我想创建两种类型的向量(如 classes):
- 第一种类型是具有两个分量(起点和终点)的规则向量。
- 第二种类型也是向量,但不是向量,而是有两个终点,您可以在两者之间切换。
我的想法是创建一个抽象的超级class(例如AbstractVector
),我在其中定义了向量的公共函数:
abstract class AbstractVector {
//Methods, e.g. length(), getter...
}
然后我的两个子classes Vector
和(例如)TriVector
扩展了上面的class。我面临的问题是处理 TriVector class 中的两个终点。
我完全不知道如何去做或如何正确设置抽象 class 所以我可以有一个法向量和一个有两个结尾的向量,我可以在它们之间切换(例如 TriVector
class 有一个方法 switch()
可以在两个终点之间切换)。
希望有人能帮助我或提出更好的解决方案。
一个非常粗略的解决方案草图,仅详细说明 getStart()
和 getEnd()
方法:
abstract class AbstractVector {
protected Point startPoint;
public Point getStart() {
return startPoint;
}
public abstract Point getEnd();
//Methods, e.g. length(), getter...
}
class Vector extends AbstractVector {
protected Point endPoint;
public Point getEnd() {
return endPoint;
}
}
class TriVector extends AbstractVector {
protected Point[] endPoints = new Point[2];
protected int activeEndPoint = 0;
public Point getEnd() {
return endPoints[activeEndPoint];
}
public void switchEnds() {
activeEndPoint = 1 - activeEndPoint;
}
}
我想创建两种类型的向量(如 classes):
- 第一种类型是具有两个分量(起点和终点)的规则向量。
- 第二种类型也是向量,但不是向量,而是有两个终点,您可以在两者之间切换。
我的想法是创建一个抽象的超级class(例如AbstractVector
),我在其中定义了向量的公共函数:
abstract class AbstractVector {
//Methods, e.g. length(), getter...
}
然后我的两个子classes Vector
和(例如)TriVector
扩展了上面的class。我面临的问题是处理 TriVector class 中的两个终点。
我完全不知道如何去做或如何正确设置抽象 class 所以我可以有一个法向量和一个有两个结尾的向量,我可以在它们之间切换(例如 TriVector
class 有一个方法 switch()
可以在两个终点之间切换)。
希望有人能帮助我或提出更好的解决方案。
一个非常粗略的解决方案草图,仅详细说明 getStart()
和 getEnd()
方法:
abstract class AbstractVector {
protected Point startPoint;
public Point getStart() {
return startPoint;
}
public abstract Point getEnd();
//Methods, e.g. length(), getter...
}
class Vector extends AbstractVector {
protected Point endPoint;
public Point getEnd() {
return endPoint;
}
}
class TriVector extends AbstractVector {
protected Point[] endPoints = new Point[2];
protected int activeEndPoint = 0;
public Point getEnd() {
return endPoints[activeEndPoint];
}
public void switchEnds() {
activeEndPoint = 1 - activeEndPoint;
}
}