本站首页    管理页面    写新日志    退出


«January 2026»
123
45678910
11121314151617
18192021222324
25262728293031


公告
我是一个java程序员。

我的分类(专题)

日志更新

最新评论

留言板

链接


Blog信息
blog名称:
日志总数:16
评论数量:51
留言数量:0
访问次数:88804
建立时间:2004年11月17日




[oo]论oo中隐蔽的继承关系错误。
原创空间,  软件技术

siberian 发表于 2005/7/1 14:51:43

 很多很有名的人说,正方形不是长方形的子类,因为有父类的方法(如setSide(int,int))不能使用。我不知道这些人是出于傲慢还是鸵鸟心理,而坚持这样说。     否认权威是要慎重的。那么我们就来看看。他对于长方形和正方形关系的解决方法。一说给他们来一个共同的父类多边形。那么这个里面很明显很多适用于多边型的方法无法使用。比如设置角度的方法。可以很明显的看到所有的父类都能找到其子类无法使用的方法。       前辈们为了保证替换原则的通畅,简单而违背现实世界中分类原则,说长方形不是正方形的子类,可是这样并不能解决存在的问题,  那么替换原则并不能永远的有效,那么就应该在语言中予以规范。每个类别都有添加自己有效的数据输入规则,和数据有效规则相违背的父类方法,都应该在编译器中予以标志, 上面那段话也就意味着每个类都会有了严格的定义。不再是很随意,空泛的定义。空灵的接口是空泛的类的替代品.     在设计中,仅仅因为为了替换原则而回避这种继承关系,后果很严重,严重扭曲了从需求分析得来的结构。需要附加很多东西才能维持系统。使设计变得艰涩难懂。对象中缺少非功能性约束,是罪魁祸首。   实际的设计中替换原则是有条件成立的。那么就让条件正大光明得表现出来。至于说现实世界和虚拟世界的不同。抱歉,请看一下面向对象的目的:和现实世界进行有效的映射。这个不同严重违反了这个目的。为设计添了很多麻烦。   那么就让我们为对象加上有效的非功能性约束吧!这是我要说的。


阅读全文(2026) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.030 second(s), page refreshed 144814127 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号