面向对象程序的设计C课后题答案
C面向对象程序设计课后习题答案1~14章
int main ( )
{int a,b,c;
cout<<"please enter three integer numbers:";
cin>>a>>b>>c;
if(a<b)
if(b<c)
cout<<"max="<<c;
else
cout<<"max="<<b;
}
else // x≥10
{y=3*x-11;
cout<<"x="<<x<<", y=3*x-11="<<y;
}
cout<<endl;
return 0;
}
3-11、#include <iostream>
using namespace std;
int main ()
{float score;
char grade;
cout<<"place="<<place<<endl;
//计算各位数字
ten_thousand=num/10000;
C语言程序设计学习教程课后练习习题答案.docx
C++语言程序设计教程课后习题答案(2011-03-09 17:24:22) 标签:杂谈分类:学习
第 1 章 C++ 语言概述
练习题 1
判断题
×1. C++ 语言和 C 语言都是面向对象的程序设计语言。
√2.面向对象方法具有封装性、继承性和多态性。
√3. C 语言是 C++ 语言的一个子集。 C++ 语言继承了 C 语言。
×4. C++ 语言程序与 C 语言程序一样都是函数串。
×5. C++ 语言支持封装性和继承性,不支持多态性。
√6. C++ 语言比 C 语言对数据类型要求更加严格了。
√7. C++ 语言对 C 语言进行了一次改进,使得编程更加方便了。
×8. C++ 源程序在编译时可能出现错误信息,而在连接时不会出现错误信息。
√9.编译 C++ 源程序时,出现了警告错( Warning )也可以生成可执行文件。
√10. C++ 语言程序的实现也要经过编辑、编译连接和运行 3 个步骤。
单选题
1.下列关于面向对象概念的描述中,错误的是(C)。
A.面向对象方法比面向过程方法更加先进
B.面向对象方法中使用了一些面向过程方法中没有的概念
C.面向对象方法替代了结构化程序设计方法
D.面向对象程序设计方法要使用面向对象的程序设计语言
D)。
2.下列各种高级语言中,不是面向对象的程序设计语言是(
A . C++
B . Java
C.VB D.C
A)。
3.下列关于类的描述中,错误的是(
A .类就是 C 语言中的结构类型
B.类是创建对象的模板
C.类是抽象数据类型的实现
D.类是具有共同行为的若干对象的统一描述体
《面向对象程序设计c》综合复习题集及答案详解
《面向对象程序设计c》综合复习题集及答案详解
综合复习题集
一、单选题
1.C++源程序文件的缺省扩展名为(A)。
A.cpp
B.e某e
C.obj
D.lik
2.由C++源程序文件编译而成的目标文件的缺省扩展名为(C)。
A.cpp
B.e某e
C.obj
D.lik
3.由C++目标文件连接而成的可执行文件的缺省扩展名为(B)。
A.cpp
B.e某e
C.obj
D.lik4.编写C++程序一般需经过的几个步骤依次是()。
A.编译、编辑、连接、调试
B.编辑、编译、连接、调试
C.编译、调试、
编辑、连接D.编辑、调试、编辑、连接
5.以下标识符中不全是保留字的是()。
A.caeforint
B.defaultthenwhile
C.boolclalong
D.gotoreturnchar
6.能作为C++程序的基本单位是()。
A.字符
B.语句
C.函数
D.源程序文件7.程序中主函数的名字为()。
A.main
B.MAIN
C.Main
D.任意标识符8.C++程序的基本模块为()。
A.表达式
B.标识符
C.语句
D.函数9.可用作C++语言用户标识符的一
组标识符是()。
A.voiddefine+WORD
B.a3_b3_123YN
C.for-abcCae
D.2aDOizeof
10.存储以下数据,占用存储字节最多的是()。
A.0B.‘0’C.“0”D.0.011.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分隔符。
A.空格或逗号
B.逗号或回车
C.逗号或分号
D.空格或回车12.
设”inta=12;”,则执行完语句”a+=a某a;”后,a的值是()。
c面向对象程序设计杜茂康课后习题答案
c面向对象程序设计杜茂康课后习题答案
C面向对象程序设计杜茂康课后习题答案
在学习C面向对象程序设计时,理解和掌握课后习题的答案是非常重要的。杜茂康的课后习题答案是学习者的重要参考资料,可以帮助学生更好地掌握课程内容和提高编程能力。
C面向对象程序设计是一门重要的计算机专业课程,它涉及到面向对象的程序设计思想和C语言的应用。学生在学习这门课程时,需要不断进行编程实践,通过解决问题来加深对知识点的理解和掌握。
杜茂康的课后习题答案提供了一些常见问题的解决方案,涵盖了面向对象程序设计的基本知识和技巧。学生可以通过参考这些答案,更好地理解课程内容,掌握编程技巧,提高解决问题的能力。
在学习C面向对象程序设计的过程中,学生可以通过对比自己的答案和杜茂康的习题答案,找出自己的不足之处,及时进行改进和提高。这样可以帮助学生更好地掌握课程内容,提高编程能力,为将来的工作和学习打下坚实的基础。总之,杜茂康的课后习题答案对于学习C面向对象程序设计的学生来说是非常重要的参考资料。通过认真学习和参考这些答案,可以帮助学生更好地掌握课程内容,提高编程能力,为将来的工作和学习做好准备。
面向对象程序设计教程答案
面向对象程序设计教程(C++语言描述)题解与课程设计指导
第1章
面向对象程序设计概论
一、名词解释
抽象封装消息
【问题解答】
面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。
面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。
消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。
二、填空题
(1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。
(2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。(3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。
(4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。
(5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。
三、选择题(至少选一个,可以多选)
(1)面向对象程序设计着重于( B )的设计。
A. 对象
B. 类
C. 算法
D. 数据
(2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做(C )。
A. 抽象
B. 继承
C. 封装
D. 多态
(3)在面向对象程序设计中,类通过( D )与外界发生关系。
A. 对象
B. 类
C. 消息
D. 接口
(4)面向对象程序设计中,对象与对象之间的通信机制是(C )。
A. 对象
B. 类
C. 消息
D. 接口
(5)关于C++与C语言的关系的描述中,(D )是错误的。
学堂在线《面向对象程序设计C++》习题
学堂在线《面向对象程序设计C++》习题(作业部分)
作业一
多选题(2分)
C++源程序不能直接运行,需要经过如下哪些步骤,才能得到可以运行的程序?
A.编译器
B.链接器
C.汇编器
D.编辑器
正确答案:AB
判断题(1分)
C++源程序必须使用两个以上的文件来存放,才能编译链接成可执行程序。
正确答案:×
多选题(2分)
关于main()函数的参数,以下说法正确的是
A.不使用参数也是允许的
B.若带参数,则第一个参数是整数类型
C.若带参数,则第二个参数是字符串数组
D.参数名称只能使用argc和argv
正确答案:ABC
多选题(2分)
为防止头文件重复包含,以下书写错误的是
A.错误
B.错误
C.错误
D.错误
正确答案:ABCD
作业二
多选题(2分)
下列哪些语句可以完成对数组的初始化
A.char name[10] = "THU OOP";
B.char course[4] {'O', 'O', 'P'};
C.int year[5] {2016, 2017, 2018};
D.int score[] = {60, 80, 90};
正确答案:ABCD
多选题(2分)
下列哪些写法不正确
A.int* ptr = new int;
B.int* ptr = new int(3);
C.int * ptr = new int[3];
D.int* ptr = new int{3};
E.int* ptr = new[] int;
F.int ** ptr = new int[4][5];
正确答案:EF
多选题(2分)
下列关于for循环语句的写法,正确的是:
面向对象的程序设计语言——C第二版陈志泊 主编 王春玲 孟伟编着 第2到7章课后编程题答案
C++第二单元课后编程题
//第一题
#include
void main()
{
float a,b,c;
cout<<"请输入三角形的三条边长:"<
cout<<"\ta=";
cin>>a;
cout<<"\tb=";
cin>>b;
cout<<"\tc=";
cin>>c;
if(a<=0||b<=0||c<=0||(a+b<=c)||(a+c)<=b||(b+c<=a))
cout<<"此三条边不能组成三角形!"<
else
{if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
{cout<<"此三角形是直角三角三角形!"<
if(a>b&&a>c)
cout<<"此直角三角形的面积是:S=" <
else if(b>a&&b>c)
cout<<"此直角三角形的面积是:S=" <
else cout<<"此直角三角形的面积是:S=" <
}
else cout<<"此三角形不是直角三角形!"<
}
}
//第二题
#include
void main()
{
int length[8],a[8],b[8] ;
int max=0,min=0,m=0,n=0;
cout<<"data type\tmemory used(bytes)(各种数据类型的存储长度是:)";
length[0]=sizeof(short int); //获取短整型长度
cout<<"\nshort int\t"<
length[1]=sizeof(int); //获取整型长度
cout<<"\nint \t"<
length[2]=sizeof(long int); //获取长整型长度
(完整版)c++面向对象程序设计试题和答案
系名___ ___ ___ ___
班级___ ___ ___ ___姓名___ ___ ___ ___学号___ ___ ___ ___ 密
封
线
内
不
答
题
填空题(每空1分,共14分)
1、观看以下程序:
class point{
public:
void show() {cout<<”point”<<endl;}
};
void main()
{
point p1;
point *p;
p=&p1;
_P1.show()______________//通过对象p1访问show函数
__p->show()____________//通过指针p访问show函数
}
2、在C++类中可以包含__私有____________、___公有___________和__保护
____________三种具有不同访问控制权的成员。
3、定义类时,在类头中将使用关键字___class__________来表示类定义的开始。
4、如果一个类中至少有一个纯虚函数,则该类称为_____抽象类___________。
5、C++类的组成包括数据成员和___成员函数___________,友元_不是____(是、不是)
该类的成员函数。
6、友员函数是用关键字____friend________修饰的非成员函数。
7、若有:
int i;
int &j=i;
i=10;
j=i+1;
则i=__11________,j=_11_________。
8、 new的功能是_____动态申请内存空间_______________,delete的功能是___
《C 程序设计教程》课后习题答案
第1章C++及其开发环境概述
一、问答题
1.结构化程序设计主要有哪些劣势?
【答案】
(1)程序的开发效率低下
(2)程序的可重用性差
(3)程序的维护成本高
(4)无法适应信息的快速膨胀和多样化
2.面向对象的程序设计有哪些优点?
【答案】
(1)程序的开发效率高
(2)程序代码的可重用性高
(3)程序易于维护
3.C++的发展经历了哪些阶段?
【答案】
C++语言起源于C语言。1980年初期,美国贝尔实验室的Bjarne Stroustrup博士及其同事在C语言的基础上,从Simula67中引入面向对象的特征,开发出一种过程性与对象性相结合的程序设计语言,最初称为“带类的C”,1983年正式取名为C++。
后来,Stroustrup和他的同事陆续将运算符重载、继承、虚函数等特性引入C++,1989年后推出AT&T C++ 2.0版,并经过多次改进和完善,发展成为现在的C++。
4.C++主要有哪些特点?
【答案】
(1)C++可以被看成C语言的一个超集,是对C的增强和扩展。因此,许多C代码可以不经修改即可为C++所用。自然,也可以利用C++开发环境来开发C程序。
(2)C++几乎支持所有面向对象的程序设计特征,因此,利用C++不仅可以进行传统的结构化程序设计,而且可以较好地进行面向对象的程序开发。
(3)C++很好地保持了C的简洁、高效、灵活和接近汇编语言的特点,因此,C++程序的执行效率也很高。
5.一个C++程序一般由哪几部分构成?
【答案】
①预处理命令。C++提供了三种预处理命令,即宏定义命令、文件包含命令和条件编译命令。
C面向对象课后练习答案
类与对象习题
程序阅读
题 1.分析以下程序执行的结果
#include<iostream.h>
#include<stdlib.h>
class Sample
{
public:
int x,y;
Sample(){x=y=0;}
Sample(int a,int b){x=a;y=b;}
void disp()
{
cout<<"x="<<x<<",y="<<y<<endl;
}
};
void main()
{
Sample s1(2,3);
s1.disp();
}
分析:本题说明了重载构造函数的定义方法。首先定义了一个类Sample,在main()中定义了它的一个对象,定义s1对象时调用其重载构造函数(x=2,y=3),然后,调用其成员函数输出数据成员。所以输出为:x=2,y=3。
注意:构造函数是唯一不能被显式调用的成员函数,它在定义类的对象时自动调用,也称为隐式调用。
--------------------------------------------------------
题 2.分析以下程序的执行结果
#include<iostream.h>
class Sample
{
int x,y;
public:
Sample(){x=y=0;}
Sample(int a,int b){x=a;y=b;}
~Sample()
{
if(x==y)
cout<<"x=y"<<endl;
else
cout<<"x!=y"<<endl;
面向对象程序设计C课后题答案
第一章:面向对象程序设计概述
[1_1]什么是面向对象程序设计?
面向对象程序设计是一种新型的程序设计范型。这种范型的主要特征是:
程序=对象+消息。
面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。
面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。
[1_2]什么是类?什么是对象?对象与类的关系是什么?
在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。对象可以认为是:数据+操作
在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。
类和对象之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,一个对象是类的一个实例。
在面向对象程序设计中,总是先声明类,再由类生成对象。类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。
[1_3]现实世界中的对象有哪些特征?请举例说明。
对象是现实世界中的一个实体,其具有以下一些特征:
(1)每一个对象必须有一个名字以区别于其他对象。
(2)需要用属性来描述它的某些特性。
c面向对象程序设计试题和答案
一、填空题(每空1分,共14分)
1、观看以下程序:
class point{
public:
void show() {cout<<”point”<<endl;}
};
void main()
{
point p1;
point *p;
p=&p1;
_______________//通过对象p1访问show函数
______________//通过指针p访问show函数
}
2、在C++类中可以包含______________、______________和______________三种具有不
同访问控制权的成员。
3、定义类时,在类头中将使用关键字_____________来表示类定义的开始。
4、如果一个类中至少有一个纯虚函数,则该类称为________________。
5、C++类的组成包括数据成员和______________,友元_____(是、不是)该类的成员
函数。
6、友员函数是用关键字____________修饰的非成员函数。
7、若有:
int i;
int &j=i;
i=10;
j=i+1;
则i=__________,j=__________。
8、 new的功能是____________________,delete的功能是
____________________。
二、选择题(每小题1.5分,共30分)
1、下列特性中不是面向对象程序设计语言所特有的是()。
(A)数据封装(B)继承(C)多态性(D)模板
2、()是给变量取一个别名,它引入了变量的同意词。
(A)指针(B)引用(C)枚举(D)结构
《面向对象程序设计C》期末试卷及标准答案(A)
《面向对象程序设计C》期末试卷及标准答案(A)
一、选择题(每小题2分,共40分)
1、C++是()。
A. 面向对象的程序设计语言
B. 面向过程的程序设计语言
C. 既支持面向对象的程序设计又支持面向过程的程序设计的混合型语言
D. 非结构化的程序设计语言
2、面向对象程序设计思想的主要特征中不包括()。
A. 封装性
B. 多态性
C. 继承性
D. 功能分解,逐步求精
3、若定义:string str; 当语句cin>>str; 执行时,从键盘输入:
Microsoft Visual Studio 6.0!
所得的结果是str=()。
A. Microsoft Visual Studio 6.0!
B. Microsoft
C. Microsoft Visual
D. Microsoft Visual Studio 6.0
4、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');
下面函数调用中,不合法的是()。
A. testDefaulParam(5);
B. testDefaulParam(5,8);
C. testDefaulParam(5,'#');
D. testDefaulParam(0,0,'*');
5、下列语句中,将函数int sum(int x, int y)正确重载的是()。
A. float sum(int x, int y);
B. int sum(int a, int b);
C. float sum(float x, float y);
C语言程序设计教程(人民邮电出版社) 课后习题答案
第1章C++语言概述
练习题1
1.1 判断题
×1.C++语言和C语言都是面向对象的程序设计语言。
√2.面向对象方法具有封装性、继承性和多态性。
√3.C语言是C++语言的一个子集。C++语言继承了C语言。
×4.C++语言程序与C语言程序一样都是函数串。
×5.C++语言支持封装性和继承性,不支持多态性。
√6.C++语言比C语言对数据类型要求更加严格了。
√7.C++语言对C语言进行了一次改进,使得编程更加方便了。
×8.C++源程序在编译时可能出现错误信息,而在连接时不会出现错误信息。√9.编译C++源程序时,出现了警告错(Warning)也可以生成可执行文件。√10.C++语言程序的实现也要经过编辑、编译连接和运行3个步骤。
1.2 单选题
1.下列关于面向对象概念的描述中,错误的是(C )。
A.面向对象方法比面向过程方法更加先进
B.面向对象方法中使用了一些面向过程方法中没有的概念
C.面向对象方法替代了结构化程序设计方法
D.面向对象程序设计方法要使用面向对象的程序设计语言
2.下列各种高级语言中,不是面向对象的程序设计语言是(D )。
A.C++ B.Java
C.VB D.C
3.下列关于类的描述中,错误的是( A )。
A.类就是C语言中的结构类型
B.类是创建对象的模板
C.类是抽象数据类型的实现
D.类是具有共同行为的若干对象的统一描述体
4.下列关于对象的描述中,错误的是(C )。
A.对象是类的一个实例
B.对象是属性和行为的封装体
C.对象就是C语言中的结构变量
D.对象是现实世界中客观存在的某种实体
5.下列关于C++程序中使用提取符和插入符的输入/输出语句的描述中,错误的是(C )。
面向对象的程序设计语言-C(第二版)-习题参考答案
习题参考答案
第1章C++语言概述
1.填空题
(1)函数说明,函数体
(2)声明区,主程序区,函数定义区
(3)多态性
(4)namespace,using
(5)std
(6)cin,>>
(7)//
(8)对数据的操作
2.判断题
(1)对(2)错(3)错(4)错(5)错
3.改错题
(1)没有函数体,应改为
void main() {};
(2)语句没有分号,应改为
using namespace myspace;
(3)cout和操作符<<共同完成输出的功能,应改为
cout<<" Input your name:";
(4)应改为
#include <iostream.h>
4.简答题(略)
5.编程题(略)
第2章基本数据类型、运算符与表达式1.选择题
(1)B (2)D (3)B (4)D (5)B
2.简答题
(1)(a)、(c)(e)、(f)、(g)、(h)、(i)
(2)(a)、(g)、(i)、(j)
(3)
(a)5.5
(b)0
(c)20
(d)0,0
(e)1
(f)1,2
(g)3
(h)-40
(i)2
(j)3
(k)s1>='0'&&s1<='9'
(l)N!=0
3.读程序写结果
(1)0,15
(2)(1、1、1),(-1、-1、-1)
(3)
(a)a*a+2*a*b+b*b
(b)4.0/3.0*3.1415926*R*R*R
(c)5.0/9.0*(F-32)
(d)b>=a&&b<=c
(4)
36
41
43
(5)
x=1
4.编程题(略)
第3章C++的控制语句1.选择题
《面向对象程序设计c 》综合复习题集及答案详解
《面向对象程序设计》
综
合
复
习
题
集
四、程序填充
1. 斐波那契数列的第1和第2个数分别为0和1 ,从第三个数开始,每个数等于其前两个数之和。求斐波那契数列中的前20个数,要求每行输出5个数。
#include<iostream.h>
void main() {
int f,f1,f2,i;
cout<<”斐波那契数列:\n”;
f1=0; f2=1;
cout<<setw(6)<<f1<<setw(6)<<f2;
for(i=3;i<=20;i++) {
f=______(1)______;
cout<<setw(6)<<f;
if(_____(2)______) cout<<endl;
f1=f2;
f2=____(3)_______;
}
cout<<endl;
}
(1) (2) (3)
2. 计算∑
=
+ -
10 1
1
!
)1
(
i
i
i
i
x
的值。
#include<iostream.h>
void main()
{
double x,p1=1,p2=1,s=0;
int i,j=1;
cout<<"输入x的值:";
cin>>x;
for(i=1;i<=10;i++) {
p1*=___(1)_____;
p2*=____(2)____;
s+=j*p1/p2; //j的值为(-1)i+1
j=____(3)____;
}
cout<<s<<endl;
}
(1) (2) (3)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章:面向对象程序设计概述
[1_1]什么是面向对象程序设计?
面向对象程序设计是一种新型的程序设计范型。这种范型的主要特征是:
程序=对象+消息。
面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。
面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。
[1_2]什么是类?什么是对象?对象与类的关系是什么?
在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。对象可以认为是:数据+操作
在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。
类和对象之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,一个对象是类的一个实例。
在面向对象程序设计中,总是先声明类,再由类生成对象。类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。
[1_3]现实世界中的对象有哪些特征?请举例说明。
对象是现实世界中的一个实体,其具有以下一些特征:
(1)每一个对象必须有一个名字以区别于其他对象。
(2)需要用属性来描述它的某些特性。
(3)有一组操作,每一个操作决定了对象的一种行为。
(4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。例如:雇员刘名是一个对象
对象名:刘名
对象的属性:
年龄:36 生日:1966.10.1 工资:2000 部门:人事部
对象的操作:吃饭开车
[1_4]什么是消息?消息具有什么性质?
在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。当对象接收到发向它的消息时,就调用有关的方法,执行相应的操作。消息是一个对象要求另一个对象执行某个操作的规格的说明,通过消息传递才能完成对象之间的相互请求或相互协作。消息具有以下3个性质:
(1)同一个对象可以接收不同形式的多个消息,做出不同的响应。
(2)相同形式的消息可以传递给不同的对象,所做出的响应可以是不同的。(3)消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以不响应。[1_5]什么是方法?消息和方法的关系是什么?
在面向对象程序设计中,要求某一对象作某一操作时,就向该对象发送一个响应的消息,当对象接收到发向它的消息时,就调用有关的方法,执行响应的操作。方法就是对象所能执行的操作。方法包括界面和方法体两部分。方法的界面也就是消息的模式,它给出了方法的调用协议;方法体则是实现某种操作的一系列计算步骤,也就是一段程序。在C++语言中方法是通过函数来实现的,称为成员函数。消息和方法的关系是:对象根据接收到的消息,调用相应的方法;反过来,有了方法,对象才能响应相应的消息。
[1_6]什么是封装和抽象?请举例说明。
在现实世界中,所谓封装就是把某个事物包围起来,使外界不知道该事物的具体内容。在面向对象程序设计中,封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐蔽对象的内部细节。对象好象是一个不透明的黑盒子,表示对象属性的数据和实现各个操作的代码都被封装在黑盒子里,从外面是看不见的,更不能从外面直接访问或修改这些数据及代码。使用一个对象的时候,只需要知道它向外界提供的接口形式而无需知道它的数据结构细节和实现操作的算法。封装机制可以将对象的使用者与设计者分开,使用者不必知道对象行为实现的细节,只需要使用设计者提供的接口让对象去做。
抽象是人类认识问题的最基本的手段之一。它忽略了一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象是对复杂世界的简单表示,抽象强调感兴趣的信息,忽略了不重要的信息。例如,设计一个学籍管理程序的过程中,考察某个学生对象时,只关心他的姓名、学好、成绩等,而对他的身高、体重等信息就可以忽略。以一般观点而言,抽象是通过特定的实例(对象)抽象共同性质以后形成概念的过程。抽象是对系统的简化描述或规范说明,它强调了系统中的一部分细节和特性,而忽略了其他部分。抽象包括两个方面:数据抽象和代码抽象(或称为行为抽象)。前者描述某类对象的属性或状况,也就是此类对象区别于彼类对象的特征物理量;后者描述了某类对象的共同行为特征或具有的共同操作。
在面向对象程序设计方法中,对一个具体问题的抽象分析的结果,是通过类来描述和实现的。现在以学生管理程序为例,通过对学生进行归纳、分析,抽取出其中的共性,可以得到如下的抽象描述:
共同的属性:姓名、学号、成绩等,他们组成了学生数据抽象部分。用C++语言的数据成员来表示,可以是:
char *name; int number; float score;
共同的行为:数据录入、数据修改和数据输出等,这构成了学生的行为抽象部分,用C++语言的成员函数表示,可以是:input();modify();print(); 如果我们开发一个学生健康档案程序,所关心的特征就有所不同了。可见,即使对同一个研究对象,由于所研究问题的侧重点不同,就可能产生不同的抽象结果。
[1_7]什么是继承?请举例说明。
继承所表达的是对象类之间的相关关系,这种关系使得某类对象可以继承另一类对象的特征和能力。现实生活中,继承是很普遍和容易理解的。例如我们继承了父母的一些特征,如种族、血型、眼睛的颜色等,父母是我们所具有的属性的基础。继承所表达的是对象之间相关的关系。这种关系使得某一类可以继承另一个类的特征和能力。
[1_8]若类之间具有继承关系,则它们之间具有什么特征?
(1)类间具有共享特征(包括数据和操作代码的共享)
(2)类间具有差别或新增部分(包括非共享的数据和代码操作)
(3)类间具有层次结构
假设有两个类A和B,若类B继承类A,则类B包含了类A的特征(包括数据和操作),同时也可以加入自己所特有的新特性。这时,我们称被继承类A为基类或父类或超类;而称继承类B为A类的派生类或子类。同时,我们还可以说,类B是从类A中派生出来的。
[1_9]什么是单继承、多继承?请举例说明。
从继承源上分,继承分为单继承和多继承。单继承是指每个派生类只直接继承了一个基类的特征。多继承是指多个基类派生出一个派生类的继承关系。多继承的派生类直接继承了不止一个基类的特征。例如:小孩的玩具车继承了车的一些特性,还继承了玩具的一些特征。
[1_10]什么是多态性?举例说明。