------- android培训、java培训、期待与您交流! ----------
Java 是面向对象的程序设计,在在考虑问题时应该将事物以对象的思想来考虑
面向对象设计把握一个重要的经验:谁拥有数据谁就对外提供操作这些数据的方法。
牢牢记住以下典型案例:
人在黑板上画圆
对象有人,黑板,圆
方法是画圆,画圆的方法中用到圆心(x,y),半径r,这些数据属于圆,谁拥有数据谁就对外提供方法,所以画圆是圆提供的方法。
列车司机紧急刹车
对象有司机,列车
方法是刹车,在刹车的动作中需要车熄火,离合器操作等,这些数据都是车的,所以刹车是车提供的方法
售货员统计收货小票的金额
对象有售货员,小票
统计的方法中需要小票上的金额数据,所以统计是小票提供的方法
人把门关上
对象有人,门
关门的动作需要门轴转动,锁扣上等,这些都是门的数据,所以关门是门提供的方法
两道关于面向对象的面试题
两块石头磨成石刀,刀可以砍树,砍成木材,木材可以做成椅子
对象有
两块石头,石刀,树,木材,椅子
两块石头磨成石刀
磨的动作既不需要石头提供数据也不需要石刀提供的数据,所以不是这两个对象的方法,应该是第三方提供的方法,传入石头返回石刀
石头-->石刀
石刀 = KnifeFactory.create(石头1,石头2);
刀可以砍树,砍成木材
刀砍树,到提供砍的方法,将树砍成木材
木材 =刀.砍(树);
木材可以做成椅子
木材和椅子本身不能做成,由第三方将木材做成椅子
椅子=ChairFactory.make(木材);
球从绳子的一端移动到另一端
对象:球,绳子
绳子提供小球移动的路线,即小球的位置
class Rope()
{
private Point start;
pribate Point end;
public Rope (Point start Point end)
{
This.start=start;
This.end=end;
}
Public Point nextPoint(Point currentPoint)
{
/*返回下一点的位置,如果当前点返回为null则是终点,如果不是线上的点,抛出异常*/
}
}
小球实现移动这个动作的方法
Class Ball
{
Private Rope rope;
Private Point CurrentPoint;
Public Ball(Rope ropePoint startPoint)
{
This.startPoint=CurrentPoint;
This.rope=rope;
}
Public void move()
{
currentPoint=rope.nextPoint(currentPoint)
}
}