**面向对象的思想:谁有数据,谁就对外提供操作这些数据的方法。
例子
1 人在黑板画圆
public class circle {
private int []circleCenter=new int[]{0.0};
private int radius=1;
public circle (circleCenter,radius){
this.circleCenter=circleCenter;
thid.radius=radius;
}
public void draw(int [] circleCenter,int radius){
syso{ circle};
}
}
2 两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材可以坐椅子。
石头:stone 刀:knife 树:tree 材料:material 椅子:chair
class stoneKnifeFactory{
public stoneKnife createStoneKnife(stone){
return stoneKnife;
}
}
class StoneKnife{
public material cut(tree){
return material;
}
}
class ChairFactory{
public chair makeChair(material){
return chair;
}
}
3 球从一根绳子的一端移动到了另一端
绳子: rope, 球: ball
class Rope{
private Point start;
private Point end;
public Rope(Point start,Point end)
public Point NextPoint(Point currentPoint){
/*通过两点一线的数学公式可以计算出当前点的下一个点,这个细节不属于设计阶段要考虑的问题,如果当前点为终止点,返回null,如果当前点不在线上,抛出异常*/
}
}
class Ball{
private Rope rope;
private Point currentPoint;
public Ball(Rope rope,startPoint){
this.rope=rope;
this.currentPoint=startPoint;
}
public void move(){
currentPoint=rope.nextPoint(currentPoint)
syso{"小球移动到了"+currentPoint}
}
}