面向对象的方法并不限于创建模拟场景。不论你承认与否,任何程序都在 模拟你所设计的系统。用了OP技术,你就能很容易地将一大堆问题简 化成一个简单的解决方案。 旦创建了类,你就能创建任意多的那个类的对象,然后把它们当作待解 决的问题中的元素来进行操控。实际上,面向对象的编程的挑战之一就 是,如何在问题空间的元素与解决空间的对象之间建立一种一对一的映 射 但是怎样让那些对象来为你干活呢?必需要有办法向对象发请求,这样它 才能工作。比如完成一次交易,在屏幕上画些东西或者按一下开关之类 的。而且每个对象只能满足某些请求。你能向对象发送的请求是由其接口 ( interface)所定义的,而决定接口的则是对象的类型。可以用电灯泡来 作一个简单的例子 Type Name Interfa bri gh tend di mo Light lt new Light () 1t.on(); 接口只管你能向这个对象发什么请求。还必须要有能满足这一请求的代 码。而这些代码,以及隐藏着的数据,组成了实现(imp/ ementation) 从过程编程的角度来讲,事情没那么复杂。类中的方法都是与各种请求相 关联的,因此当你向这个对象提出请求的时候,就会调用这个方法。这个 过程通常被称为,你向一个对象“传了一个消息(提了个请求)”,而这个 对象会决定该如何处置这个消息(执行代码)。 这里,这个类型/类的名字是 Light,而这个具体的 Light对象的名字是 t。你向 Light对象提出的请求有开灯,关灯,让它更亮一点或是暗点。 通过定义 Light类型的“ reference”(It),和用new请求一个新对 象,你创建了一个 Light对象。发送消息的时候,你要用点号 (dot/ period)将对象的名字和那个消息连起来。如果编程的时候用到的都 是已有的类,那么这点知识已经够用了 上面的图表遵循了 Unified Modeling Language(UML)的格式。每个类 都由一个方框来表示,这个类的名字写在方框的顶部,中间是你要关心的 第5页共34页shhgs@wgqqh.com 5 ✁ ✂ 34 ✁ 5 ¶U¥V(µXÈ)îJdXû¡KÙLâhÆF î¡D[1(w5, OOP °±¡;RSr3ÂM N3× (£NµO 3Ô,/¡;¹V(Y×/(¥V;PA 1£ N(*(ÛÜQtEÉÊñJ¶U¥V(áâ(ÞPu3 ÄF4(ÛÜ£N4(¥Vu4 33¥3(£ ¤ Õ¦ÇYÌ¥VQ¡ÒåQÊoî%mRU¥Vì ¦A ;y18Ä3¨SFSTJMÌ|U3Æu/ (àkê×¥Vó;VW´Ì¡;U¥Vì9(ç§$X (interface)DO(àNO$X(0¥V(/ÝEQYZQ 13× (â7 Light lt = new Light(); lt.on(); $XóF¡;U ×¥VìZo%m;VW 3(p à ÌpEP .(,-,ñí(implementation) ^âáâ(zQ©[YZ/*(µÆÚ> ¡(æò ¡U ×¥V!(Mº ×µ × ^â·=Ý¡U3×¥VÍ ,3×(,×)Ïà × ¥VºNOwÄ¢6 ×(íEp) Ë ×///(ÑK Li gh tà ×AT( Li gh t ¥V(ÑK lt¡U Li gh t ¥V!(mYYÇA\3C|]C ^O Li gh t /(Í referen ceÏ(lt) n ew 3×R¥ V¡,3× Li gh t ¥Vì9(M¡%CÍ (d ot/p eri od )¥V(ÑKY×^9QÄÅáâ(Mg(Æ ôm(/YZ Côõ_, J¶(ËG`a, Unified Modeling Language(U M L)(è´ê×/ Æç3×µbQG ×/(ÑK«Fµb(c*4¡%q(