namespace Test1 { public abstract class 四边形 { protected int _l,_t,_r,_b; public int 左长度 { get { return _l; } } public int 顶长度 { get { return _t; } } public int 右长度 { get { return _r; } } public int 底长度 { get { return _b; } } public 自由四边形 转换到自由四边形() { return new 自由四边形(_l,_t,_r,_b); } } public class 自由四边形 : 四边形 { public 自由四边形(int l,int t,int r,int b) { _l=l; _t=t; _r=r; _b=b; } public void 设置左长度(int l) { _l=l; } public void 设置顶长度(int t) { _t=t; } public void 设置右长度(int r) { _r=r; } public void 设置底长度(int b) { _b=b; } } public abstract class 矩形 : 四边形 { public int 宽度 { get { return 顶长度; } } public int 高度 { get { return 左长度; } } public 长方形 转换到长方形() { return new 长方形(_l,_l); } } public class 长方形 : 矩形 { public 长方形(int w,int h) { _t=_b=w; _l=_r=h; } public void 设置宽度(int w) { _t=_b=w; } public void 设置高度(int h) { _l=_r=h; } } public class 正方形 : 矩形 { public 正方形(int v) { _t=_b=_l=_r=v; } public int 边长 { get { return 宽度; } } public void 设置边长(int v) { _t=_b=_l=_r=v; } } } namespace Test2 { public abstract class 四边形 { public abstract int 左长度 { get; } public abstract int 顶长度 { get; } public abstract int 右长度 { get; } public abstract int 底长度 { get; } public 自由四边形 转换到自由四边形() { return new 自由四边形(左长度,顶长度,右长度,底长度); } } public class 自由四边形 : 四边形 { int _l,_t,_r,_b; public override int 左长度 { get { return _l; } } public override int 顶长度 { get { return _t; } } public override int 右长度 { get { return _r; } } public override int 底长度 { get { return _b; } } public 自由四边形(int l,int t,int r,int b) { _l=l; _t=t; _r=r; _b=b; } public void 设置左长度(int l) { _l=l; } public void 设置顶长度(int t) { _t=t; } public void 设置右长度(int r) { _r=r; } public void 设置底长度(int b) { _b=b; } } public abstract class 矩形 : 四边形 { public override int 左长度 { get { return 高度; } } public override int 顶长度 { get { return 宽度; } } public override int 右长度 { get { return 高度; } } public override int 底长度 { get { return 宽度; } } public abstract int 宽度 { get; } public abstract int 高度 { get; } public 长方形 转换到长方形() { return new 长方形(宽度,高度); } } public class 长方形 : 矩形 { int _w,_h; public override int 宽度 { get { return _w; } } public override int 高度 { get { return _h; } } public 长方形(int w,int h) { _w=w; _h=h; } public void 设置宽度(int w) { _w=w; } public void 设置高度(int h) { _h=h; } } public class 正方形 : 矩形 { int _v; public override int 宽度 { get { return _v; } } public override int 高度 { get { return _v; } } public 正方形(int v) { _v=v; } public int 边长 { get { return _v; } } public void 设置边长(int v) { _v=v; } } }
呵呵。
打印 | 张贴于 2004-08-12 14:41:00 | Tag:DotNet
Powered by: Joycode.MVC引擎 0.5.2.0
Copyright © 迷失网络
留言反馈
另外,分析和设计的时候最好明确你所作设计的应用场合,因为用法不一样则设计可能完全不同——因此当你解释你的设计时,也一定要一并解释你做设计时所针对的使用场景。
All in all, "It's *behavior" that software is really all about... and in OOD, the IS-A relationship pertains to *behavior* that can be reasonably assumed and that clients depend on. " - Quoted from Agile Software Development by Rebert Martin, 2003.
OO里椭圆不应该是圆的基类,同样长方形不应该是正方形的基类
因为这个各人有各人的看发,不好用文字说。。
to:John.J.Dengba,过客
我这里定义类名字为矩形,是因为我想不到有什么好的名字而已。
我这里的矩形的意思是四角90度,有对应边长度相等的四边形。
我把长方形和正方形弄成两个类,就是因为我认为在类的表达中,正方形不是长方形。
这里其中包含一个操作上的概念。例如正方形就只能同时改变4边的长度,它不能只改变一边,如果那样的话,就变回长方形了。
这样对于对象是不太实际的。(不过如果把类设计成struct,那就有另外的设计方法)
这可能是编程语言的弱点吧。它无法正确模拟现实中看上去简单,但其实有很多变化的东西。
长方形一定是矩形
作者应该没有错呀
|----自由四边形
|----矩形
|----长方形
|----正方形
针对该文,我有两处“迷失”:
1、在我的几何学知识结构中,“矩形”和“长方形”是同一种几何形状,不知 lostinet 如何解释,难道这里的“矩形”指的是“菱形”,但就算是“菱形”,在几何学里也不对呀?看来我或者是 lostinet 没有“迷失网络”却“迷失几何”了 :> ;
2、lostinet 发表该文究竟要说明什么问题呢??_? 我没有看明白(难道我笨?!),但我想他不会只是为了向我们讲述几何学方面的知识吧? 希望 lostinet 给讲解一下。