李威 さぽている

小说翻译,日语相关转移至http://blog.hjenglish.com/liwei

对.Net第二次作业补充题目的思索[8.3追加]

8.3再追加
当自己陷入僵局时,最好和同事讨论下,看看他们如何做的~~
第一次作业还没做时,我听刘(武)讲过他的思路,虽然不是很难的题目,但听他说过后,自己的思路更加清晰了,然后没花多少时间就做出来了。
今天无法解决的时候,去看了下他的情况,他开口就说正方形只继承了**,刚好就是我的难点。于是,按他的方式解决了。正方形只能继承一个,我继承的是矩形,那如何算到菱形里呢?在类里不可能,那就在实例化时直接修改菱形的几个静态变量,加到菱形里。看到他的方式,眼睛就一亮,我怎么就没有去想实例化时呢?
修改时,要读取边长,于是试了下属性,中间出了个问题,原来属性名不能和变量同名。因为那个变量私有,我把四边形的那个变量改为protected了,不知有没有更好的解决方法~~

 

public   class  Quadrangle : IGraphics
    

        
protected   double  a;
        ……
     }

class  Rectangle : Parallelogram
    
{……}
class  Parallelogram : Quadrangle
    
{……}
class  Square : Rectangle
    
{        
        
public   double  aBorder
        
{
            
get
            
{
                
return  a;
            }

        }


     }


 



总结昨天的想法,主要有以下问题
1.正方形只能继承一个
2.计算四边形面积调用三角形
3.计算非四边形,包括圆和三角形

今天实际编码后,第一个问题仍有难度,尚需考虑。
第二个问题很简单,直接将三角形的面积计算方法COPY过来就可以了。
第三个问题写一个新类NotQuadrangle,包含几个静态变量,让圆和三角形继承它就可以了,要显示数据时,直接调用NotQuadrangle。

刚才显示了下结果,正方形没算到菱形里去~~哎,现在还没思路~~郁闷~~



对于求所有实例的平均边长,最大最小边长,初一看,觉得很简单,把所有边拿来一平均,不就完成了吗~
再一想,没那么简单,看看我的程序,实例的作用域都在不同的else里,如何保存这些实例呢。再说类的变量也不能直接用,还是得从类内部着手。

说到类的内部,就想到在构造函数里做文章。只要实例化一个类,就把当前实例的平均边长,最大最小边求出。嗯,求所有实例的话,那就用3个静态变量保存以前的值,实例化当前的一个对象时,就修改那3个值。这个思路可以满足初步的要求。

再仔细想想细节。当子类实例化时,会调用父类,这样只要是四边形就都会算进来。满足“各种形状类型的包含关系”,但也有问题,正方形既是菱形又是矩形,而我实现它时,继承的是矩形,计算所有菱形的平均边长时,会忽略掉正方形。还有一个我个人设计上的问题,计算四边形面积时,我是将其分成两个三角形来计算的,直接调用的三角形求面积方法,这就会增加到三角形的平均边长里去。

要说到问题,还不止这些。非四边形包括圆和三角形,要合在一起就不能用前面的方法。圆是一条边吧?呵呵,应该是的。

看来问题多多啊,嗯,慢慢来解决。有一句话没看懂啊:“要求利用类的重写”。<重写?不是重构,重載。專有名詞?如果只是重新写类,爲何要特意写出来?啊,算了,最后再考虑吧~

啊,服了,汉字变成点了~~
(如果不能输入中文,请切换到HTML视图,再切换到正常视图) 这个难道是专门针对日文系统的人写的?害我多打了几个繁体字~

posted on 2006-08-02 18:21 李威 阅读(171) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: