八、面向对象的实现 (一)程序设计语言
) K7 y7 ?# `) T. h% p 1.选择面向对象语言5 Q5 X: K# N* ]( M1 F
采用面向对象方法开发软件的基本目的和主要优点是通过重用提高软件的生产率。因此,应该优先选用能够最完善、最准确地表达问题域语义的面向对象语言。
# Z, }0 a! Y* g 在选择编程语言时,应该考虑的其他因素还有:对用户学习面向对象分析、设计和编码技术所能提供的培训操作;在使用这个面向对象语言期间能提供的技术支持;能提供给开发人员使用的开发工具、开发平台,对机器性能和内存的需求,集成已有软件的容易程度。
# D( Q( E2 z; _9 ?) |+ f$ P 2.程序设计风格5 P& k$ X7 a9 T2 V! W. E
(1)提高重用性。
% |. r' s- ^: }5 i8 M& w, L (2)提高可扩充性。
" @$ Z; v7 q% F (3)提高健壮性。 G0 t! z. _! h0 F$ b* n/ u
(二)类的实现
& R V' P, A$ r4 Q 在开发过程中,类的实现是核心问题。在用面向对象风格所写的系统中,所有的数据都被封装在类的实例中。而整个程序则被封装在一个更高级的类中。在使用既存部件的面向对象系统中,可以只花费少量时间和工作量来实现软件。只要增加类的实例,开发少量的新类和实现各个对象之间互相通信的操作,就能建立需要的软件。
9 U$ Y! _3 G& Z2 {+ T+ D 一种方案是先开发一个比较小、比较简单的来,作为开发比较大、比较复杂的类的基础。
" W @+ c. t' V8 V) s) | (1)“原封不动”重用。8 R% v8 _ I5 C7 A3 i
(2)进化性重用。
, E5 Q9 F1 t' o- @ 一个能够完全符合要求特性的类可能并不存在。, V9 A7 {+ _, @
(3)“废弃性”开发。
" \$ l% i# j" Q0 j( M 不用任何重用来开发一个新类。
! q( D5 A' V$ X (4)错误处理。
9 X% _+ K- j7 c6 |3 T 一个类应是自主的,有责任定位和报告错误。
5 `" J' z$ V* F; _' ?+ |1 v& @ (三)应用系统的实现
3 v& [4 |: B4 J3 Q2 C; }. K. O 应用系统的实现是在所有的类都被实现之后的事。实现一个系统是一个比用过程性方法更简单、更简短的过程。有些实例将在其他类的初始化过程中使用。而其余的则必须用某种主过程显式地加以说明,或者当作系统最高层的类的表示的一部分。
8 B' ?8 w: ^/ v* {% p% \5 j 在C++和C中有一个main( )函数,可以使用这个过程来说明构成系统主要对象的那些类的实例。
0 ^8 [. S, x! s (四)面向对象测试; w8 `. B6 L: H. l1 @2 B
(1)算法层。* U3 u5 L- S+ S6 ~
(2)类层。4 e' b& m' ^' Z' V
测试封装在同一个类中的所有方法和属性之间的相互作用。
# G/ c3 w& z+ x- \5 \9 s @ (3)模板层。; v0 ^8 x5 T8 i2 S' f7 r9 E
测试一组协同工作的类之间的相互作用。
3 s3 C, \ P. @9 N6 } (4)系统层。 d9 }( a7 B( w% @" P
把各个子系统组装成完整的面向对象软件系统,在组装过程中同时进行测试。 |