</p>
$ K9 ^ P( w& h 1.关于面向对象方法 " U3 ~& Y% h% j% {# E, ]9 B" X& l
面向对象方法的本质,是主张从客观世界固有的事物出发来构造系统,提倡用人类在现实生活中常用的思维方法来认识、理解和描述客观事物,强调最终建立的系统能够反映问题域,即系统中的对象以及对象之间的关系能够如实地反映问题域中固有事物及其关系。 ( i7 \& I' j8 F% h+ N! Y
面向对象的优点:
- k* I2 W- r. y- F1 v3 i 1)与人类习惯的思维方法一致 : F, ?6 K3 {# x- K N
传统的程序设计方法是以算法作为核心,将程序与过程相互独立。
b9 ^% R) Z# ?" X7 ?, `, F8 D/ ?& S 面向对象方法和技术是以对象为核心,对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系。对象之间通过传递消息互相联系,以实现模拟世界中不同事物之间的联系。
* Z+ M {% z* _3 \$ I2 P% @% S; [ 2)稳定性好 2 z! `$ [; j4 L, R. u' E$ ]
面向对象方法基于构造问题领域的对象模型,以对象为中心构造软件系统。它的基本方法是用对象模拟问题领域中的实体,以对象间的联系刻画实体间的联系。
9 w2 X, x' V3 H! Y/ A 3)可重用性好 3 f( q' S) U% D% l3 y
软件的重用性是指在不同的软件开发过程中重复使用相同或相似的软件元素的过程。
0 P& Y, h: }' W, U' h) e 4)易于开发大型软件产品 / ^; W }8 T( Z# G2 P0 F
在使用面向对象进行软件开发时,可以把大型产品看作是一系列本质上相互独立的小产品来处理,降低了技术难度,也使软件开发的管理变得容易。
; ~; D; C8 v+ g0 K$ ] 5)可维护性好 4 l& m" N V6 y! j
(1)利用面向对象的方法开发的软件稳定性比较好 8 L# U9 J( [0 b. q0 u& }$ K3 N+ j9 s7 I- x
(2)用面向对象的方法开发的软件比较容易修改 - O, T) N+ \3 @# w7 m
(3)用面向对象的方法开发的软件比较容易理解 3 L* ^0 y& w- I0 u# U2 j
(4)易于测试和调试 ) w$ F+ `5 }$ B3 P e
2.面向对象方法的基本概念
3 y1 T8 k# _2 } 1)对象
9 m$ ]+ x' C7 D% u) g* X" ~ 在面向对象程序设计方法中,对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,它由一组表示其静态特征的属性和它执行的一组操作组成。
. g1 I% `! Y4 q1 D5 d 对象的基本特点:
& P2 p2 g$ [- o (1)标识的唯一性
1 Y# E* J7 p0 A a 对象是可区分的,并且由对象的内在本质来区分,而不是通过描述来区分。
6 e: p8 s! x, Z, u8 ]: } (2)分类性
5 A" @' @5 }( c! F. z 指可以将具有相同属性和操作的对象抽象成类。
9 \6 H% A0 q& z- O7 R) f T: H7 @ (3)多态性
% k5 z0 r4 \6 S# N( D 指同一个操作可以是不同对象的行为。 * w# `- K8 q# v
(4)封装性
1 g" k/ h: B# S- z' H 从外面看只能看到对象的外部特征,即只需知道数据的取值范围和可以对该数据施加的操作,根本无需知道数据的具体结构以及实现操作的算法。
$ p/ [0 r4 h) h (5)模块独立性好 & T: } {- j! b" V
对象是面向对象的软件的基本模块,它是由数据及可以对这些数据施加的操作所组成的统一体,而且对象是以数据为中心的,操作围绕对其数据所需做的处理来设置,没有无关的操作。从模块的独立性考虑,对象内容各种元素彼此相结合得很紧密,内聚性强。 : r" M' P( F' [, j2 }6 q' {/ W# o/ z
2)类和实例
" S' i; k. U: }( o5 h$ l 将属性、操作相似的对象归为类。具有共同的属性、共同的方法的对象的集合,即是类。 " u% `7 k, N g4 V5 }$ t* K2 Z
类是对象的抽象,它描述了属于该对象的所有对象性质,而一个对象则是其对应类的一个实例。
% e/ j& m T/ T% z2 N" b 3)消息
7 F$ R' h3 ^2 X) ^% w; u 消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一个要求的信息,它统一了数据流和控制流。 ! T" C% ^, D# x
消息只包含传递者的要求,它告诉接受者需要做哪些处理,并不指示接受者怎样去完成这些处理。 # w8 P2 X- m5 u2 Z
4)继承
, [& W2 F. D* E1 b 继承是使用已有的类定义作为基础建立新类的定义技术。已有的类可当作基类来引用,则新类相应地可作为派生类来引用。
/ R8 d% `- v+ ~3 b) V+ f" a 继承即是指能够直接获得已有的性质和特征,而不必重复定义它们。
0 X+ W4 D1 Y: o7 K1 L 5)多态性 1 L# j2 T" d8 ] }# s5 l
对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。
2 T1 \0 i! o+ O 在面向对象技术中,多态性是指子类对象可以像父类对象那样使用,同样的消息可以发送给父类对象也可以发送给子类对象。
# r2 ^. ~) G" t- V 多态性机制增加了面向对象软件系统的灵活性,减少了信息冗余,而且显著提高了软件的可重用性可扩充性。 # T. U6 U8 O, `1 E+ T( s3 R7 V" Y" [
三、例题分析
4 |. E# x5 T. d; |5 _1 m1 [% k$ d 1.选择题 x8 }4 ]; H; `8 q0 m/ B& A
1)程序是计算任务的
. {: U7 _' j. m" C. k$ F A)处理对象的描述 ) X# R) r3 {/ S& j. }- y ?+ a' K7 w
B)计算方法的表示 4 D/ |) F4 j. a" B: k" h1 f
C)软件动作的描述
- T3 G7 z5 p8 A- U D)处理对象和处理规则的描述
: |8 O* P @( F p# Y 【答案】D H. r+ |4 Y4 S2 ?# e% E; {
2)结构化方法的详细设计,其主要任务是_________。
; I& }6 _, z. @- S' `) m/ P) v A)定义模块的算法 + t3 ^+ d* |& o- d0 Z5 ^
B)给出加工说明 & I% t: G3 s ~, e5 m
C)给出模块结构图 ' Z- x. \" D" Z' ^ w# j
D)设计处理对象 , w3 Z) U1 p* T8 S" V
【答案】C : R% e& w! G1 l$ |9 b
3)结构化程序设计主要强调的是
6 i$ v! S* Y, {: T* ]6 W. } A)程序的规模
2 }5 f8 ]+ \: x2 l3 P3 V6 `. ^ B)程序的效率
) U" W1 w6 T) ?( D: m C)程序设计语言的先进性 6 q$ m7 }+ U0 |% s+ C
D)程序易读性
; A7 ]& j; `# z c0 b" Q0 p" _ 【答案】D * p- h; O4 y2 R+ D9 E5 [
4)程序的三种基本控制结构是 + U6 E! o& t& ^2 k% j
A)过程、子程序和分程序
0 u3 l0 ]. n; r, x. q B)顺序、选择和重复 5 a5 V7 o2 W {7 q0 |* R3 C4 [7 F+ E
C)递归、堆栈和队列
& m ~1 b) W, Z! I' z D)调用、返回和转移
- m7 E& l6 W% L$ J 【答案】B 3 h/ C ?7 p5 q, N$ {
5)程序的三种基本控制结构的共同特点是
& ~, Y/ n' l! e' c0 o/ ?) W A)不能嵌套使用 1 X' x) f: j% U8 g) f( j
B)只能用来写简单程序 9 Y7 I) A% H# Q6 ?& Q& L
C)已经用硬件实现 4 P4 v. q W1 b7 ?; _
D)只有一个入口和一个出口
7 a( n4 M7 w' C, ]& A 【答案】D 0 z" ?. Z4 f( w
6)下面对对象概念描述错误的是 . w( W% V% p% {) U) X: K% N( O# y
A)任何对象都必须有继承性 + |+ _7 y& n; r' y0 ?
B)对象是属性和方法的封装体 $ y. Z! c7 {0 W7 m( F, ^! h& m7 H
C)对象间的通讯靠消息传递 ! @3 D! o3 Y' o, @2 c$ j0 S& }
D)操作是对象的动态属性
+ { a" l# a& p; [: L# \ 【答案】A
& w4 _2 J# [$ v 2.填空题 |