面向对象程序设计教程答案.docx
- 格式:docx
- 大小:42.64 KB
- 文档页数:21
面向对象程序设计课后答案(完整版)第二章2-4#includeusing namespace std;Add(int a,int b);int main(){int x,y,sum;cout>x>>y;sum = add(x,y);cout >*p;p++;}p = p-20;for( i=0;i0) countp++;if(*p>age ;try{checkagescore(name,age);}catch( string){cout<<"exception :name is exit"<<endl;continue;}catch(int){cout<<"exception :age is not proper"<<endl;continue;}cout<<"name:"<<name<<" age :"< }return 0;}第三章3-1(1)A (2)C (3)B (4)C (5)C(6)B (7)B (8)C (9)C3-7(1)main()函数中p1.age = 30;语句是错误的。
age 是类的私有成员(2)构造函数应当给常数据成员和引用成员初始化,将构造函数改为:A(int a1,int b1):a(a1),b(b1){}或A(int a1 ):a(a1),b(a){}再将main中的A a(1,2); 改为A a(1);(3)(1)在Test 类中添加语句:void print();void Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}改为void Test::Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}main函数中Init(38,15);改为:A.Init(38,15);Print();改为:A.Print();3-8(1)Constructing AConstructing BDestructing BDestructing A(2)double a,double bpoint & pp.x3-9class box{int len1,len2,len3;public:box(int l1,int l2,int l3){len1 = l1;len2 = l2; len3 = l3;} long volumn(){return len1*len2*len3;}};3-10class Test{int m1,m2;public:void Init(int a,int b){m1 = a;m2 = b;}void Pring(){cout<<m1<<" "<<m2<<endl;}};3-11略3-12}第四章4-6(1)D (2)D (3)D (4)D (5)B(6)D4-7(1)static int count = 0;这样初始化静态成员值是不对的将其改为static int count;在类外,main函数前加int Sample::count = 0;(2)#include//#includeusing namespace std;class Ctest{private:int x; const int y1;public:const int y2;Ctest(int i1,int i2):y1(i1),y2(i2) {y1 =10;//y1 为常量不能赋值x = y1;}int readme() const;};int Ctest::readme ()const{int i;i = x;x++; //常函数内不能改变成员值return x;}int main(){Ctest c(2,8);int i = c.y2;c.y2 = i;//y2为常量,不能改值i = c.y1;//y1私有,类外不能访问return 0;}将出错语句全部注释4-8(1)题中印刷错误,将class C构造函数改为: C(){cout<<"constructor C:";}运行结果为:constructor Aconstructor Bconstructor C(2)40(3)3434-9#include#includeclass Date{int year;int month;int day;public:Date(int y,int m,int d){year=y;month=m;day=d;}void disp(){cout<<year<<" "<<month<<" "<<day<<endl;}friend int count_day(Date &d,int k);friend int l(int year);friend int h(Date &d1,Date &d2);};int count_day(Date &d,int k){static int day_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,3 1},{31,29,31,30,31,30,31,31,30,31,30,31}};// 使用二维数组存放各月天数,第一行对应非闰年,第二行对应闰年int j,i,s;if(l(d.year))j=1;//闰年,取1else j=0;//非闰年,取0if(k)//K非0时{s=d.day;for(i=1;i<d.month;i++)//d.month为输入的月份s+=day_tab[j][i-1];}else//K为0时{s=day_tab[j][d.month]-d.day;for(i=d.month+1; i<=12; i++)s+=day_tab[j][i-1];}return s;//S为相差的天数}int l(int year){if(year%4==0&&year%100!=0||year%400==0) // 是闰年return 1;else // 不是闰年return 0;}int h(Date &d1,Date &d2){int days,day1,day2,y;if(d1.year<d2.year)//第一个日期年份小于第二个日期年份{days=count_day(d1,0);for(y=d1.year+1;y<d2.year;y++)if(l(y))//闰年。
面向对象程序设计教程答案面向对象程序设计教程
第一章:介绍面向对象程序设计
⑴面向对象程序设计的概念
⑵面向对象程序设计的优势
⑶面向对象程序设计的基本原则
第二章:面向对象的基本概念
⑴类和对象的概念
⑵属性和方法的定义
⑶封装、继承和多态的概念
第三章:类的设计与实现
⑴类的设计原则
⑵类的成员变量和成员函数的设计
⑶类的构造函数和析构函数的设计
⑷类的访问控制和封装性的实现
第四章:继承与多态
⑴继承的概念和用法
⑵单继承和多继承的区别
⑶虚函数的定义和使用
⑷纯虚函数和抽象类的概念
第五章:面向对象的设计模式
⑴设计模式的概念和分类
⑵单例模式的实现
⑶工厂模式的实现
⑷观察者模式的实现
第六章:面向对象程序设计的实例
⑴车辆管理系统的设计与实现
⑵学生信息管理系统的设计与实现
⑶游戏角色的设计与实现
附件:
⒈示例代码
⒉ UML图
法律名词及注释:
⒈版权:根据国际公约,对作者创作的作品(包括文学、艺术、音乐、软件等)的独有权益进行法律保护。
⒉商标:商标是指为了区别商品或服务而在商品上、包装上、容器上或者商品的商业文件上使用的特定标识的任何符号。
⒊专利:专利是为了推动技术创新,提供创新者在一定时期内对其发明进行独占权利的一种法律制度。
⒋许可证:许可证是指一方在法律许可范围内允许他人使用自己的某种权利的文件。
面向对象程序设计教程答案面向对象程序设计教程第1章引言1.1 背景1.1.1 传统的结构化程序设计方法1.1.2 面向对象的程序设计方法1.2 目标1.3 本教程的组织结构第2章面向对象的基本概念2.1 类和对象2.1.1 类的定义2.1.2 对象的创建与使用2.2 封装和信息隐藏2.2.1 封装的概念2.2.2 信息隐藏的重要性2.3 继承和多态2.3.1 继承的概念与用法 2.3.2 多态的概念与用法 2.4 抽象和接口2.4.1 抽象的概念与用法 2.4.2 接口的概念与用法第3章面向对象的设计原则3.1 单一职责原则3.2 开放-封闭原则3.3 里氏替换原则3.4 依赖倒置原则3.5 接口隔离原则3.6 迪米特法则第4章面向对象的分析与设计 4.1 需求分析4.1.1 确定需求4.1.2 分析需求4.2 类的设计4.2.1 识别类的责任4.2.2 定义类的属性和行为 4.3 协作关系的设计4.3.1 关联关系4.3.2 依赖关系4.3.3 聚合关系4.3.4 组合关系4.3.5 继承关系第5章面向对象的编程语言5.1 Java5.2 C++5.3 Python5.4 Ruby第6章实例分析:学绩管理系统 6.1 需求分析6.2 类的设计6.3 协作关系的设计6.4 实现与测试第7章总结本文档涉及附件:无本文所涉及的法律名词及注释:1:封装:将数据和对数据的操作封装在一个类中,外部无法直接访问和修改内部数据,只能通过类提供的接口访问和修改。
2:信息隐藏:对于类的用户来说,只需要知道如何使用类的接口,而不需要知道类的实现细节。
3:继承:一个类可以从另一个类继承属性和方法,继承可以提高代码的复用性和可维护性。
4:多态:同一个方法可以根据不同的对象调用不同的实现,提高代码的灵活性和可扩展性。
5:抽象:将一组具有相似属性和行为的对象抽象成一个类,可以减少代码重复。
6:接口:描述类的行为,定义类应该实现的方法。
第二章2-4#include <iostream>using namespace std;Add(int a,int b);int main(){int x,y,sum;cout<<"please input x and y:";cin>>x>>y;sum = add(x,y);cout <<x<<"+"<<y<<"="<<sum<<endl;}Add(int a,int b){return a+b;}2-5(1)this is a C++ program.(2)x= y=10 z=Ax= y=10 z=Ax= y=2 z=Ax= y=2 z=E(3)x y z500 1000 0500 1500 1500500 200 15002-6#include <iostream>using namespace std;int main(){int *p,*init;int countp=0;int countn=0;p = new int[20];init = p;for(int i=0;i<20;i++){cin>>*p;p++;}p = p-20;for( i=0;i<20;i++){if(*p>0) countp++;if(*p<0) countn++;cout<<*p<<" ";p++;}cout<<"正数有:"<<countp<<endl; cout<<"负数有:"<<countn<<endl; p = init;delete[] p;return 0;}2-7不做要求#include <iostream>rint ();cout<<"最小成绩:"<<endl;st[min].Print ();return 0;}4-11#include <iostream>#include <string>using namespace std;class Book{char *name;char*author;int sale;public:Book(){ name = '\0';author = '\0';sale = -1;}Book(char* a ,char* b,int c){name = new char[strlen(a)+1];strcpy(name,a);author = new char[strlen(b)+1];strcpy(author,b);sale = c;}void print(){cout<<"autor "<<author<<endl;cout<<"name "<<name<<endl;cout<<"price "<<sale<<endl;}~Book(){if(!name ) delete[] name;if(!author)delete[] author;}};int main(){Book b1("c++","li ai hua",12);Book b2;return 0;}第五章5-8改错题答案不唯一(1) class DC {int x;public:DC(){x =100;}};(2)编译无错,但逻辑错误,可改为:class BC{protected:int x;public:BC(int i=0){x = i}};class DC:private BC{public:DC(int i):BC(i){}};(3)将DC构造函数改为:DC(int i):BC(i){y = 0;}5-9(1) base class(2) (10,5)(3,9-18,33)(13,19)(13,19-18,33)(13,19)5-10#include <iostream>using namespace std;class Shape{int x,y;public:Shape(int ix,int iy){x = ix; y = iy;}virtual void show(){cout<<"pos: "<<x<<' '<<y<<endl;}};class Circle :public Shape{int radius;public:Circle(int ix,int iy,int r):Shape(ix,iy),radius(r){}void show() {Shape::show ();cout<<"circle: "<<radius<<endl;}};class Rect :public Shape{int width,higth;public:Rect(int ix,int iy,int iw,int ih):Shape(ix,iy),width(iw),higth(ih){} void show() {Shape::show ();cout<<"width and higth: "<<width<<' '<<higth<<endl;} };int main(){Shape s1(1,1);Rect r1(2,2,8,8);Circle c1(3,3,9);();();return 0;}5-11#include<>class vehicle show ();tru1. show ();}第六章6-4d=3D::fun();6-5C::print(),cinfo=2C::print(),cinfo=2D::print(),dinfo=4B类不能定义对象,否则编译通不过,因为B未定义基类A中的虚函数print(),它也是个虚基类。
第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对彖程序设计是一种新型的程序设计范型。
这种范型的主要特征是:程序=对象+消息。
面向对彖程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对彖并规定它们之间传递消息的规律。
第二: 程序中的一切操作都是通过向对彖发送消息来实现的,对彖接受到消息后,启动有关方法完成相应的操作。
面向对彖程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。
这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希塑、最有前途的方法之一。
[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对彖程序设计中,对彖是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。
对象可以认为是:数据+操作在面向对彖程序设计中,类就是具有相同的数据和相同的操作的一组对彖的集合,也就是说, 类是对具有相同数据结构和相同操作的一类对彖的描述。
类和对彖之间的关系是抽象和具体的关系。
类是多个对彖进行综合抽象的结果,一个对象是类的一个实例。
在面向对彖程序设计中,总是先声明类,再由类生成对象。
类是建立对彖的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。
[1_3]现实世界中的对象有哪些特征?请举例说明。
对彖是现实世界中的一个实体,其具有以下一些特征:(1)每一个对彖必须有一个名字以区别于其他对彖。
(2)需要用属性来描述它的某些特性。
(3)有一组操作,每一个操作决定了对象的一种行为。
(4)对彖的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。
例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36生口:1966.10.1工资:2000部门:人爭部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对彖程序设计中,一个对象向另一个对象发出的请求被称为“消息”。
第二章2-4#include <iostream>using namespace std;Add(int a,int b);int main(){int x,y,sum;cout<<"please input x and y:"; cin>>x>>y;sum = add(x,y);cout <<x<<"+"<<y<<"="<<sum<<endl; }Add(int a,int b){return a+b;}2-5(1)this is a C++ program.(2)x=50.6 y=10 z=Ax=216.34 y=10 z=Ax=216.34 y=2 z=Ax=216.34 y=2 z=E (3)x y z500 1000 0500 1500 1500500 200 15002-6#include <iostream> using namespace std; int main(){int *p,*init;int countp=0;int countn=0;p = new int[20];init = p;for(int i=0;i<20;i++){cin>>*p;p++;}p = p-20;for( i=0;i<20;i++){if(*p>0) countp++;if(*p<0) countn++;cout<<*p<<" ";p++;}cout<<"正数有:"<<countp<<endl; cout<<"负数有:"<<countn<<endl; p = init;delete[] p;return 0;}2-7不做要求#include <iostream>//#include <string>using namespace std;void checkagescore(string name,int age) {if (name == "exit") throw name;if(age<0||age>50)throw age;}int main(){string name;int age;for(int i=0 ;i<5 ;i++ ){cin.ignore ();getline(cin,name );cin>>age ;try{checkagescore(name,age);}catch( string){cout<<"exception :name is exit"<<endl;continue;}catch(int){cout<<"exception :age is not proper"<<endl;continue;}cout<<"name:"<<name<<"age :"<<age<<endl;}return 0;}第三章3-1(1)A (2)C (3)B (4)C (5)C (6)B (7)B (8)C (9)C3-7(1)main()函数中p1.age = 30;语句是错误的。
实验一熟悉VC++IDE开发环境一、实验目的1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。
2、掌握如何编辑、编译、连接和运行一个C++程序。
3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。
二、实验要求1、分析下列程序运行的结果。
程序一:#include <iostream.h>int add(int x,int y=8);void main(){ int x=4;cout<<add(x)<<",";cout<<add(x,add(add(x,add(x))))<<endl;}int add(int x,int y){ return x+y;}//12,28程序二:#include <iostream.h>void main(){ int *p,i;i=5;p=&i;i=*p+10;cout<<"i="<<i<<endl;}//i=15程序三:#include <iostream.h>void main(void){ int i=10;int &r=i;r++;cout<<"i="<<i<<", r="<<r<<'\n';i=88;cout<<"i="<<i<<", r="<<r<<'\n';}//i=11,r=11i=88,r=88程序四:#include <iostream.h>int f(int i){ static int k=1;for(;i>0;i--)k +=i;return k;}void main(){ int i;for(i=0;i<5;i++)cout<<f(i)<<" ";}// 1 2 5 11 21程序五:#include <iostream.h>void func();int n=1;void main(){ static int a;int b= -9;cout <<"a:"<<a<<" b:"<<b<<" n:" <<n<<endl;b+=4;func();cout <<"a:"<<a<<" b:"<<b<<" n:"<<n<<endl;n+=10;func();}void func(){ static int a=2; int b=5;a+=2;n+=12;b+=5;cout <<"a:" <<a<<" b:" <<b<<" n:" <<n <<endl;}// a:0 b:-9 n:1a:4 b:10 n:13a:0 b:-5 n:13a:6 b:10 n:35实验二C++对C的扩充一、实验目的1、了解在面向对象程序设计过程中C++对C功能的扩充与增强,并善于在编写程序的过程中应用这些新功能。
1、下列关于类的描述中,错误的是()。
A.可以将所有类成员的访问权限都设为私有权限B.类可认为是一种高级数据类型C.类包含数据成员和函数成员D.用类所定义出的变量称为对象正确答案:A2、下列关于重用代码的描述中,错误的是()。
A.函数是重用算法代码的语法形式B.类是一种数据类型,因此只能重用数据代码C.结构体类型是重用数据代码的语法形式D.类是同时重用算法代码和数据代码的语法形式正确答案:B3、关于程序开发过程中的程序员角色,下列哪种描述是错误的?A.一个程序员可以使用其他程序员提供的代码,即代码使用者B.一个程序员可以既是代码提供者,同时又是代码使用者C.一个程序员不能既是代码提供者,同时又是代码使用者D.一个程序员可以为其他程序员提供代码,即代码提供者正确答案:C4、关于程序设计方法,下列哪种描述是错误的?A.结构化程序设计分解出的函数是一种算法零件B.程序设计方法是研究如何对大型程序设计任务进行分解的方法C.结构化程序设计分解出的结构体类型是一种数据零件D.面向对象程序设计分解出的类是一种数据零件5、下列哪种思想不属于面向对象程序设计?A.继承B.模块化C.抽象D.封装正确答案:B6、下列关于类的描述中,错误的是()。
A.可以用流程图来描述类的设计B.类是描述客观事物的数据模型C.类的数据成员也被称作属性D.类的函数成员也被称作方法正确答案:A7、按照面向对象程序设计的观点,下列关于对象描述中错误的是()。
A.客观世界中的事物被称作客观对象B.类是描述客观对象的数据模型C.程序中用类定义出的对象被称作内存对象D.同一个类所定义出的两个内存对象可以有不同的成员正确答案:D8、关于面向对象程序设计方法,下列哪种描述是错误的?A.面向对象程序设计方法所设计出的类代码不能重用B.面向对象程序设计方法更便于代码分类管理C.面向对象程序设计方法中的类是客观事物抽象后的数据模型D.面向对象程序设计方法是当今程序设计的主流方法9、假设编写一个教务管理系统,通过分析可抽象出若干个类,其中不应当包括下列哪个类?A.宿舍类B.教师类C.课程类D.学生类正确答案:A10、如果将客观世界中的钟表抽象成一个钟表类,其中不应当包含下列哪个成员?A.设置时间B.显示时间C.功率D.时、分、秒正确答案:C11、下列关于字段成员的描述中,错误的是()。
面向对象程序设计教程-答案(共19页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--面向对象程序设计教程(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 )是错误的。
A. C语言是C++的一个子集B. C语言与C++是兼容的C. C++对C语言进行了一些改进D. C++和C语言都是面向对象的【结果分析】C语言是面向过程的。
面向对象程序设计教程答案面向对象程序设计教程⒈简介⑴程序设计概述⑵面向对象编程概述⑶面向对象编程的优势⒉类和对象⑴类的定义⑵对象的创建和使用⑶类的继承和多态⑷抽象类和接口⒊封装和继承⑴封装的概念和作用⑵封装的实现方式⑶继承的概念和作用⑷继承的实现方式⒋多态和接口⑴多态的概念和作用⑵多态的实现方式⑶接口的概念和作用⑷接口的实现方式⒌组合和聚合⑴组合的概念和作用⑵组合的实现方式⑶聚合的概念和作用⑷聚合的实现方式⒍类和对象的关系⑴关联关系⑵依赖关系⑶简介关系⑷实现关系⒎对象的生命周期和内存管理⑴对象的创建和销毁⑵内存管理的概念和作用⑶垃圾回收机制⑷内存泄漏和内存溢出的概念⒏设计模式⑴设计模式的概念和作用⑵常见的设计模式⑶创建型模式⑷结构型模式⑸行为型模式⒐异常处理⑴异常的概念和作用⑵异常处理的机制⑶异常处理的实现方式⒑文件操作和输入输出⑴文件操作的概念和作用⑵文件读写的实现方式⑶输入输出流的概念和作用⑷输入输出流的实现方式1⒈线程和并发编程1⑴线程的概念和作用1⑵线程的创建和使用1⑶线程同步和互斥1⑷并发编程的概念和作用1⒉软件测试和调试1⑴软件测试的概念和作用1⑵单元测试和集成测试1⑶调试的概念和作用1⑷常见的调试工具和技巧1⒊版本控制和项目管理1⑴版本控制的概念和作用1⑵常见的版本控制工具1⑶项目管理的概念和作用1⑷项目管理工具和方法1⒋本文档涉及附件:附件1、面向对象程序设计示例代码附件2、面向对象程序设计练习题1⒌本文所涉及的法律名词及注释:1⑴版权:指对原创作品的独自权利,包括复制、修改、分发等权利。
1⑵商标:指用于区分商品或服务来源的标识,具有独特性和辨识度。
1⑶专利:指对发明、实用新型、外观设计等技术成果的独占权。
1⑷许可证:指授权他人使用某项权利的行为。
注:本文所涉及的法律名词及注释仅作为参考,具体以法律法规为准。
面向对象程序设计教程(C++吾言描述)题解与课程设计指导面向对象程序设计概论一、 名词解释抽象封装消息【问题解答】面向对象方法中的抽象是指对具体问题 (对象)进行概括, 抽出一类对象的公共 性质并加以描述的过程。
面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的 单位,并尽可能隐蔽对象的内部细节。
消息是面向对象程序设计用来描述对象之间通信的机制。
一个消息就是一个对象 要求另一个对象实施某种操作的一个请求。
二、 填空题(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 )是错误的。
A. C 语言是C++的一个子集B. C 语言与C++是兼容的C. C++对C 语言进行了一些改进D. C++和C 语言都是面向对象的【结果分析】C 语言是面向过程的。
C++吾言是一种经过改进的更为优化的 C 语言,是一种混 合型语言,既面向过程也面向对象。
( 6) 面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依 存、不可分割的整体来处理。
第1A. 算法B. 信息C. 数据隐藏D. 数据抽象(7)下面(A )不是面向对象系统所包含的要素。
A. 重载B. 对象C. 类D. 继承【结果分析】面向对象=对象+类+继承+消息+多态(8)下面说法正确的是(BC )。
A. 将数据结构和算法置于同一个函数内,即为数据封装B. 一个类通过继承可以获得另一个类的特性C. 面向对象要求程序员集中于事物的本质特征,用抽象的观点看待程序D. 同一消息为不同的对象接受时,产生的行为是一样的,这称为一致性【结果分析】面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。
将数据结构和算法置于同一个类内,即为数据封装。
同一消息为不同的对象接受时,产生的行为可能是不一样的,这称为多态性。
(9)下面说法正确的是(AD )。
A. 对象是计算机内存中的一块区域,它可以存放代码和数据B. 对象实际是功能相对独立的一段程序C. 各个对象间的数据可以共享是对象的一大优点D. 在面向对象的程序中,对象之间只能通过消息相互通信【结果分析】对象是计算机内存中的一块区域。
在对象中,不但存有数据,而且存有代码,使得每个对象在功能上相互之间保持相对独立。
对象之间存在各种联系,但它们之间只能通过消息进行通信。
四、判断题(1)在高级程序设计语言中,一般用类来实现对象,类是具有相同属性和行为的一组对象的集合,它是创建对象的模板。
(√ )(2)C++语言只支持面向对象技术的抽象性、封装性、继承性等特性,而不支持多态性。
(× )【结果分析】C++语言不仅支持面向对象技术的抽象性、封装性、继承性等特性,而且支持多态性。
(3)面向对象程序设计中的消息应该包含“如何做”的信息。
(× )【结果分析】消息是面向对象程序设计用来描述对象之间通信的机制。
向对象“发送消息”只需告诉对象做什么,对象根据这个消息决定如何做。
(4)一个消息只能产生特定的响应效果。
(× )【结果分析】当一个对象发出消息时,由于接收对象的类型可能不同,所以,它们可能做出不同的反应。
这样,一个消息可以产生不同的响应效果,这种现象叫做多态。
(5)类的设计和类的继承机制实现了软件模块的可重用性。
(√ )(6)C++语言和JaVa语言均不是一个纯正的面向对象的程序设计的语言。
(× )【结果分析】JaVa 语言是一个纯正的面向对象的程序设计语言。
(7)学习C++语言是学习面向对象的程序设计方法的唯一途径。
( × )【结果分析】程序设计方法是独立于具体程序设计语言的一种技术,学习C++语言是学习面向对象程序设计方法的重要途径之一。
(8)在C++语言中,类是支持数据封装的工具。
( √)五、简答题( 1) 什么是结构化程序设计方法?它有哪些优点和缺点?【问题解答】结构化程序设计方法着眼于系统要实现的功能,从系统的输入输出出发,分析系统要做哪些事情,进而考虑如何做这些事情,自顶向下地对系统的功能进行分解,来建立系统的功能结构和相应的程序模块结构,有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
随着程序规模与复杂性的增长,这种面向过程的结构化程序设计方法存在明显的不足之处。
首先是数据安全性问题。
由于数据被每个模块所共用,因此是不安全的,一旦出错,很难查明原因。
其次是可维护性及可重用性差。
它把数据结构和算法分离为相互独立的实体,一旦数据结构需要改变时,常常要涉及整个程序,修改工作量极大并容易产生新的错误。
每一种相对于老问题的新方法都要带来额外的开销。
另外,图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。
(2) 什么是面向对象程序设计方法?它有哪些优点?【问题解答】面向对象的程序设计方法中,将程序设计为一组相互协作的对象而不是一组相互协作的函数。
在程序中,属性用数据表示,用来描述对象静态特征;行为用程序代码实现,用来描述对象动态特征。
可见,在面向对象的程序设计方法中,对象是数据结构和算法的封装体。
对象之间存在各种联系,它们之间通过消息进行通信。
程序可表示为:程序=对象+消息在面向对象程序设计中应着重于类的设计。
类正是面向对象语言的基本程序模块,通过类的设计来完成实体的建模任务。
类通过一个简单的外部接口与外界发生关系。
一个类中的操作不会处理到另一个类中的数据,这样程序模块的独立性、数据的安全性就有了良好的保障。
程序的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。
不必预先确定消息产生的顺序,更符合客观世界的实际。
并且面向对象程序设计方法提供了软件重用、解决大问题和复杂问题的有效途径,具有抽象性、封装性、继承性和多态性等特点。
(3) 结构化程序设计方法与面向对象程序设计方法在对待数据结构和算法关系上有什么不同?【问题解答】结构化程序设计方法中,把数据结构和算法分离为相互独立的实体;而在面向对象程序设计中,数据结构和算法封装在一起,结合成一个独立的单位,即对象,并尽可能隐蔽对象的内部细节。
对象的私有属性只能由这个对象的行为来读取和修改,与外部的联系通过公有行为充当外部接口。
第2τ∖章从C 到C++面向对象程序设计教程(C++语言描述)题解与课程设计指导C++一、 名词解释 引用内联函数重载函数【问题解答】所谓引用就是给对象取一个别名, 使用该别名可以存取该对象。
换句话说是使新 对象和原对象共用一个地址。
内联函数是使用 inline 关键字声明的函数。
重载函数指在同一个作用域内名字相同而参数不同的函数。
重载函数通常用来对 具有相似行为而数据类型或数据个数不同的操作提供—个通用的名称。
二、 填空题(1) 一般情况下,用C++语言编写的程序是由函数加上类组成的。
( 2) C++ 有两种注释符号,一种是 // ,另一种是 /*,,*/ 。
(3) 使用C++风格的输入输出,在程序中必须包含头文件“ iostream ”。
( 4) cin 是预定义的标准输入流对象, >>是输入操作符,也称提取运算符。
( 5) cout 是预定义的标准输出流对象, <<是输出操作符,也称插入运算符。
(6) 指针的值是它所指向那个对象的地址值。
指针的类型是它所指向对象的 类型。
指针的内容便是它所指向对象的值。
(7) C++使用运算符&来定义一个引用,对引用的存取都是对它所引用的对象 的存取。
( 8) 当一个函数调用出现在函数定义之前时, 必须先用函数原型对函数进行声 明。
( 9) C ++ 有值传递和引用传递两种参数传递机制。
( 10) 使用关键字 inline 声明的函数称为内联函数。
(11)运算符new 用于进行动态内存分配,运算符delete 用于释放动态分配的 内存。
( 12) 下面程序的输出结果为 x=10, y=10;x=100, y=100。
#include<iostream>using namespace std;int main (){int x=10 , &y=x;cout<<"x="<<x<<" , y="<<y<<endl;int *p=&y;*p=100;第2cout<<"x="<<x<<" ,y="<<y<<endl;return 0;}三、选择题(至少选一个,可以多选)( 1) 在整型指针变量p2、p3 的定义中,错误的是( A )。
A. int p1 ,*p2,p3;B. int*p2 ,p1,*p3;C. int p1 ,*p2=&p1,*p3;D. int*p2 ,p1 ,*p3=&p1; 【结果分析】指针定义的具体格式如下所示:<类型> *<指针名1>,*<指针名2>,,;(2)若有定义“ double xx=3.14 , *pp=&xx; ”,则*pp 等价于(C )。
A. &xxB. *xxC. 3.14D. xx【结果分析】PP指向XX所在的内存单元,这样*pp和XX等价。
( 3) 下面对引用的描述中( C )是错误的。
A. 引用是某个变量或对象的别名B. 建立引用时,要对它初始化C. 对引用初始化可以使用任意类型的变量D. 引用与其代表的对象具有相同的地址【结果分析】所谓引用就是给对象取一个别名,使用该别名可以存取该对象,所以对引用初始化必须使用同类型的变量。