西电软院《面向对象程序设计》课程复习(1)

合集下载

西电2022年秋季《面向对象程序设计(c++)》大作业及答案

西电2022年秋季《面向对象程序设计(c++)》大作业及答案

学习中心/函授站姓名学号西安电子科技大学网络与继续教育学院2022 学年下学期《面向对象程序设计(C++)》期末考试试题(综合大作业)考试说明:1、大作业试题公布时间:(1)毕业班:2022 年10 月21 日;(2)正常班:2022 年11 月18 日;2、考试必须独立完成,如发现抄袭、雷同均按零分计;3、答案须用《西安电子科技大学网络与继续教育学院2022 秋期末考试答题纸》(个人专属答题纸)手写完成,要求字迹工整、卷面干净、整齐;4、在线上传时间:(1)毕业班学生于2022 年10 月21 日至2022 年11 月1 日在线上传大作业答卷;(2)正常班学生于2022 年11 月18 日至2022 年12 月5 日在线上传大作业答卷;5、拍照要求完整、清晰,一张图片对应一张个人专属答题纸(A4 纸),正确上传。

一、简答题(10 分)1、运算符 new 和 delete 的功能分别是什么?(3 分)答案:运算符new的功能是创建动态对象;delete的功能是释放由new创建的动态对象。

2、若派生类以 private 方式从一个基类派生,派生类的对象可以访问基类中的哪些成员?派生类的成员函数可以访问基类中的哪些成员?(3 分)答案:若派生类以private方式从一个基类派生,派生类的对象不能访问基类中的任何成员(1分);派生类的成员函数可以访问基类中的public和protected成员(2分)。

3、构造函数的作用是什么?在创建派生类的对象时,应按照怎样的顺序调用构造函数?(4 分)答案:构造函数的作用是创建对象并对其进行必要的初始化。

(1分)构造函数调用顺序:基类构造函数、子对象类构造函数(如果有)、派生类构造函数。

(2分)二、填空题(每空 2 分,共 20 分)1、函数的返回值是通过函数体中的return语句带回的;若被调用函数被定义为 void 类型,则被调用函数不带回任何值。

2、表示逻辑关系“ a 大于等于8 或者 a 小于等于5”的C++表达式是。

面向对象程序设计复习要点

面向对象程序设计复习要点

《面向对象程序设计》总复习第一部分各章复习要点第1章C++一、基本知识1.面向对象程序设计的基本概念●类、对象、属性、方法2.面向对象程序设计的特点●封装、继承、多态二、基本技能1.VC++6.0编程环境的使用●编辑、编译、运行、查错●调试由多个文件组成的程序2.cin和cout的使用第2章数据类型与表达式1.数据的存储●基本类型:整型、实型、字符型、布尔型●构造类型:结构、联合、枚举2.数据的表示●常量、变量3.符号的表示●运算符、表达式第3章C++控制结构一、基本知识1.语句概述●控制语句●函数语句●表达式语句●空语句2.语句要点●格式、执行过程、注意事项二、基本技能1.递推法程序设计●前项推后项●外加循环控制2.穷举法程序设计●用循环列出所有情况●找出满足条件的情况第4章函数一、基本知识1.函数的概念●函数的声明●函数的定义●函数的调用2.函数●数据传递:主函数→子函数,子函数→主函数3.变量的存储类型●动态●静态●寄存器4.变量的作用域●全局变量●局部变量二、基本技能1.嵌套函数设计●并列定义嵌套调用2.递归函数设计●由未知推向已知的递推公式●格式:If 已知else 递推3.重载函数设计●相同:函数名●不同:函数类型、参数(个数或类型)4.函数技巧●内联函数、外联函数●带默认参数值的函数●引用第5章数组、指针与字符串一、基本知识1.数组的概念●一维数组●二维数组●字符数组2.指针●如何获取各种数据的指针●如何用指针表示各种数据●用指针处理数据的优势二、基本技能1.排序●选择法排序●冒泡法排序2.字符串处理●输入●处理:比较、赋值、连接●输出3.指针●指针的定义●指针的获取●用指针表示数据第6章类和对象一、基本知识1.类2.对象3.构造函数4.析构函数5.拷贝构造函数6.友元7.组合类二、基本技能1.构造类●数据●函数(构造函数、析构函数、拷贝构造函数)2.友元函数●定义与使用3.静态成员●定义与使用4.对象数组5.对象指针第7章继承与派生一、基本知识1.继承2.继承方式3.继承的分类4.继承的二义性5.虚基类6.虚函数与纯虚函数7.抽象类二、基本技能1.构造派生类●构造函数、析构函数、拷贝构造函数2.继承要点●子类的对象如何使用基类的成员●子类的成员如何使用基类的成员第8章多态性一、基本知识1.多态性2.运算符重载二、基本技能1.单目运算符重载●前置运算符重载●后置运算符重载2.双目运算符重载3.运算符重载为友元函数●解决重载的二义性第9章模板一、基本知识1.函数模板2.类模板二、基本技能1.函数模板●定义和使用2.类模板●定义和使用第10章输入输出流一、基本知识1.控制格式2.文件二、基本技能文件编程要点●定义文件对象●打开文件●读写数据●关闭文件第二部分复习要点(一)基本概念1.类(构造函数、析构函数、拷贝构造函数)和对象2.面向对象程序的特点3.重载函数4.友元函数5.虚基类6.虚函数、纯虚函数7.抽象类8.模板函数、模板类9.文件类(二)基本技能1.构造类2.构造派生类(单继承、多继承)3.构造抽象类4.定义重载函数5.定义友元函数6.定义运算符的重载7.定义模板函数8.文件对象的使用第三部分主要问题(一)基本概念1.面向对象程序设计的特点是什么?2.类有哪些成分组成?3.构造函数、析构函数和拷贝构造函数的作用?4.重载函数、友元函数的作用?5.类的继承方式有哪些?对子类的对象有何影响?6.虚基类的作用?7.虚函数、纯虚函数的作用?8.运算符重载的作用?9.模板函数、模板类的作用?10.抽象类的作用?(二)基本技能1.面向对象程序设计的技巧有哪些?2.面向对象程序实现软件复用的方法有哪些?3.面向对象程序设计的多态性体现在哪些方面?。

《面向对象程序设计》复习提纲

《面向对象程序设计》复习提纲
用const修饰指针(常量指针、指针常量、常量指针常量) 理解用引用代替指针的好处
作用域与生命期 作用域(五种)、可见性、::运算符的两种用法、支配(覆盖)规则 生命期(三种)、理解静态局部变量、静态全局变量new和delete对堆区操作的基本用法
string类、字符串对象的概念(区分cstring、string.h和string)
scanf、printf)
标准输入输出流类iostream,标准输入流对象cin、标准输出流对象cout、流插入运算符<<、流提取运算符>>的基本概念及用法;输入输 出流中常用控制符的使用(setw、iomanip头文件)
const定义常变量,必须初始化 引用与指针
引用的概念、声明方法(必须初始化、引用常量)、使用方法、传引用 (双向传递)、用const修饰引用(常量引用常量)
C++程序的上机步骤(编辑cpp、编译obj、连接exe、运行)
2、类和对象(5')
面向对象程序设计的三大特点:封装、继承和多态性
理解用class和struct声明类的异同
类中的两种成员,三种访问权限控制符的区别 类的声明和成员函数定义的规范写法
对象的存储结构
this指针的概念及用法
3、关于类和对象的进一步讨论(40')
7、输入输出流(不考)
8、C++工具(不考)
概念、作用、声明及定义方法、调用时机
特点:无名、有参、无返回值
缺省拷贝构造函数、深拷贝与浅拷贝
拷贝赋值操作
概念、作用、声明及定义方法、调用时机(区别于拷贝构造函
数)
特点:有名、有参、有返回值
缺省拷贝赋值操作、深拷贝与浅拷贝

面向对象的程序设计复习资料

面向对象的程序设计复习资料

⾯向对象的程序设计复习资料⾯向对象复习资料·········⼀、名词解释1、软件⼯程——建⽴在系统化、规范化、数量化等⼯程原则和⽅法上的,关于软件开发各阶段的定义、任务和作⽤的⼯程学科。

包括软件开发技术、软件项⽬管理两⽅⾯内容。

2、模型——对现实的简化,提供系统的蓝图,包含架构[总体]设计和组件[详细]设计;包含重要的因素忽略不相⼲的细节;⼀个系统可以从不同视⾓使⽤不同模型进⾏描述;模型可以是架构的[侧重于组织]、也可以关注⾏为[系统的动作]3、对象——现实世界中具有静态特征和动态特征的某个具体的实际事物。

4、封装——把属性和操作封在⼀个对象⾥,不允许外界直接存取和使⽤。

包含属性与⾏为的结合和信息屏蔽两层含义。

5、消息——向对象发出的[服务]请求,包括服务的对象标识、服务标识、输⼊信息和回答信息等。

定义对象之间单路通信,是从发送⽅到接收⽅的控制流,激发某操作、唤醒信号或导致对象的创建或撤消。

⽤箭头表⽰,符号见表6、继承——派⽣类或⼦类⾃动拥有基类或⽗类的全部属性和操作的类创建⽅法7、多态——同⼀操作作⽤于不同对象,有不同解释或不同的执⾏结果。

两种——编译时、运⾏时;3实现⽅式——接⼝、继承、抽象类。

8、UML——⼀种功能强⼤的、⾯向对象的可视化系统分析的建模语⾔[对⾯向对象系统进⾏可视化、详述、构造和⽂档化的⼯具,已成为软件建模的⼯业标准。

] 9、视图——从某个⽅⾯或⾓度出发描述系统,或表达系统某个⽅⾯特征的⼀个或多个图。

10、动作事物——时间、空间上的动作,模型的动词;最基本的是交互与状态机11、交互——⼀组对象在特定上下⽂、为达到特定⽬的进⾏⼀系列消息交换组成的动作,要列出每个操作的消息、动作次序、连接关系。

12、状态——13、⽤例——14、事件流——15、对象关联——16、可见性——描述属性和操作是否可被其他类引⽤17、活动——对象被占⽤以完成某任务,⽤矩形条表⽰。

2022春西安电子科技大学《面向对象程序设计(C++)》大作业答案

2022春西安电子科技大学《面向对象程序设计(C++)》大作业答案

学习中心/函授站_姓名学号西安电子科技大学网络与继续教育学院2022 学年上学期《面向对象程序设计(C++)》期末考试试题(综合大作业)一、简答题(共 10 分)1.(3 分)什么是引用?它与指针有什么区别?答:(任选一个版本,不要两个版本都抄)答案版本1:引用是为已存在的变量取了一个别名,引用和引用的变量共用同一块内存空间。

1) 引用必须被初始化,指针不必。

所以不存在指向空值的引用,但是存在指向空值的指针。

2) 引用初始化以后不能被改变,指针可以改变所指的对象。

答案版本2:引用是某个变量或对象的别名。

(1)引用不是变量,它不占据内存空间,它本身没有内存地址。

引用只是被引用的变量或对象的替身。

(2)引用与指针的区别在于应用不是变量,而指针是变量。

没有引用的引用,却有指针的引用。

2.(3 分)C++提供了哪些循环语句?它们各自的特点是什么?答:C++提供了三种循环语句for、while和do-while。

while循环语句先判断是否满足循环条件,如果满足循环条件,则执行一次循环体,再判断是否执行下一次循环,否则退出循环。

do-while循环语句先执行一次循环体后再判断是继续执行循环体还是退出循环。

for循环先设置循环变量的初值,再判断是执行循环体还是退出循环体。

如果执行了循环体,再改变循环变量值后,判断是执行下一次循环体还是退出循环,依此类推。

3.(4 分)构造函数的作用是什么?在创建派生类的对象时,应按照怎样的顺序调用构造函数?答:构造函数的作用是创建对象并对其进行必要的初始化。

构造函数调用顺序:基类构造函数、子对象类构造函数(如果有)、派生类构造函数。

二、填空题(每空 2 分,共 20 分)1.C++程序中的数据可以分为两大类,;2.C++x = 5,y = 0,z = 3,则表达式 !x || y++ && z 执行表达式后y的值4.下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。

面向对象程序设计 复习资料

面向对象程序设计 复习资料

1.对象(1)从概念层面讲,对象是某种拥有责任的抽象。

(2)从规格层面讲,对象是一系列可以被其他对象使用的公共接口。

(3)从语言实现层面讲,对象封装了代码和数据。

2.软件开发中的经典阶段:需求、分析、设计、规范、实现、测试、部署、维护。

3.设计7原则:开闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪M特原则、接口隔离原则、单一职责原则。

4.面向对象的方法学:UML(统一建模语言)、RUP(统一软件开发过程)、XP(极限编程)。

开发方法:Booch、Coad、OMT、UML、OOSE、Wirfs—Brock 5.OOA——运用面向对象方法进行需求分析。

OOD——运用面向对象方法进行系统设计。

OOP——运用面向对象方法进行程序设计。

6.OOA的基本任务:是运用面向对象的方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域及系统责任所需的类及对象,定义这些类和对象的属性和操作,以及它们之间所形成的结构、静态联系和动态联系。

最终目的:是产生一个符合用户需求,并能够直接反映问题域和系统责任的OOA模型及其详细说明。

优点:(1)加强了对问题域和系统责任的理解。

(2)改进与分析有关的各类人员之间的交流。

(3)对需求的变化具有较强的适应性。

(4)支持软件复用。

OOA的三大策略是:属性策略、方法策略、对象策略。

7.(1)封装:是指对象在其操作中隐藏属性。

它是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。

封装的目的是使对象的使用者和生产者分开,使对象的定义和实现分开。

例如:要从同事那里借钱,在商店购买食物,就不会抢夺同事的钱包,大翻一通,看看里面是否有足够的钱。

而应该询问他们是否可以借你一些钱,他们就会自己翻钱包。

以表示圆的一个对象作为封装的例子。

圆的操作应能计算出半径、直径、周长和面积。

假定选择存储直径,要访问直径的程序员都会选择存储直径属性,而不是通过“获取直径”的操作来访问。

面向对象程序设计复习提要(不重要)

面向对象程序设计复习提要(不重要)
void display(int a); virtual void display();
char ID[10]; char Name[10] ……
student
char ID[10]; char Name[10] float score; …
void display()
{ person::display(); cout<<score<<endl;}
继承的一个作用就是 代码重用,即从基类 派生子类,子类无需 修改基类的代码,就 可以直接拥有基类的 成员,然后增加少量 代码就可以实现特殊 功能,这就实现了代 码的重用;另一个作 用是扩充系统,即许 派生类在继承父类共 性的基础上,增加新 的属性和操作来实现 特殊功能。
学生类 属性: 学号; 姓名; 专业; 操作: 查询属性get(); 修改属性modify(); 打印属性print();
二、复习要点
第2章 C++语言基础
1. C++程序的一般结构 一个C++程序一般可以分成四 个部分:预处理指令、全局说 明(包括对象类的定义)、程 序的主函数和用户自定义的子 函数,如右图所示。一个C++ 程序由一个或多个源代码文件 构成。C++的源代码文件分为 两类:头文件(.h)和源程序文 件(.cpp)。
4.2.1 派生类的定义
class <派生类名>: <继承方式> <基类名> { <派生类新定义成员> }; <继承方式>有三种: 公有继承(public); 私有继承(private); 保护继承(protected) ; 缺省情况下为私有继承。

面向对象程序设计复习资料(可编辑修改word版)

面向对象程序设计复习资料(可编辑修改word版)

面向对象程序设计复习资料(可编辑修改word版)面向对象程序设计期末总复习题一、单项选择题1.下面关于对象概念的描述中,是错误的。

(B)A.对象代表着正在创建的系统中的一个实体B.对象就是C 语言中的结构体变量C.对象是一个状态和操作(或方法)的封装体D.对象之间的信息传递是通过消息进行的2.继承机制的作用是:(C)A.信息隐藏B.数据封装C.定义新类D.数据抽象3.有关析构函数的说法不正确的是(D)A.析构函数有且只有一个B.析构函数无任何函数类型C.析构函数没有形参D.析构函数不能是虚函数4.友元的作用之一是(A)A.提高程序的运行效率B.加强类的封装性C.实现数据的隐藏性D.增加成员函数的种类5.通常拷贝构造函数的参数是。

(C)A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名6.如果在基类中将show 声明为不带返回值的纯虚函数,正确的写法是。

(C)A.irtual show()=0;B.virtual void show();C.virtual void show()=0;D.void show=0 virtual;7.下面关于友元的描述中,错误的是。

(D)A.友元函数可以访问该类的私有数据成员B.一个类的友元类中的成员函数都是这个类的友元函数C.友元可以提高程序的运行效率D.类与类之间的友元关系可以继承8.在C++中,运算符不能重载。

(B)A. +B.?:C.-D.<=9.下列关于运算符重载的描述中,是正确的。

(D)A.运算符重载可以改变操作数的个数B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构10.在下列函数原型中,可以作为类AA 构造函数的是(D)A.void AA(int) ; B.int AA( ) ; C.AA(int)const; D.AA(int);11.在声明类时,下面的说法正确的是。

(C)A.可以在类的声明中给数据成员赋初值B.数据成员的数据类型可以是 registerC.private,public,protected 可以按任意顺序出现D.没有用private,public,protected 定义的数据成员是公有成员12.继承具有,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。

面向对象程序设计课后习题答案

面向对象程序设计课后习题答案

面向对象程序设计课后习题答案第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对象程序设计是一种新型的程序设计范型。

这种范型的主要特征是:程序=对象+消息。

面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。

第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。

面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。

这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。

[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。

对象可以认为是:数据+操作在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。

类和对象之间的关系是抽象和具体的关系。

类是多个对象进行综合抽象的结果,一个对象是类的一个实例。

在面向对象程序设计中,总是先声明类,再类生成对象。

类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。

[1_3]现实世界中的对象有哪些特征?请举例说明。

对象是现实世界中的一个实体,其具有以下一些特征:每一个对象必须有一个名字以区别于其他对象。

需要用属性来描述它的某些特性。

有一组操作,每一个操作决定了对象的一种行为。

对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。

例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36 生日:工资:2000 部门:人事部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。

面向对象题-1

面向对象题-1

第一部分面向对象方法概述一、填空题1.对象的抽象是,类的实例是。

2.动态模型描述了系统的结构。

3.软件系统中存在两种控制流,外部控制流是系统中对象之间外部事件的事件流,有、和三种外部事件控制流。

控制流是一个处理内部的控制,均可结构化。

4.在C++和C中有一个函数,可以使用这个过程来说明构成系统主要对象的那些类的实例。

5.继承性是自动共享父类属性和的机制。

6.对象具有封装性,实现了的组合。

7.在面向对象方法中,信息隐藏通过对象的来实现。

类结构分离了和,从而支持了信息隐藏。

8.抽象是指强调实体的、,忽略一些无关紧要的属性。

类实现了对象的和的抽象,它是对象的共性的抽象。

9.子类只继承的属性和操作,称为单重继承。

10.对象的抽象是,类的具体化就是,也可以说类的实例是。

11.类具有,它是的行动的抽象。

12.对象具有状态,对象用来描述它的状态。

13.概念模型描述了系统的。

功能模型指出,动态模型确定,而对象模型确定。

功能模型由组成。

14.面向对象有三个基本要素,它们是、、。

15.面向对象技术在三个级别上促进了共享,它们是、、。

16.活动是一种有时间间隔的操作,它是依附于。

动作是一种瞬时操作,它是与联系在一起的操作。

17.封装性是指所有软件部件内部都有明确的以及清楚的。

每个软件部件都有友好的,软件部件的与分离。

18.主要的对象类型有、、和。

19.同一个类中的共享是指同一个类中的对象有着相同的和相同的。

20.结构化方法的本质是,其、可修改性和可重用性都比较差。

21.对象还有,用于改变对象的状态。

对象实现了和的结合。

22.面向对象方法认为系统是由应用域的组成。

23.对象具有状态,描述对象的状态用它的。

24.类具有属性,描述类的属性用。

25.一个方法有、和。

26.动态模型描述了系统的。

27.对象模型的主要元素是类,关联和。

28.通过这种机制和构造来实现不同应用中的信息共享。

29.面向对象程序设计语言与其它程序设计语言的主要区别是它具有。

面向对象程序设计课程期末复习提要

面向对象程序设计课程期末复习提要

《面向对象程序设计》课程期末复习提要中央电大理工部计算机教研室《面向对象程序设计》课程是中央电大计算机科学与技术专业(本科)一门必修的专业基础课。

该课程主要介绍如何用C++语言进行面向对象程序设计,因此C++语言的介绍是本书的重点,也是学员需要掌握的重点。

下面按照主教材内容次序给出具体复习要求,供同学们进行期末复习时参考。

各部分复习提要第一部分程序设计基础复习知识点:C++程序的基本结构基本数据类型常量、变量的定义与使用常用运算符的使用表达式的分类和使用简单的输入输出复习要求:1.理解:C++程序的基本组成。

2.应用:能够编写简单的程序,能完成简单数据类型数据输入、利用变量存放输入数据,利用常量存放固定数据,利用运算符进行简单的运算,并能够将结果输出(如书中2.6, 2.7题)。

3.应用:能进行比较复杂的表达式运算(如书中3.1,3.2,3.3题* )。

第二部分语句与操作流程复习知识点:语句的分类分支语句循环语句转移语句复习要求:1.理解:语句按功能分为:操作运算语句和流程控制语句,其中操作运算语句按复杂程度分为简单语句和复合语句。

2.应用:能够根据程序要求选择合适的流程控制语句(如书中4.2,4.4,4.5题)。

3.应用:能够用多种循环语句实现一种循环的程序要求(如书中4.1题)。

4.综合应用:综合运用各种语句完成比较复杂的程序逻辑(如书中4.9题)。

第三部分函数复习知识点:模块化程序设计函数的定义函数的定义与函数原型函数参数的类型与传递方式全局变量和局部变量函数调用机制递归函数函数重载函数的默认参数静态局部变量复习要求:1.理解:模块化程序设计与函数的关系。

2.理解:默认参数的含义与用法,能够在程序中正确使用默认参数。

3.理解:全局变量、局部变量、静态变量的含义,能够在程序中正确选择使用静态、局部和全局变量。

4.应用:将一些功能明确的代码封装在函数中(如书中5.1,5.2,5.3题)。

5.应用:利用递归函数来简化程序设计(如书中5.7题)。

面向对象程序设计考前复习题及答案

面向对象程序设计考前复习题及答案

简答题1、传统的结构化程序设计的优点和缺点是什么?优点:(1)这种程序设计方法力求算法描述精确。

(2)对每一子过程模块简单进行程序正确性证明。

缺点:(1)这种程序设计方法本质上是面对“过程”的,而“过程”和“操作”又是不稳定和多变的,因此不能干脆反映人类求解问题的思路。

(2)程序代码可重用性差。

程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。

即使重用代码,通常也是通过拷贝或编辑重新生成一份。

(3)维护程序的一样性困难。

该种方法将数据与对数据进行处理的程序代码分别。

2、什么是对象?每个对象都具有属性(Attribute)和方法(Method)这两方面的特征。

对象的属性描述了对象的状态和特征,对象的方法说明白对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。

3、什么是消息?在面对对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。

当一个对象须要另外一个对象供应服务时,它向对方发出一个服务恳求,而收到恳求的对象会响应这个恳求并完成指定的服务。

这种向对象发出的服务恳求就称为消息。

4、什么是多态性?所谓多态性是指当程序中的其他部分发出同样的消息时,根据接收消息对象的不同能够自动执行类中相应的方法。

其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大便利。

5、什么是面对对象的程序设计方法?这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。

在OOP中,将“对象”作为系统中最基本的运行实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息相互作用,对象中的方法确定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。

6、面对对象方法的特点是什么?(1)OOP以“对象”或“数据”为中心。

由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更困难的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的变更对整个系统几乎没有影响。

面向对象程序设计单元复习指导及解答(1)

面向对象程序设计单元复习指导及解答(1)

2011春季《面向对象程序设计》单元复习指导(1)一、单选题1. C++源程序文件的缺省扩展名为( )。

A. cppB. exeC. objD. lik2. 编写C++程序一般需经过的几个步骤依次是( )。

A. 编译、编辑、连接、调试B. 编辑、编译、连接、调试C. 编译、调试、编辑、连接D. 编辑、调试、编辑、连接3. 程序中主函数的名字为( )。

A. mainB. MAINC. MainD. 任意标识符4. 存储以下数据,占用存储字节最多的是( )。

A. 0B. …0‟C. “0”D. 0.05. 假设在程序中 a 、b 、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式abc 1的表达式是( )。

A. 1.0/a*b*c B. 1/(a*b*c) C. 1/a/b/(float)c D. 1.0/a/b/c 6. x>0 || y==5的相反表达式为( )。

A. x<=0 || y!=5B. x<=0 && y!=5C. x>0 || y!=5D. x>0 && y==57. 字符串”a+b=12\n ”的长度为( )。

A. 6B. 7C. 8D. 98. 循环语句“for(int i=0; i<n; i++) cout<<i*i<<’ ’;”中循环体执行的次数为( )。

A. 1B. n-1C. nD. n+19. 在下面循环语句中循环体执行的次数为( )。

int i=0,s=0; while(s<20) {i++; s+=i;}A. 4B. 5C. 6D. 710. 在下面循环语句中循环体执行的次数为( )。

int i=0,s=0; while(s<20) {i++; s+=i;}A. 4B. 5C. 6D. 711. 循环体至少被执行一次的语句为( )。

A. for 循环B. while 循环C. do 循环D. 任一种循环12. 在下面的一维数组定义中,哪一个有语法错误。

西安电子科技大学《软件工程》复习资料

西安电子科技大学《软件工程》复习资料

软件工程习题解答第一章概述1.软件产品的特性是什么?a.软件产品是一种逻辑产品。

b.软件产品的生产主是研制,软件产品的成本主要体现在软件的开发和研制上,软件开发完成后,复制就产生了大量软件产品。

c.软件产品不会用坏,不存在磨损、消耗问题。

d.软件产品的生产主要是脑力劳动,还未完全摆脱手工开发方式,而且碰分是"定做"的。

e.软件费用不断增加,成本相当昂贵。

2.软件产品有几个阶段?各有何特征?阶段 A.程序设计时代(1946-1956) B.程序系统时代(1956-1968) C.软件工程时代(1968-今)生产方式个体手工劳动小集团合作生产工程化的生产工具机器语言、汇编高级语言数据库、开发工具、开发环境、网络、分布式、面向对象技术开发方法追求编和技巧,追求程序运行效率个人技巧,开始提出结构化方法硬件特征价格贵、存储容量小、运行可靠性差速度、容量、工作可靠性有明显提高,价格降低,销售有爆炸性增长向超高速、大容量、微型化以及网络化方软件特征只有程序、程序设计概念,不重视程序设计方法程序员数量猛增,已意识到软件开发的重要性,开发技术没有新的突破,大量软件开发的需求已提出,开发人员的素质和工程兵的开发技术不适应规模大、结构复杂的软件开发,产生了尖锐矛盾,导致软件危机的产生开发技术有很大进步,但未能获得突破性进展,软件价格不断上升,没有完全摆脱软件危机3.什么是软件危机?其产生的原因是什么?软件危机:软件发展第二阶段的末期,由于计算机硬件技术的进步。

一些复杂的、大型的软件开发项目提出来了,但,软件开发技术的进步一直未能满足发展的要求。

在软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。

主要表现在以下几个方面:a.经费预算经常突破,完成时间一再拖延。

b.开发的软件不通满足用户要求。

c.开发的软件可维护性差。

d. 开发的软件可靠性差。

软件危机产生的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的:a.软件的规模越来越大,结构越来越复杂。

面向对象程序设计 - 复习提纲 - 2021-2021

面向对象程序设计 - 复习提纲 - 2021-2021

面向对象程序设计 - 复习提纲 - 2021-2021一、填空题1.c++中变量按照作用范围可分为局部变量和全局变量。

2.动态联编支持的多态性称为运行时的多态性,也称为动态多态性。

3.在一个函数的定义或声明前加上关键字inline时,该函数就声明为内联函数。

4.在类中定义和实现的函数称为成员函数。

5.程序中可以有多个名称相同,但参数类型不同或个数不同或类型与个数都不同的函数,这种现象称为函数重载。

6.若定义int a[][4]={1,2,3,4,5,6,7,8,9},则数组a的第一维的大小是3 。

7.设置虚基类使用的关键字为virtual。

8.基类的构造函数和析构函数,不能被派生类继承。

9.含有纯虚函数的类称为抽象类,它不能定义对象,主要用作基类。

10.动态联编支持的多态性称为运行时的多态性。

11.运算符重载函数的两种主要形式有成员函数和友元函数。

12.使用模板是为了提高代码的可重用性。

13.在C++语言中,变量按照生存周期分为静态存储类别变量和自动存储类别变量。

14.非成员函数应声明为类的友元函数,才能访问该类的private成员。

15.在类中,数据成员和成员函数的默认访问属性是private(或私有的)。

16.如果一个类至少有一个纯虚函数,那么该类被称为抽象类。

17.对于含有对象成员的派生类,其构造函数的执行顺序为:先执行基类的构造函数、再执行对象成员所属类的构造函数,最后执行派生类的构造函数。

18.构造函数是一种特殊的成员函数,其作用是对类的数据成员进行初始化并执行对象的其他内部管理操作。

19.静态成员函数不能直接引用类中说明的非静态成员。

20.对于含有对象成员的派生类,其析构函数的执行顺序为:先派生类的析构函数、再执行对象成员所属类的析构函数,最后执行基类的析构造函数。

21.设置友元函数的目的是为能够访问该类的私有成员。

22.运算符重载仍然保持原来的优先级、结合性和语法结构。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

13
3 类的基本问题
试完成类Sub1和Sub2的定义和操作的实现代码,使之能符合 下面程序及在注释中描述的运行结果的要求: main() { Sub1 s1(1000, "This is an object of Sub1"); Sub2 s2(2000, 10); s1.printOn(); // 此时显示出: <1000: This is an object of Sub1> s2.printOn(); // 此时显示出: <10 and 2000> }
6
1 函数的基本问题
int main(int argc, char *argv[]) { if( argc <= 1 ) { cout << "Must has 1 arguments!" << endl; return 1; } printf("atoi(\"%s\")=%d\n", argv[1], atoi(argv[1])); return 0; }
10
3 类的基本问题
2. According to the interface of a Date class, implement the Date class. class Date { //… public: Date(int y=1970, int m=1, int d=1); //构造器 boolean isLeapYear(const Date& d); //判断对象d的年属性是否是闰年 void print(); //打印日期对象的数据成员值 };
《C++面向对象程序设计》 课程复习
西安电子科技大学软件工程研究所
李雁妮
Email: yannili@
1 函数的基本问题
1. 对下面的函数findChar,改正你所发现的错误,并写出另一个 函数find2Char,使之改用指针方式来访问cpString的元素,且 功能与改正后的函数findChar等价。
void findChar(const char cpString[], const char cChar) { for (int i = 0; cpString*i+ != ‘\0‘; i++) if (cpString[i] = cChar) { printf("The index is %d.\n", i); return; } printf("In the string \"%s\" having %d char‘s, no ‘%c‘ has been found.\n" , cpString, i, cChar); }
14
3 类的基本问题
class Sub1 : public Base { char* cpString; public: void : %s>\n", iBody, cpString); } Sub1(int i, char* s) : Base(i) { cpString = new char[strlen(s)+1]; strcpy(cpString, s); } }; class Sub2 : public Base { short sShort; public: void printOn(){ printf("<%d and %d>\n", sShort, iBody); } Sub2(int i, short s) : Base(i),sShort(s) {} };
5
1 函数的基本问题
#include <cstdio> #include <iostream> using namespace std; int atoi(const char* str){ int result = 0, len = strlen(str); int sign =1; if( str[0] == '-' ) { str++; sign = -1; len--; } else if( str*0+ == ‘+’) , str++; sign = 1; len--;} for(int i=0; i<len; i++){ result = result * 10 + str[i] - '0' ; } return sign * result; }
15
3 类的基本问题
In a company, there are two types of people: employee and manager. Notice that a manager is also an employee. Every employee has following basic information: name,age,workYear( 工作年限) and depNo(部门号).Moreover, a manager has other some attributes: level(级别) and a array of employees managed. A object of class Employee or Manager has following behaviors: //…. Please base on the above objects behaviors to define and implement class Employee and Manager respectively.
9

3 类的基本问题
class Stack{ public: enum { MaxStack = 5 }; void Stack() { top = -1; } void push(const int& t){ if ( full() ) { return ; } arr[++top] = t; } int pop( ){ if ( empty() ) { return dummy_val; } return arr[top--]; } bool empty() { return top < 0 ;} bool full() { return top >= MaxStack - 1; } int getNumbers() { return top + 1; } private: int top, int arr[ MaxStack ]; int dummy_val; };
12
3 类的基本问题
已知类的定义如下: class Base { protected: int iBody; public: virtual void printOn() = 0; Base(int i = 0) : iBody(i) {} }; class Sub1 : public Base { // … public: void printOn(); Sub1(int i, char* s); }; class Sub2 : public Base { // … public: void printOn(); Sub2(int i, short s); };
4
1 函数的基本问题
3. (1) Implement a function: int atoi (const char* str); which converts a string str (in decimal format) to its corresponding integer and return the integer. (2) Write a test program which take an integral string from command-line argument, and print the calling result of atoi().
7
2 Namespace基本问题
namespace a { void f(); int g(double x); }
namespace b { int f(); double y; }
using namespace a; using a::f();
8
3 类的基本问题
1. Implement a class Stack , where a stack is a Last In, First Out list of zero or more elements. The Stack class should provide following methods: (1) void push( const int& t); // insert an element to a stack (2) int pop(); // delete an element from a stack and return it (3) bool empty(); // check a stack is empty or not (4) bool full(); // check a stack is full or not (5) int getNumbers(); // return the current number of elements in a stack
3
1 函数的基本问题
2. 阅读下面的程序,写出main的输出。 int h(int iCount, const int* ipIndex, int& irObj) { iCount %= 2; if (*ipIndex >= 5) irObj += iCount; return *ipIndex + irObj; } main() { int i, j = 1, k = 2, m; for (i = 0; i < 10; i++, j++) { m = h(i, &j, k); printf("i = %2d, j = %2d, k = %2d, m = %2d.\n", i, j, k, m); } }
相关文档
最新文档