正在加载图片...
数据元素,而方法( method,指属于这个对象的函数。它接受你传给这 个对象的消息)则列在方框的底部。通常UML的设计图只会显示类的名字 以及 public方法,所以中间部分是不显示的。如果你只对类的名字感兴 趣,那么最下面的那部分也可以不显示。 对象会提供服务 当你开发一个程序或者分析一个程序的设计时,理解对象的最佳的方式是 把它们当作“服务的提供者”。程序本身会为用户提供服务,而它通过使 用其它对象所提供的服务来完成这个工作。你的任务是制作(或者在更理 想的情况下,从现有的代码厍中找出)一组能为解决问题提供最佳服务的 对象 这么做的第一步是问“如果我可以像变魔术那样把东西从帽子里拿出来, 我该拿出些什么东西,哪些对象能立即帮我解决问题?”举例来说,假设 你要创建一个簿记程序。可能你会想应该有一些保存预设的输入界面的对 象,一组进行簿记计算的对象,以及一个能在各种打印机上打印支票和发 票的对象。有些对象或许已经有了,但是那些还没有的应该是什么样的 呢?它们应该提供哪种服务,还有它们要完成任务的话,又该用哪些对象 呢?如果你不断分析下去,最终你会发现,不是“那个对象写起来很容 易”就是“那个对象已经有了。”这是将问题分解成一组对象的一个合理 的方法 将对象视作服务的提供者还有一个额外的优点:能提高对象的内聚性 ( cohesion)。内聚性高是高质量的软件设计一个基本要求:就是说软件 的各种组件(比如对象,也可以是方法或类库)应该能很好的“组装在 起”。设计对象时常犯的一个错误就是,往对象里塞了太多的功能。举例 来说,设计支票打印模块的时候,你也许会决定设计一个能通晓所有排格 式和打印工作细节的对象。很快你就会发现这个任务太艰巨了,或许应该 用三个或是更多对象来完成这个工作。第一个对象应该是支票格式的目录 册,通过査询这个目录册可以获得该如何打印支票的信息。第二个对象, 或是一组对象,应该是能分辨各种打印机的通用的打印接口(但是对簿 记,它一窍不通——这个模块应该买来而不是自己写)。以及使用上述两 个对象所提供的服务的,能最终完成任务的第三个对象。由此每个对象都 提供一组互补的功能。在一个良好的面向对象的设计中,每个对象都应该 只作一件事,并且作好一件事,而不是去作太多的事情。就像这里看到 的,这样不仅能发现哪些对象应该买(打印机接口对象),而且能设计出今 后能复用的对象(支票格式的目录册) 将对象视作服务的提供者还是一种很了不起的简化工具。它不仅在设计过 程中有用,而且还能帮助别人理解你的代码或者复用这个对象——如果他 们认同这个对象所提供的服务的话。将对象视作服务的提供者能使对象更 容易地被用于设计。 第6页共34页shhgs@wgqqh.com ￾ 6 ✁ ✂ 34 ✁ 6 ,ÛÜ àµ(method Œ)) ×¥V(d,A$%¡¬ ×¥V()0¾Fµb(h· U M L ([1Ëóº×/(ÑK EP p u b l i c µ DE*4X×(ÄÅ¡ó¥/(ÑKef g YZbƶ(Y[ÝEX×   ¡ì3×âh|š3×âh([1 ¢£¥V(bh(µ´ PA 1Í jþ(‚ƒšÏâh pº™ˆ0‚ƒjþ àA^ç ˆ§A¥VD‚ƒ(jþQŽ ×y1¡( þn1(|šF¢ |([Æ ím(p€i*j! )3-;™£N‡ˆ‚ƒbhjþ( ¥V ZT(3‡Í ÄÅÝE}ák±Y¦PlË@!Q w@!́Z mÌ¥V; no£N‡ˆÊÏBâQ$ Z[ ¡%Ÿ3×pqâhÝ;¡º|vwm3Ìù?[(rt»¶(¥ V 3-tEpq12(¥V EP3×;Fچ]s3J]stuì u(¥VmÌ¥V|Žôõm, YÌœm(vwZ¦( QÊAvw‚ƒm†jþ mA%Ž þ(› üwˆmÌ¥V QÊÄÅ¡XvÆJ b:¡ºìí XÍ Y×¥V«9QŠR SÏÍ Y×¥Vôõm,Ï ‡ˆ£Ž3-¥V(3×¢ (µ ¥V·1jþ(‚ƒšm3×;½(wC7;‚©¥V(x (coh esi on )x©©‹(yÅ[13×Y %7$yÅ (چ-Å(8Ä¥V [ÝEµ|/i)vw;Š‘(Í -zF3 9Ï[1¥V·{(3×Ó| Þ¥VË},ÉV(ô;Bâ Q$ [1tu]sœ~(M ¡[ŽºNO[13×;Dm€è ´]sy1uv(¥VŠs¡ºìí × þɁ, |Žvw ˆL×|V¥VQŽ ×y13×¥Vvwtuè´(‚ƒ „ ^H… ׂƒ„ÝEó‰wÄ]stu(†×¥V |3-¥V vw;‡Ú†]s3(ˆ(]s$X (¥p q A3ˆXyy ל~vw5QàXýþ« )EPçˆJe ×¥VD‚ƒ(jþ( ;b:Ž þ(L×¥Vçòê×¥VÆ ‚ƒ3-e(ô;F3׉‘(¶U¥V([1* ê×¥VÆvw ó13Ł žk1‘3Ł àXJ1ÉV([} Ë<g ( ¦XÇ;ìímÌ¥Vvw5 (]s3$X¥V) àk;[1!d ;‰ˆ(¥V(tuè´(‚ƒ„) ¥V·1jþ(‚ƒš3†Š,X9( NyAAXÇF[1^ â*mˆ àk;oŠ¼ª¢£¡(p€|š‰ˆ ×¥VyyÄÅG ه ×¥VD‚ƒ(jþ(›¥V·1jþ(‚ƒš;ç¥V RSr=ˆ)[1
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有