面向对象程序设计C++第四章
- 格式:ppt
- 大小:6.14 MB
- 文档页数:64
面向对象程序设计课后题答案第二章C++概述【2.6】D【2.7】D【2.8】A【2.9】A【2.10】B【2.11】A【2.12】C【2.13】B【2.14】D【2.15】C【2.16】D【2.17】C【2.18】程序的运行结果:101【2.19】程序的运行结果:10 10【2.20】程序的运行结果:1020【2.22】编写一个C++风格的程序,用动态分配空间的方法计算Fibonacci数列的前20项并存储到动态分配的空间中。
#include <iostream.h>int main(){int *p,i;p[0]=1;p[1]=1;for(i=2;i<20;i++){p[i]=p[i-1]+p[i-2];}for(i=0;i<20;i++){cout<<p[i]<<endl;}return 0;}【2.23】编写一个C++风格的程序,建立一个被称为sroot()的函数,返回其参数的二次方根。
重载sroot()3次,让它返回整数、长整数与双精度数的二次方根。
#include <iostream.h>#include<math.h>double sroot(int m){return sqrt(m);}double sroot(long m){return sqrt(m);}double sroot(double m){return sqrt(m);}int main()cout<<"sroot(145)="<<sroot(145)<<endl;cout<<"sroot(123456)="<<sroot(123456)<<endl;cout<<"sroot(1.44)="<<sroot(1.44)<<endl;return 0;}【2.24】编写一个C++风格的程序,解决百钱问题:将一元人民币兑换成1、2、5分的硬币,有多少种换法?#include <iostream.h>int main(){int k=0;for(int i=0;i<=20;i++){for(int j=0;j<=50;j++){if(100-5*i-2*j>=0){k++;}}}cout<<"将一元人民币兑换成1、2、5分的硬币,共有"<<k<<"种换法"<<endl;return 0;}【2.25】编写一个C++风格的程序,输入两个整数,将它们按由小到大的顺序输出。
《面向对象程序设计》第04章在线测试《面向对象程序设计》第04章在线测试剩余时间:58:55答题须知:1、本卷满分20分。
2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。
3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。
第一题、单项选择题(每题1分,5道题共5分)1、如果在类B 中定义友元,其中正确的是:A、class B { friend int fun(A*, B&);};B、class B { friend int fun(A*, B*);};C、class B { friend int fun(A&, B&);};D、class B { friend int fun(A&, B*);};2、下面的语句中能将类B 定义为类A的友元类的是()A、friend class B;B、class A{ friend B};C、class A{ friend class B;};D、class friend B class A;3、关于友元的说法正确的是()A、友元关系可以继承B、友元关系是双向的C、友元关系不可以传递D、友元关系可以取消4、下面对于友元函数描述正确的是A、友元函数的实现必须在类的内部定义B、友元函数是类的成员函数C、友元函数破坏了类的封装性和隐藏性D、友元函数不能访问类的私有成员5、一个类的友元函数或友元类能够通过成员操作符访问该类的()A、私有成员B、保护成员C、公有成员D、所有成员第二题、多项选择题(每题2分,5道题共10分)1、下面关于友元函数正确的说法是()A、在类中用关键词friend声明友元函数B、友元函数说明的位置只能在类的public区C、友元函数的定义只能放在类的外部D、友元函数不是类的成员函数2、定义类B的构造函数为类A的友元函数的语句是()A、class A { friend B();};B、class A { friend B::B();};C、class A { friend void B::B();};D、class A { friend double B::B();};3、关于友元函数的说法正确的是()A、友元函数可以是普通函数,可以是其他类的成员函数,也可以是本类的成员函数B、友元函数可以访问多个类的私有成员和保护成员C、在调用友元函数的时候需要使用“.”运算符D、如果友元函数是某个类的成员函数,在定义这个友元函数的时候要使用类前缀。
public:test();~test();void print();};//test.cpp#include<iostream>using namespace std;#include"test.h"test::test(){cout<<"输出无参构造函数"<<endl;x=0;}test::~test(){cout<<"输出无参析构函数"<<endl; }void test::print(){cout<<"x="<<x<<endl;}//main.cpp#include<iostream>#include"test.h"using namespace std;void main(){test obj1,obj2;obj1.print();obj2.print();}4.16试设计程序,演示有对象成员时构造成员时构造函数和析构函数的调用顺序。
#include <iostream>using namespace std;class Test1{private:int x1;public:Test1( ) :x1(0){cout<<"构造函数1被执行"<<endl;}Test1(int i):x1(i){cout<<"构造函数1被执行"<<x1<<endl;}~Test1( ){cout<<"析构函数1被执行"<<endl;}};class Test2{private:Test1 x2;int x3;public:Test2(int i,int j ) :x2(i){x3=j;cout<<"构造函数2被执行"<<x3<<endl;}~Test2( ){cout<<"析构函数2被执行"<<endl;}};void main(){Test2 obj(5,6);}4.17 设计一个含有指针类型数据成员的类,自定义构造函数、拷贝构造函数、析构函数和基本赋值运算符函数。
第四章面向对象方法【学习目标】本章集中介绍了面向对象方法的基本原理和概念,同时简述了统一建模语言(Unified Modeling Languange,UML)的主要作用和基本概念,并结合一个实例,论述了基于UML 语言的面向对象分析方法,从而使学生掌握面向对象方法的基本理论,学会使用UML语言进行面向对象的分析和建模。
【学习方法】正确理解面向对象方法和UML语言涉及的基本概念,结合具体实例运用面向对象分析技术,从而达到学习目的。
【难重点】本章的学习重点在于理解面向对象方法的原理和概念,熟练运用UML语言,掌握面向对象的分析方法,其难点是怎样在实际的软件项目中灵活运用这些思想和方法。
【课前思考】面向对象开发方法有什么优点?面向对象方法包含哪些基本概念?为什么要对软件系统建模?什么是UML?面向对象分析与面向对象设计的区别是什么?什么是软件复用?4.1 面向对象方法概述【本节知识点】什么是面向对象面向对象技术的发展历史面向对象的基本概念面向对象的软件工程方法4.1.1 什么是面向对象面向对象(Object Oriented)技术是软件工程领域中的重要技术,这种软件开发思想比较自然地模拟了人类认识客观世界的方式,成为当前计算机软件工程学中的主流方法。
应该特别强调的是,面向对象技术不仅仅是一种程序设计方法,更重要的是一种对真实世界的抽象思维方式。
面向对象方法的基本思想是从现实世界中客观存在的事物(即对象)出发,尽可能地运用人类的自然思维方式来构造软件系统。
它更加强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装等,使开发者以现实世界中的事物为中心来思考和认识问题,并以人们易于理解的方式表达出来。
面向对象技术的基本观点如下:(1)客观世界是由对象组成的,任何客观的事物或实体都是对象,复杂的对象可以由简单的对象组成。
(2)具有相同数据和相同操作的对象可以归并为一个类,对象是对象类的一个实例。