A
Activer
Unregistered / Unconfirmed
GUEST, unregistred user!
看到千中元提的问题比较有意思,所以想请各路富翁都来聊一聊。
千中元的帖子:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=799571
“比如一个点类把圆心坐标,以及相关的运算包装起来。这样点类就成了圆类的服务类
圆类则市点类的主类。若要调用圆类的运算move(移动),只需调用点类重相应的运算move,
只需要调用点类重相应的运算move,就可以把圆在x方向移动dx,在y方向移动dy
请用delphi或者java给出实现上例的代码(伪代码也可)
或者您有更好的例子,给出也可。请写上简单注释”
“原段:
继承和服务类的对比
通过继承,母类的属性和运算可为子类所用。然而,要利用某个类的属性和运算,
并不一定,也不应该总是使用继承。继承是两个类间非常特殊的关系。只有在确
认子类是母类的一个特殊类时,才应该运用继承;否则,母子之间的关系就很容易
被歪曲了。
以圆和点为例,在设计圆类时,读者或许会说,“扩展点类,加一个半径属性,不
就成了么?”单从运算方面来看,如此的继承是可行的。从点类继承过来的坐标
(x,y)代表圆心,圆心可用运算move(dx,dy)来移动。可是,当有其他的类介入时
,就很快发现,这种继承关系是错误的。圆虽然可以使用点类(point)的坐标(x,y)
作圆,但却成了点的子类。举例,图1-11中的多边形由三个或者更多个点组成。假如
点类是圆的母类,则意味着多边形可由多个圆组成,这显然是不对的。
原文可见《UML 对象设计与编程》P13
希望出版社。 刘润东 著”
千中元的帖子:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=799571
“比如一个点类把圆心坐标,以及相关的运算包装起来。这样点类就成了圆类的服务类
圆类则市点类的主类。若要调用圆类的运算move(移动),只需调用点类重相应的运算move,
只需要调用点类重相应的运算move,就可以把圆在x方向移动dx,在y方向移动dy
请用delphi或者java给出实现上例的代码(伪代码也可)
或者您有更好的例子,给出也可。请写上简单注释”
“原段:
继承和服务类的对比
通过继承,母类的属性和运算可为子类所用。然而,要利用某个类的属性和运算,
并不一定,也不应该总是使用继承。继承是两个类间非常特殊的关系。只有在确
认子类是母类的一个特殊类时,才应该运用继承;否则,母子之间的关系就很容易
被歪曲了。
以圆和点为例,在设计圆类时,读者或许会说,“扩展点类,加一个半径属性,不
就成了么?”单从运算方面来看,如此的继承是可行的。从点类继承过来的坐标
(x,y)代表圆心,圆心可用运算move(dx,dy)来移动。可是,当有其他的类介入时
,就很快发现,这种继承关系是错误的。圆虽然可以使用点类(point)的坐标(x,y)
作圆,但却成了点的子类。举例,图1-11中的多边形由三个或者更多个点组成。假如
点类是圆的母类,则意味着多边形可由多个圆组成,这显然是不对的。
原文可见《UML 对象设计与编程》P13
希望出版社。 刘润东 著”