面向对象设计把握一个重要的经验:谁拥有数据,谁就对外提供操作这些数据的方法。
再牢牢掌握几个典型的案例就可以了:
1.人在黑板上画圆,//画圆需要圆心,半径,园拥有这些数据,所以园提供画圆的方法 circle.draw()
2.列车司机紧急刹车,//车拥有刹车系统,闸,制动器等, 所以车提供刹车的方法 vehicle.stop()
3.售货员统计收获小票的金额,//同样小票拥有,商品的金额,所以小票应该提供计算总金额的方法
4.你把门关上了 //门有轴以及卡锁之类用于关门的部件, 门提供关门的方法
学员的两个面向对象的面试题,用面向对象的方式设计如下情景。
1.“两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子”,
//这个代码体现更为简单
stoneKnife =knifeFactory(stone1,stone2)
wood =stoneKnife.cut(tree)
chair = chairFactory(wood);
2.“球从一根绳子的一段移动到了另一端”,
两个对象,小球和绳子,两个对象之间有什么关系呢??
简单分析:小球沿着绳子滚动,说明绳子控制小球方向
也就像说绳子给小球提供下一个点的坐标
小球每移动一个点,绳子会提供下一个点给小球
l