1.面向对象的思想:谁拥有数据,谁就提供操作数据的方面。
eg1:售票员统计票上的数据这个过程中统计方法是票据提供的。
eg2:两块石头磨成一块石刀,石刀砍树,砍成木材,木材又变成椅子
eg3.一个小球从绳子一端移到至另一端。
就第二个例子而言,石头变成石刀,这个变成的方法不应该是石头提供的,因为一般没有一个对象的方法能将自己变没,变成另外一个对象,可以说成是三刀加工厂提供createStoneKnife方法,将石头变成石刀。
之后,石刀提供cut方法将树变成木材,再后来,木材变成椅子,变成这个方法又不是木材提供的,应该是一个椅子制造厂提供的。
所以本例的类有
Stone
StoneKnifeFactory
StoneKnife
Tree
Wood
ChairFactory
Chair
其中StoneKnifeFactory中有一方法 public StoneKnife createStoneKnife(Stone first,Stone second).
StoneKnife中有一方法 public Wood cut(Tree tree);
ChairFactory 中有一方法 public Chair createChair(Wood wood);
就第三个例子而言,有两个对象,小球与绳子。两者有什么关系呢?
绳子为小球提供方向。小球要向绳子询问下一个点的位置。
所以绳子有两个成员变量,起点与终点。
小球则有一个绳子变量与一个起点变量。
如下:
class Rope{
private Point start;
private Point end;
public Point nextPoint(Point currentPoint);
}
class Ball{
private Rope rope;
private Point currentPoint;
public void move(){
Point nextpoint=rope.netPoint(currentPoint);
}
}