西安交通大学研究生面向对象技术考试要点
面向对象复习提纲

过程化的方法与面向对象方法的差别在过程化的方法中,系统是围绕着过程来组织的,系统的运行通过过程间的数据传送来实现的,在该方法中过程和数据清楚地分开,因此重点分别集中在数据结构、算法和顺序步骤上,因此过程非常难以重用。
过程化方法还缺乏强有力的可视化建模技术。
该方法在分析和实现不同阶段的概念的差别很大,因此需要进行概念上的转换,因此造成了分析、设计和实现间的范畴移位。
设计模型离实现还有很长的一步。
而面向对象的方法中系统是围绕着对象组织的,系统的运行是通过对象间的消息传递而运行的,相关的数据和行为捆绑在对象中。
将问题域建模为对象使得在实现时非常自然地反应现实问题。
可视化的模型表达能力非常强使得人们易于理解。
支持强有力的概念例如抽象、封装、继承、多态等。
可视化的问题模型可以演变为问题解决模型。
设计模型距离实现只有很小的一步。
-------------------------------------------------------------------------------面向对象方法的益处需求分析结构化技术的过程分析和数据分析之间的边界从未解决。
数据流图的过程世界与实体关系图的数据世界难以共存。
过程和数据分析在某些场合可以满足要求,而在某些场合就会发生冲突。
这种冲突在实时系统模型中尤为突出,如控制过程与数据模型的对应关系经常变得不清晰。
面向对象方法在生命周期的早期就将过程和数据融合在一起。
尽管不能明确地称为“过程和数据分析”,但是在谈论面向对象时称“动态和静态分析”更为妥当,使用面向对象概念将这两方面的分析很好地协调起来。
系统设计在系统设计时,面向对象的方法既有优势,又有不足。
面向对象的优势是使设计者将软件中棘手的问题利用封装特性隐藏起来,这些问题包括难以理解的数据结构、复杂的组合逻辑、详细的过程和数据间的关系、高深的算法及关键的设备驱动程序等。
面向对象方法的缺点是应用封装和继承性是结构本身变得复杂。
面向对象知识点总结

⾯向对象知识点总结1、⾯向对象三⼤特征封装:封装就是隐藏对象的属性和实现细节,仅对外公开接⼝,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和⾏为(或功能)相结合,形成⼀个有机的整体。
继承:继承就是⼦类继承⽗类的特征和⾏为,使得⼦类对象(实例)具有⽗类的实例域和⽅法,或⼦类从⽗类继承⽅法,使得⼦类具有⽗类相同的⾏为。
多态:多态指同⼀个⾏为具有多个不同表现形式或形态的能⼒,是指⼀个类实例(对象)的相同⽅法在不同情形有不同表现形式,使具有不同内部结构的对象可以共享相同的外部接⼝。
2、类与对象对象:对象是类的⼀个实例,有状态和⾏为。
类:类是⼀个模板,它描述⼀类对象的⾏为和状态。
⼀个类可以包含以下类型变量:(1)局部变量:在⽅法、构造⽅法或者语句块中定义的变量被称为局部变量。
变量声明和初始化都是在⽅法中,⽅法结束后,变量就会⾃动销毁。
(2)成员变量:成员变量是定义在类中,⽅法体之外的变量。
这种变量在创建对象的时候实例化。
成员变量可以被类中⽅法、构造⽅法和特定类的语句块访问。
(3)类变量:类变量也声明在类中,⽅法体之外,但必须声明为 static 类型。
3、构造⽅法每个类都有构造⽅法。
如果没有显式地为类定义构造⽅法,Java 编译器将会为该类提供⼀个默认构造⽅法。
在创建⼀个对象的时候,⾄少要调⽤⼀个构造⽅法。
构造⽅法的名称必须与类同名,⼀个类可以有多个构造⽅法。
4、封装封装是指⼀种将抽象性函式接⼝的实现细节部分包装、隐藏起来的⽅法。
封装可以被认为是⼀个保护屏障,防⽌该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接⼝控制。
修改属性的可见性来限制对属性的访问(⼀般限制为private),可通过getter和setter⽅法访问和操作类中私有成员变量。
如下代码:class BookClass{private String title;private int pageNum;BookClass(){};// 设置名称public void setTille(String title) {this.title = title;}public String getTitle() {return title;}// 设置页数public void setPageNum(int pageNum) {if (pageNum>=200) {this.pageNum = pageNum;} else {System.out.println("页数输⼊错误,图书页数不能⼩于200页,设置为默认值200");this.pageNum = 200;}}public int getPageNum() {return pageNum;}// 显⽰图书信息public void detail() {System.out.println("图书名称为:"+title+",页数为:"+pageNum);}}5、继承在 Java 中通过 extends 关键字可以申明⼀个类是从另外⼀个类继承⽽来的。
西安交通大学16年9月课程考试《面向对象程序设计》作业考核试题答案

西安交通大学16年9月课程考试《面向对象程序设计》作业考核试题1:定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为()。
A:int *p=new int [30];B:int *p=new int(30);C:int *p=new [30];D:*p=new int [30];正确答案:A2:下面的类中,()不是由抽象基类ios直接派生出来的。
A:istreamB:ostreamC:iostreamD:fstreambase正确答案:C3:对于一个类的构造函数,其函数名与类名()。
A:完全相同B:基本相同C:不相同D:无关系正确答案:A4:下列的符号常变量定义中,错误的定义是()。
A:const M=10;B:const int M=20;C:const char ch;D:const bool mark=true;正确答案:C5:当一个类对象离开它的作用域时,系统自动调用该类的( )。
A:无参构造函数B:带参构造函数C:拷贝构造函数D:析构函数正确答案:D6:假定一个类的构造函数为“A(int aa,int bb) {a=aa; b=aa*bb;}”,则执行“A x(4,5);”语句后,x.a和x.b的值分别为( )A:4和5B:5和4D:20和5正确答案:C7:设置虚基类的目的是()。
A:简化程序B:消除二义性C:提高运行效率D:减少目标代码正确答案:B8:基类和派生类可以分别称为()。
A:“大类”和“小类”B:“父类”和“子类”C:“小类”和“大类”D:“子类”和“父类”正确答案:B9:一个类的析构函数通常被定义为该类的( )成员。
A:私有B:保护C:公用D:友元正确答案:C10:下列对继承关系的描述中,()是正确的。
A:在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;B:在公有继承中,基类中只有公有成员对派生类的对象是可见的;C:在私有继承中,基类中只有公有成员对派生类是可见的;D:在私有继承中,基类中的保护成员对派生类的对象是可见的;正确答案:D11:假定AB为一个类,则执行“AB *px=new AB[n];”语句时将( )。
西安交通大学18年3月课程考试《面向对象程序设计》作业考核试题

谋学网【奥鹏】[西安交通大学]西安交通大学18年3月课程考试《面向对象程序设计》作业考核试题试卷总分:100 得分:100第1题,在一个类的定义中,包含有()成员的定义。
A、数据B、函数C、数据和函数D、数据或函数第2题,采用重载函数的目的是()。
A、函数模板也是一个具体类型的函数B、函数模板的类型参数与函数的参数是同一个概念C、通过使用不同的类型参数,函数模板可以生成不同类型的函数定义D、用函数模板定义的函数没有类型第3题,关于getline()函数的下列描述中,错误的是()。
A、该函数中所使用的终止符只能是换行符B、该函数读取字符串时,遇到终止符时便停止C、该函数读取的字符串长度是受限制的D、该函数可以用来从键盘上读取字符串第4题,设置虚基类的目的是()。
A、简化程序B、消除二义性C、提高运行效率D、减少目标代码第5题,假定AB为一个类,则执行"AB*p=new AB(1,2);"语句时共调用该类构造函数的次数为( )。
A、0B、1C、2D、3第6题,下列说法错误的是_____。
A、在类中不能对所定义的数据成员进行初始化;B、类的公有成员函数是类与外界的接口;C、同一个类的两个对象占用相同的内存空间;D、类实现数据隐藏。
第7题,下面关于引用的说法错误的是( )。
A、引用是被引用对象的别名B、对引用的修改就是对被引用对象的修改,反之亦然C、引用不一定立即初始化D、引用不能建立数组第8题,对于动态分配内存空间描述正确的是()。
A、使用new运算符分配的内存空间的长度必须是常量B、delete运算符可以释放动态的存储空间和静态的存储空间C、用new分配的内存空间是不连续的D、delete运算符只能以释放由new分配的动态存储空间第9题,构造函数不具备的特征是()。
A、构造函数的函数名与类名相同B、构造函数可以重载C、构造函数可以设置默认参数D、构造函数必须指定类型说明第10题,下列关于运算符重载的描述中,______是正确的。
西安交通大学3月课程考试《面向对象程序设计(高起专)》作业考核试题

31:不能通过派生类对象引用从私有基类继承过来的任何成员。( )
A:错误
B:正确
正确答案:B
32:对使用默认参数的构造函数,如果在类外定义构造函数,应该在定义构造函数时指定默认值( )。
A:错误
B:正确
正确答案:A
33:如果定义了一个类的对象数组,该数组有10个元素,则要调用10次构造函数来对每个元素初始化。( )。
A:错误
B:正确
正确答案:A
49:在用class定义一个类时,如果不加声明,数据成员和成员函数默认的访问权限是public。( )
A:错误
B:正确
正确答案:A
50:友元类必须被说明为公用成员。( 案:A
D:20和5
正确答案:C
15:关于运行时多态的下列描述中,()是错误的。
A:运行时多态是以虚函数为基础的;
B:运行时多态是在运行时确定所调用的函数代码的;
C:用基类指针或引用所标识的派生类对象来操作虚函数才能实现运行时多态;
D:运行时多态是在编译时确定操作函数的。
正确答案:D
16:下面是五条顺序出现的声明语句,非法的初始化语句是()。
B:x [a]
C:x->a
D:x.a
正确答案:D
5:继承机制的作用是( )。
A:信息隐藏
B:数据封装
C:定义新类
D:数据抽象
正确答案:C
6:面向对象软件开发中使用的OOD表示( )。
A:面向对象分析
B:面向对象设计
C:面向对象语言
D:面向对象方法
正确答案:B
面向对象程序设计20年 西交大考试题库及答案

当一个类对象离开它的作用域时,系统目动调用该类的(???) 假定AB为一个类,则执行“ABa[10]:语句时调用该类无参构造函数的次数为(???) 假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的 类型为(??) 下述静态数据成员的特性中,(是错误的。 假定变量定义为intx=5;",要使成为x的引用(别名),m应定义为(?) 假定AA为一个类,a为该类私有的数据成员, Getvalue()为该类公有函数成员,它 返回a的值,X为该类的一个对象,则访问x对象中数据成员a的格式为(??)
函数重载是指()
当类中的一个整型指针成员指向一块具有 sizeof(int大小的存储空同时,它最多 能够存储(0个整数。 若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字(??)放在 函数原型或函数头的前面 类的析构函数是一个对象被(???)时自动调用的 由C++目标文件连接而成的可执行文件的缺省扩展名为( ()是给变量取一个别名,它引入了变量的同义词 关于面向对象系统分析,下列说法中不正确的是(???)。 假定AA为一个类,a()为该类公有的函数成员,X为该类的一个对象,则访问X对象 中函数成员a)的格式为(??)。 函数原型语句正确的是()。 C++编译系统确定调用是具体对象的过程称为关联。C++有()关联。 调用一个成员函数时,使用动态关联的情况是() C++中声明常量的关键字是() 带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构 造函数,这样将对虚基类的子对彖初始化()。 假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为 (??) 在关键字pu后面定义的成员为类的(??)成员 类中定义的成员默认为(7?)访问属性。 cn是某个类的标准对象,该类是()。
西安交通大学《面向对象程序设计》作业考核试题

西安交通大学《面向对象程序设计》作业考核试题一、单选题1.??C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是()。
A. 增加了一些新的运算符B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必须用原型[正确]D. 引进了类和对象的概念??????满分:2??分2.??如果一个类至少有一个纯虚函数,那么该类称为().。
[正确]A. 抽象类B. 虚基类C. 派生类D. 以上都不对??????满分:2??分3.??假定AB为一个类,则执行“AB r1=r2;”语句时将自动调用该类的( )。
A. 无参构造函数B. 带参构造函数C. 赋值重载函数[正确]D. 拷贝构造函数??????满分:2??分4.??带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化()。
A. 与虚基类下面的派生类个数有关B. 多次C. 二次[正确]D. 一次??????满分:2??分5.??派生类的构造函数的成员初始化列表中,不能包含()。
A. 基类的构造函数;B. 派生类中子对象的初始化;[正确]C. 基类的子对象初始化;D. 派生类中一般数据成员的初始化;??????满分:2??分6.??由C++目标文件连接而成的可执行文件的缺省扩展名为()。
A. cpp[正确]B. exeC. objD. lik??????满分:2??分7.??以下叙述中正确的是()A. 使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值[正确]B. 使用const定义的常量名有类型之分,其值在程序运行时是不可改变的C. 在程序中使用内置函数使程序的可读性变差D. 在定义函数时可以在形参表的任何位置给出缺省形参值??????满分:2??分8.??下列不是C++基本数据类型的是()。
A. int[正确]B. stringC. charD. void??????满分:2??分9.??下列函数中,()不能重载。
面向对象程序设计 考试题型与主要知识点

数组的声明、初始化、ห้องสมุดไป่ตู้用 对象数组* 指针变量的定义、运算
第2页共3页
指针与数组 指针与函数 对象指针* 指向类成员的指针
6、继承
派生类定义* 派生类的构造和析构函数* 类型兼容* 二义性问题及其解决方法*
7、多态
函数重载* 运算符重载* 动态多态(虚函数)* 抽象类概念
8、其他
面向对象方法有关概念 C++语法基础* 自定义数据类型(typedef,结构体、联合体、枚举型)
2、函数
函数的定义、调用* 参数传递(地址传递涉及数组、指针)* 内联函数 默认形参值*
3、类与对象
类的定义与使用* 类成员的访问控制属性* 构造函数和析构函数* 组合类*
4、数据的共享与保护
作用域、生存期、可见性* 类的静态成员* 类的友元* 常类型*
基本题型:
一、选择题 (每小题 1 分,共 20 分) 二、程序分析题 (每小题 5 分,共 20 分) 三、程序填空题 (每空 4 分,共 20 分) 四、程序改错题 (每处 5 分,共 15 分) 五、编程题 (2 题,共 25 分)
第1页共3页
主要知识点: 1、面向对象程序设计基本概念与语法基础
模板(函数模板、类模板) 流类库与输入输出(格式控制、文件输入输出) 异常处理
第3页共3页
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.绪论软件=程序+数据+文档;软件工程=过程+方法+工具(过程:when、in what order方法:what);软件过程:是指一套关于项目的阶段、状态、方法、技术和开发、维护软件的人员以及相关Artifacts(计划、文档、模型、编码、测试、手册等)组成。
三种方法:UP(the unified process),The OPEN Process,OOSP(The Object-Oriented Software Process)。
2.软件工程模型回顾软件过程的基本模型:线性顺序模型:瀑布模型(Waterfall);进化模型:原型法模型(Prototyping);基于构件的开发模型(Component-Based Development)。
迭代模型:增量模型(Incremental);螺旋模型(Spiral)其他(Formal,RAD,4GT) 2.1瀑布模型(Royce,1970)历史最悠久、应用最广泛,虽然Royce 提出的瀑布模型支持反馈环,但大多数使用该过程模型的机构均将其视为严格线性的过程模型。
瀑布模型的流程(无反馈环):分析→设计→编码→测试。
缺点:①实际项目很少按照该模型给出的流程进行。
虽然线性容许迭代,但这种迭代是间接的,且极容易导致混乱。
②客户常常很难清楚地给出所有需求,但该模型却要求非得如此,并且不能忍受项目开始阶段自然存在的不确定性。
③客户必须有足够的耐心,因为软件产品的运行版本一直要等到项目开发周期的晚期才能得到。
④如果直到检查运行程序时才发现大的错误,其后果很有可能是灾难性的。
⑤线性顺序会导致“阻塞状态”,即等待时间> 开发时间。
2.2原型法模型(Bernard Boar,1984)帮助客户明确其需求(以增量方式进行)原型法模型的流程(环状)规格描述、开发和验证等阶段交织在一起;原型的本质:“口香糖+ 打包绳”。
优点①开发者与客户之间的误解,可通过对系统功能的“示范”而被识别出来。
②客户在使用原型法模型期间,可以发现新的需求或找出未发觉的问题。
③可大量节约开发成本,并可提高系统的应变能力。
缺点①原型只包含局部功能,难以掌握系统的整体动态状况。
②许多机构认为在原型上花费过多资源是一种浪费,因为原型一般(二般呢?……) 无法成为真正的系统而必须抛弃。
③维护工作较为困难。
2.3基于构件的开发(Component-Based Development,CBD)出发点:复用;基础:庞大的可复用软件构件库+ 构件的集成框架;CBD 的典型代表:统一软件开发过程(Unified Software Development Process,USDP)优点①能显著减少软件开发工作量(70%),从而能显著降低开发成本(84%) 和开发风险。
②软件产品可以尽快交付客户。
缺点①需求折衷无法回避,可能导致系统与客户实际需求背离。
②当可复用构件的新版本不受开发者的掌控时,系统的演化能力将可能受损。
未来:面向对象技术将使CBD 如虎添翼,因为面向对象技术能够开发出大量可复用的构件。
2.4增量模型:融合了瀑布模型的基本成分和原型法模型的进化特征;每一个线性序列产生软件的一个可发布的“增量”;任何增量的处理流程均可以结合原型法模型;第一个增量往往是核心的产品增量模型vs.原型法模型:与原型法模型最大的不同在于,增量模型特别强调每一个增量均发布一个可操作产品,亦即早期的增量是最终产品的“可拆卸”版本。
优点①不必等到最终产品完成,客户便可以从早期增量受益。
②客户可以把早期增量作为原型,并为后期增量提出需求。
③尽管某些增量可能存在问题,但是整个项目的风险较低。
局限性①增量不能太大②每个增量均应具备一定功能③客户需求与增量大小之间的映射应匹配。
发展:极限编程。
2.5螺旋模型(Boehm,1988)吸收了瀑布模型和原型法模型的优点;增加了风险分析;使软件的增量版本的快速开发成为可能。
优点①使用原型实现作为降低风险的机制。
②在系统开发初期,风险性高的部分首先被考虑,从而能及早发现错误、降低风险并减少开发成本。
③在编写软件时,已有产品可供运行或“示范”。
缺点①客户对该模型的可控性常常产生疑虑。
②开发者需要具备和掌握较多风险评估的知识和技术。
③如果某个大风险未被及时考虑,会给后续开发造成困难。
2.6形式化模型(Formal)的局限性:开发很费时、很昂贵。
具有使用形式化模型所必需背景的开发者寥若晨星,尚需多方面的培训。
当客户对形式化模型一无所知时,开发者无法将该模型作为和客户进行通信的机制。
2.7快速应用开发(RAD)强调极短的开发周期;是线性顺序模型的一个“高速”变种;与增量模型具有相似性;通过使用基于构件的建造方法实现快速开发;RAD主要用于信息系统开发。
缺点①对于大型软件开发项目必须有足够的人力资源支持②要求客户和开发者均应在短的时间框架内完成各自相应的快速活动,任何一方爽约均会导致项目失败③当系统难以模块化时,或者当高性能是系统的主要指标时,RAD 将可能失效④RAD不适合技术风险高的情况2.8第四代技术(4GT)是多种软件过程模型的综合;包含了一系列软件工具;开发者在更高抽象层次上描述软件规格;软件工具根据开发者的软件规格描述自动生成源代码。
优点①显著缩短了软件的开发时间②显著提高了建造软件的生产率。
缺点①目前的4GT 工具易用性不够高②目前的4GT 工具生成的源代码太低效③使用4GT 工具开发的大型软件产品的可维护性令人生疑。
未来:4GT与基于构件的模型相结合后,将可能成为软件开发的主流方法。
3.面向对象概述问题空间中,对象是现实世界中存在的实体应用所关心的抽象,概念、规则、事件、或者具有明确边界和意义的具体事物。
解空间中,对象是问题空间中的对象在计算机系统中的表示, 封装(encapsulation) 了数据和行为的通信单位。
对象的非严格记法:<对象> ::= <接口,数据,行为>。
对象的基本特征①每个对象均有自己的惟一标识,从而区别于 其他对象。
②对象之间通过消息进行通信。
③对象总是处于一 定的状态。
④对象有若干种行为。
⑤对象的行为分为三类:创建新对象、与其他对象通信、改变自身状态。
⑥对象的状态只能被自身的行为所改变。
⑦某个对象的状态可以由多个其他对象的状态构成。
类是创建对象的模板问题空间中:类代表着具有类似性质的一组对象;类中的每一个对象即为类的不同实例。
解空间中:类是对一组对象的抽象,集中了该组对象的共同特性。
类实际上是具有特定功能的模块。
类vs. 对象:静 vs. 动。
抽象数据类型 (Abstract Data Type ,ADT)是对一组对象的更高层次抽象。
ADT = 数据 + 操作。
ADT vs. 类:类=ADT+实现(可能只是部分);类“瘦”极限(未进行任何实现)=ADT ;“胖”极限(完全实现),有效类。
类间关系:继承 (inheritance);聚合 (aggregation);关联 (relationship)。
继承的含义:是一种“求同存异”的高度抽象方式。
(一般化(generalization),具体化(specialization))。
一般化、具体化、继承等术语均是复用思想的体现;一般化和具体化是对同一个类间关系的不同角度审视:父类是子类的一般化 (从父类角度看);子类是父类的具体化(从子类角度看)。
继承强调一般化 / 具体化关系中共享属性和操作的机制。
聚合的含义:表示“部分——整体”关系(组元类 (component class),组合类(assembly class))。
组合对象的存在依赖于组元对象。
性质:传递性 (递归聚合的基础);逆对称性。
关联的含义:对象实例之间的物理或概念联结被称为链;关联是对一组语义与结构相似的链的抽象;链是关联的实例。
聚合 vs. 继承:聚合更强调对象实例之间的关系,本质上是“与关系”(is partof ,ISP)继承更关注对象类之间的关系,本质上是“或关系”(is a,ISA)。
聚合 vs. 关联:聚合是关联的一种特殊形式;聚合与关联之间的模糊差异无关紧要。
消息是对象之间进行通信的构造或结构;消息分为请求消息和完成消息两种;消息模式:发送对象、接收对象、内容。
事件指对象之间一次消息的传递;多个事件按照时间顺序可构成事件序列。
消息 vs. 事件:静 vs. 动。
消息与对象:一个对象能接收不同形式不同内容的多个消息。
相同形式的消息可以送往不同的对象。
对于相同形式的消息,不同对象可以有 不同的解释,可以做出不同的反应。
消息与方法:对象接收到有效消息后,总会以某种行为做出适当反应。
期间,对象行为复用了类操作的代码实现(即类方法)。
消息与方法可视为同义词。
消息与代码无关,而方法是操作的代码实现。
消息传递 vs. 过程调用:当同一发送对象在不同时刻向同一接收对象多次发送相同消息时,接收对象依其当前状态不同可以做出不同反应。
消息传递可以异步进行,从而允许并行与分布执行。
如果过程体中只有局部变量,当同一调用者用相同参数值调用同一过程时,其调用结果在任何时刻都必然相同。
过程调用只能同步,其本质是串行执行。
多态性:含义:同一个操作可以是多个不同类的行为。
不同对象接收到同一个消息后,可产生完全不同的反应。
同一个消息可调用不同的方法。
意义:允许每个对象以自己最合适的方式去响应共同的消息,从而增强软件的灵活性和可复用性。
面向对象的特性:标识惟一性;分类性;多态性;继承性。
面向对象的主题:抽象;封装;归并数据与行为;共享/复用;强调对象结构而不是程序结构。
面向对象 = 对象 + 分类 + 继承 + 消息4. 典型面向对象方法摘要面向对象方法的发展:面向对象方法最早于 1986 年提出。
刚一开始就有五、六种面向对象方法。
之后的五年间迅速涌现出了 50 余种面向对象方法。
部分著名学者:Grady Booch ;James Rumbaugh ;Ivar Jacobson ;Coad 、Yourdon ;Shlaer 、Mellor ;Martin 、Odell 。
六种典型面向对象方法:①面向对象分析与设计 (OOA/OOD),Grady Booch ②对象建模技术 (OMT),James Rumbaugh ③面向对象软件工程 (OOSE),Ivar Jacobson ④面向对象分析与设计 (OOA/OOD),Coad & Yourdon ⑤面向对象系统分析 (OOSA),Shlaer & Mellor ⑥面向对象分析设计 (OOAD),Martin & Odell 一般化4.1面向对象分析与设计(OOA/OOD)四种模型:逻辑模型、物理模型、静态模型、动态模型;六种图:类图、对象图、交互图、状态迁移图、模块图、进程图;两种过程:宏观过程、微观过程。