正在加载图片...
Shape draw erase() moveD getcoloro setcol oro Circle Square Triangle 将描述问题之用的术语用于解决问题也是大有裨益的,因为这样你就不再 需要那些在讲述问题和解决方案之间的中间模型了。对于对象,类层次结 构是最主要的模型,由此你从用文字描述真实世界中的系统进到了用代码 描述这个系统。实际上,大家在用OOP设计时会遇到的难题之一是,它 从头到尾太简单了。习惯于用复杂方法解决问题的人可能会一开始就被这 种简单给难住了。 当你继承了一个类时,你也创建了一个新的类。这个新的类不仅包含了已 有类的所有成员(尽管 private成员已经隐藏起来了,是不能访问的), 更重要的是它复制了基类的接口。于是所有能够传给基类的消息也都可以 传给派生类。由于我们根据能它能接受什么消息来判断这是什么类,因此 这就意味着派生类“和基类是属于同一类型的”。在上面的例子里,“圆 也是一种形状”。这种由继承而产生的类的相等性是一扇能让你理解 OoP意义的门。 既然基类和派生类具有相同的基本接口,那么这个接口的背后就必须跟着 实现。也就是当对象收到某个消息的时候,它必须能执行一些代码。如果 你只是继承了一个类,其他什么都不做,那么基类里的方法会直接带进派 生类。也就是说派生类的对象不但与基类的对象的类型相同而且行为也 样。这可没什么吸引力 你有两种办法来区分新的派生出来的类和那个原来的基类。第一种方法很 简单:直接往派生类里加新的方法。这些新的方法不属于基类的接口。也 就是说由于基类不能完成所有的工作,你必须加上更多方法。这种简单原 始的继承方法常常是解决问题的完美方案。然而你还得仔细看看基类是不 是也需要这些方法。对于OoP的设计,这种反复发现的过程是很常见 的 第10页共34页shhgs@wgqqh.com ￾ 10 ✁ ✂ 34 ✁ 10 釈uˆ(±ƒˆ)£N‡ˆ[Âmâã( æ™ ¦¡XÁ î%YÌF©‡ˆ£NµOu4(*4œ,¥)¥V /ä¨I Úbå%(œ çò¡ˆ…Ké<ñº»*(w5tg,ˆp€ é ×w5ñJ ÂæFˆ OOP [1ºIg(Uˆu3 A ÉgçÉ ,bè)ˆ‰Šµ£N‡ˆ(ªÝ;º3= † ¬Ué, ¡öK,3×/ ¡[Ÿ,3×R(/ ×R(/XÇ!",ô m/(DmŽš (rF pri vate Žšôõ 9Q, X;‡() %(A‰n,Y/($X)Dm;_¬Y/([ÆÝE ¬Ç0/ç);A;$%ZQêv Z/ æò ¹¸.Ç0/Í Y/))‡3/(ÏFJ¶(âË Í ß [3†ëÏ †çöKà¬0(/(>-3ë;Ç¡¢£ OOP ¹(ì í;Y/Ç0/Am>‡(Y $X YZ ×$X(co›¡. ñí[ ¥V‹g´×(M Ao›;íE3Ìp€ÄÅ ¡óöK,3×/ §GZÆXT YZY/Ë(µºÒ$¥tÇ 0/[$Ç0/(¥VX„Y/(¥V(/>‡àkE™[3 ¦ ݜZî+ã ¡me†RQ R(Ç0!Q(/Y×åQ(Y/3†µŠ 7Ò$ÞÇ0/ËäR(µ ÌR(µX))Y/($X[ $ç)Y/X;ŽDm(y1 ¡o›äJVµ † å (öKµ··£N‡ˆ(ïµO;ࡉðu<<Y/X [î% ̵¥) OOP ([1 †>‰ìí(^⊷ (
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有