西安交通大学研究生面向对象技术考试要点
面向对象复习提纲
过程化的方法与面向对象方法的差别在过程化的方法中,系统是围绕着过程来组织的,系统的运行通过过程间的数据传送来实现的,在该方法中过程和数据清楚地分开,因此重点分别集中在数据结构、算法和顺序步骤上,因此过程非常难以重用。
过程化方法还缺乏强有力的可视化建模技术。
该方法在分析和实现不同阶段的概念的差别很大,因此需要进行概念上的转换,因此造成了分析、设计和实现间的范畴移位。
设计模型离实现还有很长的一步。
而面向对象的方法中系统是围绕着对象组织的,系统的运行是通过对象间的消息传递而运行的,相关的数据和行为捆绑在对象中。
将问题域建模为对象使得在实现时非常自然地反应现实问题。
可视化的模型表达能力非常强使得人们易于理解。
支持强有力的概念例如抽象、封装、继承、多态等。
可视化的问题模型可以演变为问题解决模型。
设计模型距离实现只有很小的一步。
-------------------------------------------------------------------------------面向对象方法的益处需求分析结构化技术的过程分析和数据分析之间的边界从未解决。
数据流图的过程世界与实体关系图的数据世界难以共存。
过程和数据分析在某些场合可以满足要求,而在某些场合就会发生冲突。
这种冲突在实时系统模型中尤为突出,如控制过程与数据模型的对应关系经常变得不清晰。
面向对象方法在生命周期的早期就将过程和数据融合在一起。
尽管不能明确地称为“过程和数据分析”,但是在谈论面向对象时称“动态和静态分析”更为妥当,使用面向对象概念将这两方面的分析很好地协调起来。
系统设计在系统设计时,面向对象的方法既有优势,又有不足。
面向对象的优势是使设计者将软件中棘手的问题利用封装特性隐藏起来,这些问题包括难以理解的数据结构、复杂的组合逻辑、详细的过程和数据间的关系、高深的算法及关键的设备驱动程序等。
面向对象方法的缺点是应用封装和继承性是结构本身变得复杂。
面向对象知识点总结
⾯向对象知识点总结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-5)软件开发过程的实质是建模的过程:在开发过程中定义并构建一系列模型,通过这些模型越来越详细地描述系统,直到对需求的充分了解,能够开始编程。
2.述说Rational Unified Process的三个核心特征(1-16)受控的迭代(Iterative)式增量(Incremental)开发(将软件开发过程分为一系列小的迭代过程,在每个迭代过程中逐步增加信息、进行细化;根据具体情况决定迭代的次数、每次迭代延续的时间以及迭代工作流;每次迭代都选择目前对风险影响最大的用例进行,以分解和降低风险。
)用例(Use Cases)驱动(采用用例来捕获对目标系统的功能需求;采用用例来驱动软件的整个开发过程,保证需求的可跟踪性,确保系统所有功能均被实现;将用户关心的软件系统的业务功能模型和开发人员关心的目标软件系统的功能实体模型结合起来,提供一种贯穿整个软件生存周期的开发方式,使得软件开发的各个阶段的工作自然、一致地协调起来。
)以软件体系结构为中心(在开发过程的早期形成良好的软件体系结构,有利于对系统的理解、支持重用和有效的组织软件开发;在后续阶段中对已形成的体系结构框架进行不断细化,最终实现整个系统;)3.软件生命周期的几个阶段(1-8)软件生命周期:从软件的立项开发到软件的最终消亡的全过程。
包括:需求分析(Requirement Analy sis);软件设计(Software Design);编码(Coding/Programming);测试/调试(T esting/Debug);运行/维护(Running/Maintenance)4.UML的“4+1”视图(2-21)Use Case 视图:用于描述系统的功能集,它是从系统使用者的角度出发,对系统的抽象表示。
它只考虑系统提供什么样的功能。
包括以下图:用例图、序列图、协作图和活动图。
Logical 视图:用来表示系统的概念设计、详细设计、子系统结构、动态模型等,包括类图、包的组织方式。
面向对象考试重点
一、名词解释1、面向对象方法答:面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在“对象”概念基础上的方法学。
面向对象方法不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系。
2、什么是继承、什么是对象、什么是类、什么是聚合?答:继承:继承是指特殊类自动地拥有或隐含地复制其一般类的全部属性与操作,这种机制也称作一般类对待特殊类的泛化。
对象:①现实世界中客观存在的任何事物都可以被看作是对象。
②对象是构成系统的一个基本单位,它由一组属性和对这组属性进行操纵的一组操作构成。
类:类是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分。
类的作用是创建对象,对象是类的一个实例。
聚合:一个对象由其他若干对象作为其构成部分,把这种对象间的关系称为聚合。
聚合刻画了现实事物之间的构成关系。
3、什么是参与者、什么是用况、什么用例?答:参与者:一个参与者定义了一组在功能上密切相关的角色,当一个事物与系统交互时,该事物可以扮演这样的角色。
参与者是在系统之外的与系统进行交互的任何事物。
用况:一个用况是描述系统的一项功能的一组动作序列,这样的动作序列表示参与者与系统间的交互,系统执行该动作序列要为参与者产生结果。
用例图:用例图是一幅由一组参与者、一组用例以及这些元素之间的关系组成的图。
这些关系是参与者和用况之间的关联、参与者之间的继承,以及用例之间的包含、扩展和继承。
4、什么是类图、是顺序图、通讯图?答:类图:类图由许多(静态)说明性的模型元素(例如类、包和它们之间的关系,这些元素和它们的内容互相连接)组成。
类图可以组织在(并且属于)包中,仅显示特定包中的相关内容。
类图是最常用的UML图,显示出类、接口以及它们之间的静态结构和关系;它用于描述系统的结构化设计。
面向对象程序设计试题及答案
面向对象程序设计试题及答案一、试题1. 请简要解释面向对象(Object-Oriented)程序设计的概念。
2. 列举面向对象程序设计中的四个基本特征,并分别进行简要描述。
3. 请说明封装(Encapsulation)在面向对象程序设计中的作用和优势。
4. 解释继承(Inheritance)在面向对象程序设计中的概念和用途。
5. 什么是多态(Polymorphism)?请解释多态的概念以及其在面向对象程序设计中的重要性。
6. 简要介绍抽象类(Abstract Class)和接口(Interface)的概念,并说明它们之间的区别。
7. 请解释类(Class)与对象(Object)之间的关系。
8. 在面向对象程序设计中,什么是构造函数(Constructor)?请说明构造函数的作用和使用方法。
9. 请示范一个使用面向对象程序设计的简单实例,并说明你所设计的类的结构和功能。
二、答案1. 面向对象程序设计是一种以对象为中心的编程方法,通过定义表示对象属性和行为的类来组织程序结构,以实现代码的重用性、灵活性和可维护性。
2. (1)封装:将数据和对数据的操作封装在一个类中,通过访问权限控制,保护数据的安全性和完整性。
(2)继承:通过建立类之间的继承关系,实现代码的重用,具有层次性和扩展性。
(3)多态:允许不同类的对象对同一消息作出不同的响应,实现代码的灵活性和扩展性。
(4)抽象:通过抽象类和接口的定义,隐藏对象的具体实现细节,提供统一的接口和规范。
3. 封装的作用是将数据和对数据的操作封装在一个类中,外部无法直接访问类的内部实现细节,只能通过类提供的接口访问和操作数据。
封装的优势包括:(1)提高代码的可维护性和可读性,减少代码的重复。
(2)保护数据的安全性和完整性,防止外部直接对数据进行非法操作。
(3)降低模块之间的耦合度,提高代码的灵活性。
4. 继承是面向对象程序设计中的一个重要概念,它通过建立类与类之间的继承关系,实现代码的重用和扩展。
面向对象程序设计练习题——西安交通大学网络教育学院
2019年春季《面向对象程序设计》在线作业一、单选题(共50 道试题,共100 分。
)V 1. 在创建派生类对象时,构造函数的执行顺序是()。
A. 对象成员构造函数、基类构造函数、派生类本身的构造函数;B. 派生类本身的构造函数、基类构造函数、对象成员构造函数;C. 基类构造函数、派生类本身的构造函数、对象成员构造函数;D. 基类构造函数、对象成员构造函数、派生类本身的构造函数。
正确答案:D 满分:2 分2. 下列对引用的陈述中错误的是()。
A. 每一个引用都是其所引用对象的别名,因此必须初始化;B. 形式上针对引用的操作实际上作用于它所引用的对象;C. 一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行;D. 不需要单独为引用分配存储空间。
正确答案:B 满分:2 分3. 一个类的构造函数为“B(int ax, int bx): a(ax), b(bx) {}”,执行“B x(1,2),y(3,4);x=y;”语句序列后x.a的值为()。
A. 1B. 2C. 3D. 4正确答案:C 满分:2 分4. 下列说法不正确的是( )。
A. 在类中,成员的默认访问特性是私有的。
B. 类封装了数据和操作。
C. 类实质上是一种数据类型。
D. 在类的定义中,必须包含private、publiE. protected三种存取方式对应得部分。
正确答案:D 满分:2 分5. 基类A中有成员函数fn1()、fn2(),在派生类B中重载了成员函数fn1()(即重新定义了fn1()),但没有重载其成员函数fn2()。
如果在派生类B中调用基类A的成员函数fn1()(不是B中重载的数fn1())和fn2(),则正确的方式是()。
A. A::fn1()和fn2();B. fn1()和A::fn2();C. A::fn1()和A::fn2();D. fn1()和fn2();正确答案:A 满分:2 分6. 下面是五条顺序出现的声明语句,非法的初始化语句是( )。
西安交通大学17年3月课程考试面向对象程序设计高起专作业考核试题
西安交通大学17年3月课程考试《面向对象程序设计(高起专)》作业考核试题一、单项选择题(共 30 道试题,共 60 分。
)1. 关于动态分派内存空间描述正确的选项是()。
A. 利用new运算符分派的内存空间的长度必需是常量B. delete运算符能够释放动态的存储空间和静态的存储空间C. 用new分派的内存空间是不持续的D. delete运算符只能以释放由new分派的动态存储空间正确答案:2. 类的析构函数的作用是( )。
A. 一样成员函数B. 类的初始化C. 对象的初始化D. 对象释放后的操作正确答案:3. 若是一个类至少有一个纯虚函数,那么该类称为().。
A. 抽象类B. 虚基类C. 派生类D. 以上都不对正确答案:4. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,那么访问x对象中数据成员a的格式为()。
A. x(a)B. x[a]D.正确答案:5. 继承机制的作用是()。
A. 信息隐藏B. 数据封装C. 概念新类D. 数据抽象正确答案:6. 面向对象软件开发中利用的OOD表示()。
A. 面向对象分析B. 面向对象设计C. 面向对象语言D. 面向对象方式正确答案:7. 以下关于运算符重载的描述中,错误的选项是()。
A. 运算符重载不能够改变操作数的个数B. 运算符重载不能够改变运算符的功能C. 运算符重载不能够改变结合方向D. 运算符重载不能够改变运算优先级正确答案:8. 面向对象方式的多态性是指()。
A. 一个类能够派生出多个特殊类B. 一个对象在不同的运行环境中能够有不同的变体C. 针对一消息,不同的对象能够以适合自身的方式加以响应D. 一个对象能够是由多个其他对象组合而成的正确答案:9. 编译时的多态性利用什么取得?()A. 重载函数B. 继承D. B和C正确答案:10. 假定CTest为一个类,而且有一无默许值的的有参构造函数和一无参构造函数,那么执行“CTest objTest;”语句时将自动挪用该类的()。
UML面向对象与设计考试知识点整理
1、UML中常见的关系的线性表示:扩展关系:、泛化(继承)关系:、依赖关系:聚合关系:、组成关系:、关联关系:、实现关系:2、UML中几种基本图及其基本功能作用:UML的重要内容可以由哪五类图(共9种图形)来定义:答:用例图:用例图。
静态图:类图、对象图行为图:状态图、活动图交互图:时序图、协作图实现图:构件图、部署图1)类图:类图是描述类、接口、协作以及它们之间的关系的图,用来显示系统中各个类的静态结构。
类包括:类图、属性、方法。
类图包括:类、接口、协作、关系、约束、注释以及包。
类的表示包括:名称、属性、操作、职责和约束。
类图的建模过程:确定对象与类、确定类的属性、确定类的关系。
类图在UML中的重要作用:1.为开发人员提供这种模仿现实世界的表达方式。
2.让分析员使用客户所采用的术语和客户交流,促使客户说出所要解决的问题的重要细节。
2)对象图:对象图表示在某一时刻一组对象以及他们之间的关系的图。
UML对象图的用途◆捕获实例和连接、◆在分析和设计阶段创建、◆捕获交互的静态部分、◆举例说明数据/对象结构、◆详细描述瞬态图、◆由分析人员、设计人员和代码实现人员开发3)用例图:表述了一组用例、参与者以及它们之间的关系的图。
用例模型包括:用例图和用例规则。
用例规则包括:基本流和备选流。
用例图的组成元素有:参与者,用例,通信关联,用例规约建立用例模型步骤:1)根据系统边界确定参与者2)根据每个参与者确定与之相关联的用例3)对每个用例写出用例规约文档,调整用例模型(优化参与者与参与者之间的关系,用例与用例之间的关系)用例对于系统开发人员来说的价值:是用来从用户的观察角度收集系统需求的一项技术,便于分析员与客户和用户交流,使系统更符合用户的需求4)顺序图也称为时序图,它描叙了系统中对象间通过消息进行的交互,强调了消息在时间轴上的先后顺序。
顺序图是由对象、生命线、控制焦点和消息等构成。
(消息表示了对象间的通信,生命线表示了对象的生存期,控制焦点表示对象正在执行一些活动)顺序图将交互关系表示为一张二维图,其中纵向是时间轴,时间沿竖线向下延伸,横向代表了在协作中各独立对象的角色。
西安交大计算机技术在职研究生考试内容
西安交通大学计算机技术专业在职研究生是一个非常热门的选择,因为它不仅拥有强大的师资力量,而且课程设置也非常丰富。
在职研究生考试的内容和全日制研究生考试的内容基本一致,主要包括政治、英语和计算机专业科目。
首先,政治考试主要考察的是学员的政治素养,以及对国家政策的理解和运用能力。
对于已经在职场上摸爬滚打的学员来说,政治考试的内容相对简单,只要平时多关注时事,理解并掌握国家的大政方针,应该不难。
其次,英语考试主要考察的是学员的英语基础和阅读理解能力。
对于已经离开学校多年的在职人员来说,英语可能是他们的软肋,但是只要他们能够保持学习的积极性和主动性,通过英语考试也不是难事。
最后,计算机专业科目考试主要考察的是学员的专业知识和技能,包括计算机原理、操作系统、数据结构、算法设计、编程语言等方面的内容。
这部分考试需要学员在平时的学习中多加积累,尽可能多的掌握计算机专业知识。
总的来说,在职研究生考试的内容虽然和全日制研究生一样,但是考试的形式和难度可能会有所不同。
学员在备考时,应该根据自己的实际情况和学习情况,制定合理的复习计划,尽可能多的掌握知识和技能,以便在考试中取得好成绩。
同时,学员在备考的过程中也需要克服各种困难和挑战,保持积极的心态和信心,才能最终实现自己的学习目标。
当然,除了以上三个主要考试内容外,可能还会有一些附加的面试环节,主要考察的是学员的专业素养、职业背景、工作经历等方面的内容。
学员在面试时需要做好充分的准备,尽可能多的展示自己的优势和特长,以便在面试中脱颖而出。
总之,想要顺利通过西安交通大学计算机技术在职研究生的考试,需要学员在平时的学习和工作中注重积累知识、提升技能、拓宽视野,同时保持积极的心态和信心,克服各种困难和挑战。
祝愿所有在职研究生都能够顺利通过考试,实现自己的学习目标!。
面向对象程序设计考研专业课资料
面向对象程序设计考研专业课资料面向对象程序设计是计算机科学与技术专业中的一门重要课程,也是计算机考研的专业课之一。
本文旨在提供一些面向对象程序设计的考研专业课资料,帮助考生更好地准备和学习这门课程。
一、面向对象程序设计的概述面向对象程序设计是一种基于对象的编程范型,它把对象作为程序的基本单元,通过封装、继承和多态等机制,实现程序的设计和开发。
面向对象程序设计的核心思想是将现实世界中的事物抽象为对象,并通过对象之间的交互来完成程序的功能。
二、面向对象程序设计的基本原则1. 封装:将数据和方法封装在一个对象中,通过定义访问接口实现对数据的保护和控制。
2. 继承:通过定义类与类之间的继承关系,实现代码的复用和扩展。
3. 多态:同一操作作用于不同的对象,可以有不同的解释和执行效果。
三、面向对象程序设计的主要语言目前,面向对象程序设计主要有Java、C++和Python等语言。
这些语言都支持面向对象的编程范型,并有各自的特点和优势。
1. Java:Java是一种高级编程语言,广泛应用于企业级应用开发和Android开发等领域。
它具有平台无关性和强大的标准库,适合开发大型应用程序。
2. C++:C++是一种通用的编程语言,具有高效性和灵活性,广泛应用于系统级编程和性能要求较高的领域。
它是C语言的扩展,支持面向对象的编程。
3. Python:Python是一种简洁易读的编程语言,具有丰富的第三方库和简化的语法,适合快速开发和原型设计。
它也支持面向对象的编程。
四、面向对象程序设计的学习资源想要学好面向对象程序设计,积累良好的学习资源是非常重要的。
下面列举一些考研专业课资料,供考生参考:1. 《Java核心技术》(卷I、卷II):本书详细介绍了Java语言的核心概念和特性,适合Java初学者和进阶者阅读。
2. 《C++ Primer》:这是一本权威的C++入门教材,详细介绍了C++的语法和用法,适合有一定编程基础的读者。
研究生面向对象考试题
复习题1. 请指出UML的三个主要的特性。
1)UML是一种语言2)UML是用来建模的3)UML是统一的标准2. 请指出三种以上现实生活中的常用模型,并说明它们分别在各自的领域中发挥了什么样的作用。
1)电路图:电子产品设计、生产、维修2)园区沙盘:直观、立体化地展示园区的景观、布局3)地图:导航、指路等3. 说明UML适用的建模领域,以及其作用和主要的参与人员。
∙业务建模,用来加强对业务领域的了解,以领域专家为主,需求分析人员是主力,系统分析员、架构师可参与。
∙需求模型,用来加强需求了解,便于技术决策,以需求分析人员为主,系统分析员是主力,领域专家提供指导,架构师和资深开发人员参与。
∙设计模型:包括高层设计模型和详细设计模型。
高层设计模型以架构师为主,系统分析员从需求方面提供支持,资深开发人员从技术实现方面提供支持。
详细设计模型则以资深开发人员为主,架构师提供指导。
∙实现模型:架构师、资深开发人员(设计人员);以资深开发人员(设计人员)为主,架构师提供总体指导。
∙数据库模型:架构师、数据库开发人员、资深开发人员(设计人员);以数据库开发人员为主,架构师提供指导,资深开发人员(设计人员)予以配合。
4. 请简要说明UML和面向软件开发之间的关系。
UML和面向对象软件开发之间有很强的关联关系,甚至可以说是面向对象软件开发催生了UML。
但是由于在UML的标准化和发展过程,有机地吸纳了业务建模、工作流建模、数据库建模等领域的标准规范,形成了一个适用性很强的标准。
5. UML是由哪三个部分组成的,请分别说明它们的作用。
∙基本构造块:也就是建模元素,是模型的主体∙UML规则:也就是支配基本构造块如何放在一起的规则∙公共机制:运用于整个UML模型中的公共机制、扩展机制6. 如果你想对一个类的意义进行描述,那么应该采用C?请简要说明原因。
A. 标记值B. 规格描述C. 注释D.构造型标记值是用来为事物添加新特性的;规格描述用来对构造块的语法和语义进行文字叙述,使得可视化视图和文字视图的分离;构造型是用来增加新事物的。
- 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)四种模型:逻辑模型、物理模型、静态模型、动态模型;六种图:类图、对象图、交互图、状态迁移图、模块图、进程图;两种过程:宏观过程、微观过程。