1,人在黑板上画圆
对象:人,黑板,圆
画圆的动作是哪个对象上的方法?
是圆上面的方法。
为什么这么说了?
是因为画圆需要圆心和半径,x,y,半径
Darwcircle(){
x,y - radius
}
2,列车司机紧急刹车了?
对象:列车司机,列车
刹车的动作是哪个对象上的方法?
是列车上的方法
因为列车司机只是给列车发出了一个紧急刹车的信号。
而发动机熄火,离合器离合,车轮的抱紧。是由列车内部完成的。
3,你关上门
对象:人,门
关门的动作是哪个对象上的方法
是门
因为关门的时候有以下动作:旋转,撞上门框,伸出锁舌,插到锁孔。
这些动作都是由门内部完成的。
4,售货员统计售货小票上的金额
对象:售货员,集合小票
统计小票上的金额是哪个对象上的方法
是售货小票上的方法
因为某个商品购买了多少件,多少金额只有售货小票最清楚。
而售货员在统计的时候只是调用了售货小票上的getTotalMoney()这个方法,这个方法的内部完成了售货
金额的计算。
两个最为常见的设计例子?
A:两块石头,磨成一把石刀,石刀可以砍树,砍出木材,做成椅子。
根据面向对象的思想来设计
石头—-石刀这一步不是石头来完成的。因为石头不可能自己把自己变没了。
木材---椅子这一步同上面的道理。
结合上面的文字。我们进行了分析。得出结果如下:
StoneKnife=StoneKnifeFactory.createKnife(Stonefirst,Stone secondary);
//石刀加工厂有制作石刀的方法,接收的是两块石头,返回的是石刀
Wood=StoneKnife.cut(tree);
//石刀有砍树的方法,去砍的树,出来之后是木材
Chairs=WoodFactor.makeChairs(wood);
//木材加工厂有生产椅子的方法。接收的是木材,做出来的是椅子
B:小球从绳子一端滚动到了另一端
对象:小球,绳子
绳子的构造方法就应该有起始点,绳子还应该有一个获取下一点的方法
小球的构造方法里面就应该有一个绳子,和当前点,另外小球还应该有一个滚动的方法。
class Rope
{
privatePoint start;
privatePoint end;
publicRope(Point start,Point end){
this.start=start;
this.end=end;
}
publicvoid nextPoint(Point currentPoint){
//如果当前点是下一点则返回null,//如果当前点不在绳子上则抛出异常
}
}
class Ball
{
privateRope rope;
privatePoint start;
publicBall(Rope rope,Point current){
this.rope=rope;
this.start=current;
}
publicvoid move(){
currentPoint=rope.nextPoint(currentPoint);
System.out.println("小球滚动到了"+currentPoint+"点");
}
}
|