文档库 最新最全的文档下载
当前位置:文档库 › 面向对象实验题及答案(全)

面向对象实验题及答案(全)

面向对象实验题及答案(全)
面向对象实验题及答案(全)

实验1 cin、cout及面向过程的编程实验2 引用与函数重载

实验3 类与对象

实验4 静态成员与对象参数

实验5 拷贝构造函数与内存分配

实验6 对象数组与子对象

实验7 含有数组成员的对象与深拷贝实验8 运算符重载(1)

实验9 运算符重载(2)

实验10 继承与派生

实验11 虚函数与类族

实验12 STL

实验1 cin 、cout 及面向过程的编程

1A :显示某个日期是星期几

(1) 输入、输出要求:

输入:3个正整数,依次为年、月、日,比如2049 10 1 输出:按类似“[2049-10-5] is Friday.”的形式输出 示例:

(2) 处理方法

历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式,其中最著名的是蔡勒(Zeller)公式。即

7)%110)1(26244(-+?

??

???++-??????+??????+=d m c c y y w

公式中的符号含义:

w ——星期几

c ——年份的前两位 y ——年份的后两位

m ——月,3≤m ≤14,某年的1、2月视为上一年的13、14月,比如2003年1月1日要看作2002年的13月1日 d ——日

??——代表取整,即只要整数部分

%——除法求余数

例如:对于2049年10月1日,计算过程如下:

5

7%547)%284051249(7)%1110)110(2620242044949(==+-++=-+???

???++?-??????+??????+=w

即2049年10月1日是星期5。如果计算结果是负数,则加7。

1B :格式化输出实数

从键盘读取本金和年利率,求20年中每年末本息合计有多少钱。 输入:用空格分隔的两个数,都可以带小数点 输出:以“钱数(?年后)”的方式显示,以“2格、右对齐”的方式显示年,以“共10格、小数点后取2位、右对齐”的方式显示本息合计的钱数,见示例 示例:本金973.45元、年利率2%的显示结果如下

1C:格式化输出素数表

从键盘读取两个正整数,记作a、b,显示a、b之间(含a、b)的所有素数。

每行10个,每个数用6格,右对齐。

输入:用空格分隔的两个正整数

输出:每行10个素数,每个数用6格,右对齐,在素数表的下方显示“共有?个素数”示例:在a=1,b=100时,输出应为:

1D:验证常变量

设计一个完整程序验证“常变量形参的值不得更改”,其中包含main及一个函数,该函数以常变量作为形参,在函数中试图修改该形参变量的值(这是违反规则的),该代码在编译时应见到如下错误提示:

实验1答案1A:显示某个日期是星期几

1B:格式化输出实数

1C:格式化输出素数表

1D:验证常变量

实验2 引用与函数重载

2A:引用作为函数的参数

下面的主函数需要调用函数setdata,用于求x数组前n个元素的最大值、最小值、平均值,编写函数setdata,使得程序可以正确运行。

#include

using namespace std;

#define N 20

//此处编写setdata函数的代码

void main()

{

int max,min; //用于存放最大值和最小值

double avg; //用于存放平均值

int x[N]={29,78,0,24,80,12,2,86,21,73};

setdata(x,10,?????); //求前10个数的最大值、最小值、平均值

cout<<"Max="<

cout<<"Min="<

cout<<"Avg="<

}

2B:返回引用的函数

下面的主函数需要调用函数Ref_Max,其返回值是int型数组前n个元素的最大值的引用,主函数的功能是每次把最大值置为-1,并显示当前数组的值。编写Ref_Max函数,使得程序可以正确运行。

#include

using namespace std;

#define N 10

//此处编写Ref_Max函数的代码

void main()

{

int i,j; //用于存放最大值和最小值

int x[N]={29,78,0,24,80,12,2,86,21,73};

for(i=0;i

{

Ref_Max(x,N)=-1;

for(j=0;j

printf("%5d",x[j]);

cout<

}

}

2C:不同类型的数组排序

下面的程序只写出了主函数main,其中包含对名为sort的函数及名为display的函数多次调用。sort函数用于将一个数组排序,display函数用于显示数组中的各个元素。试编写相应的函数。

#include

using namespace std;

//此处根据需要编写函数

void main()

{

int m1,m2,m3;

int x1[]={29,78,0,24,80,12,2,86,21,73};

float x2[]={31.91,22.71,58.72,25.67,77.67,25.61,5.31,40.62,92.43,9.15,56.33,28.64};

double x3[]={1.548,1.884,2.476,1.761,9.689,0.591,4.325,0.196,1.973};

sort(x1,sizeof(x1)/sizeof(int));

display(x1,sizeof(x1)/sizeof(int));

sort(x2,sizeof(x2)/sizeof(float));

display(x2,sizeof(x2)/sizeof(float));

sort(x3,sizeof(x3)/sizeof(double));

display(x3,sizeof(x3)/sizeof(double));

}

实验2答案2A:引用作为函数的参数

2B:返回引用的函数

2C:不同类型的数组排序

实验3 类与对象

下面是关于CMyDate类的声明和主函数main:

class CMyDate

{

public:

CMyDate(int y,int m,int d); //构造函数,以参数设置日期

~CMyDate(){}; //析构函数,无操作

void Set(int y,int m,int d); //用参数更改日期

void Display(); //显示日期及星期几

private:

// void SetWeek(); //由当前日期计算是星期几,设置week int m_year,m_month,m_day,m_week; //数据成员,存放年月日和星期几

};

void main()

{

CMyDate d1(2049,10,1),d2(2001,1,1);

d1.Display();

cout <

d2.Display();

cout<

d2.Set(2001,1,1);

d2.Display();

cout<

d2=d1;

d2.Display();

cout<< endl;

}

3A:单文件编程

了解基于类的编程的基本框架。完成以下操作:

(1) 启动VC,新建操作台工程及源程序文件

(2) 将上述代码粘贴到该文件内。

(3) 查看“类视图”和“文件视图”中有哪些内容,查看相应文件夹中的文件名称

(4) 在类声明与main之间编写CMyDate的各个方法成员的代码

(5) 在类声明的前面添加#include等项

(6) 运行程序,观察结果

(7) 为程序添加“星期几”的功能,相应地修改相关函数成员

(8) 运行程序,观察结果

3B:多文件编程

在指导教师带领下完成以下操作:

(1) 启动VC,新建操作台工程及关于主函数的源程序文件,仅将上述主函数main粘贴到该

文件内。

(2) 查看“类视图”和“文件视图”中有哪些内容,查看相应文件夹中的文件名称

(3) 新建CMyDate类,查看文件夹中添加了哪些文件,以及“类视图”和“文件视图”中

添加了哪些内容。检查目前CMyDate类中有哪些成员。

(4) 以集成环境辅助方式为CMyDate类添加数据成员m_year,观察“类视图”的变化。

(5) 以手工方式为CMyDate类添加数据成员m_month,观察“类视图”的变化。

(6) 添加数据成员m_day和m_week,方式自选。

(7) 以集成环境辅助方式添加公共的Set函数成员及Display函数成员,观察“类视图”以

及.h文件和.cpp文件的变化。

(8) 编写构造函数、Set、Display的代码,然后运行程序

(9) 以手工方式添加私有SetWeek函数成员(为什么设定为私有?),并用实验1的方法解决

当前日期是星期几的问题,编写代码

(10) 修改Display,添加关于星期几的显示

(11) 在Set和构造函数中添加对SetWeek函数的调用命令

(12) 在运行程序,查看结果

实验3答案3A:类声明及函数成员的代码如下:

3B:多文件编程

View:

CMyDate.h:

CMyDate.cpp:

Main:

实验4 静态成员与对象参数

4A:关于平面上的点

定义一个类CMyPoint,其中含有2个私有数据成员m_x和m_y分别记载平面直角坐标系中一个点的x坐标和y坐标,另有3个静态数据成员:m_count记载现有点数,m_sumX 记载各点x坐标之和,m_sumY记载各点y坐标之和。

(1) 设计构造函数、析构函数,构造函数允许是无参函数或者带双参数两种情况,无参构造函数的功能是把点的坐标值设为(0,0),带双参数的构造函数则相应地设置私有成员的值,但不允许参数绝对值超过100,只要有任何一个参数绝对值超过100则将私有成员值置为(0,0);

(2) 设计成员函数SetData,用于设定两个数据成员的值,并检测坐标的绝对值必须不超过100,对于试图超过100的情况都予以拒绝(即不更改数据成员的当前值);

(3) 设计成员函数Display,显示平面上一个点的坐标,希望的显示形式为(x,y),小数点后取3位;

(4) 设计静态函数成员ShowAvg,功能是显示当前各点坐标的平均值;

(5) 主函数如下(可复制粘贴):

void main( )

{

CMyPoint A(2,4),B;

cout<<"\nP1=";

A.Display( ); //显示A点

B.SetData(5,3);

cout<<"\nP2=";

B.Display( ); //显示B点

cout<

CMyPoint::ShowAvg( ); //显示当前各点的坐标均值

}

完成以上各项要求,使得程序可以正确运行。

4B:求两点间距离

在前述代码的基础上,添加函数成员Distance,以一个点为参数,求该点到本点的距离。然后在主函数原代码的后面添加如下代码,使得程序能够正确运行。

double d1=A.Distance(B);

double d2=B.Distance(A);

cout<<"\nA → B ="<

cout<<"\nB → A ="<

4C:判断“点的远近”

在4B前述代码的基础上,添加全局函数Near,入口参数是两个点,功能是判断“前一个点比后一个点距离原点更近”,出口参数是Yes(1)或者No(0)。然后在4B基础上主函数原代码的后面添加如下代码,使得程序能够正确运行。

char cc;

cc=Near(A,B)?'A':'B';

cout<

预期的运行结果如下:P1=(2,4)

P2=(5,3)

(3.5,3.5)

A →

B =3.16228

B → A =3.16228

A is nearer to O(0,0).

实验4 答案

仅给出4C的答案:

//类声明及静态数据成员初始化

//构造函数与析构函数(析构函数有事要做!!!)

//其它函数成员

//全局函数

实验5 拷贝构造函数与内存分配

目标:

1.为什么要编写拷贝构造函数?如果不编写拷贝构造函数会怎样?

2.验证程序的各个元素分别被安排在内存的什么地方。

5A:拷贝构造函数

(1)修改上一实验的SetData函数:将函数名改为Move,函数功能改为由键盘输入点的新位

置,对超过±100的值仅给出提示但拒绝修改。

(2)在Distance函数return前添加如下的一行,用于显示在调用该函数时系统中有几个对象:

printf("In Distance, P=(%f,%f) , there are %d points\n",p.m_x,p.m_y,CMyPoint::m_count);

(3)在CMyPoint类中添加函数成员GetCount,功能是获取当前系统中有几个点

(4)在Near函数return前添加如下的一行,用于显示在调用该函数时系统中有几个对象:

printf("In Near, there are %d points\n",CMyPoint::GetCount());

(5)以下面的代码作为主函数:

CMyPoint A(2,4); //定义全局对象A

void main( )

{

double d1,d2,d3;

CMyPoint B,*q;

q=new CMyPoint(B);

q->Move();

A.Display();

B.Display();

q->Display();

cout<

d1=q->Distance(A);

d2=q->Distance(B);

d3=A.Distance(B);

CMyPoint::ShowAvg();

printf("d1=%f , d2=%f , d3=%f\n",d1,d2,d3);

if(Near(A,B))

cout<<"A is near.";

else

cout<<"B is near.";

delete q;

}

(6)运行程序,仔细查看结果。

5B:验证内存分配

(1)在前一问的基础上,把主函数改为如下的代码:

CMyPoint A(2,4); //全局对象

void main( )

面向对象方法题库1-1-9

面向对象方法题库1- 1-9

问题: [单选]用例(usecase)用来描述系统对事件做出响应时所采取的行动。用例之间是具有相关性的。在一个“订单输入子系筑”中,创建新订单和更新订单都需要核查用户账号是否正确。用例“创建新订单”、“更新订单”与用例“核查客户账号”之间是()关系。 A.包含(includE. B.扩展(extenD. C.分类(classification) D.聚集(aggregation) 用例是在系统中执行的一系列动作,这些动作将生成特定参与者可见的价值结果。它确定了一个和系统参与者进行交互,并可由系统执行的动作序列。用例模型描述的是外部执行者(actor)所理解的系统功能。用例模型用于需求分析阶段,它的建立是系统开发者和用户反复讨论的结果,表明了开发者和用户对需求规格达成的共识。 两个用例之间的关系主要有两种情况:一种是用于重用的包含关系,用构造型include表示;另一种是用于分离出不同行为的扩展,用构造型extend表示。 ①包含关系:当可以从两个或两个以上的原始用例中提取公共行为,或者发现能够使用一个构件来实现某一个用例的部分功能是很重要的事时,应该使用包含关系来表示它们。 ②扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种事

情,可以断定将这个用例分为一个主用例和一个或多个辅用例描述可能更加清晰。

问题: [单选]对于违反里氏替换原则的两个类A和B,可以采用的候选解决方案是() A.尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程 B.创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B 行为不完全一致的问题 C.将B到A的继承关系改成组合关系 D.区分是Is-a还是Has-a。如果是Is-a,可以使用继承关系,如果是Has-a,应该改成组合或聚合关系 里氏替换原则是面向对象设计原则之一,由BarbaraLiskov提出,其基本思想是,一个软件实体如果使用的是一个基类对象,那么一定适用于其子类对象,而且觉察不出基类对象和子类对象的区别,即把基类都替换成它的子类,程序的行为没有变化。反过来则不一定成立,如果一个软件实体使用的是一个子类对象,那么它不一定适用于基类对象。 在运用里氏替换原则时,尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程。由于子类继承基类并实现其中的方法,程序运行时,子类对象可以替换基类对象,如果需要对类的行为进行修改,可以扩展基类,增加新的子类,而无须修改调用该基类对象的代码。

《面向对象程序设计》实验指导书

《面向对象程序设计》课程实验指导书

实验一 Java开发环境的安装与配置 一、实验目的: 1. 掌握JDK、Eclipse的安装步骤。 2. 理解环境变量PATH, CLASSPATH的作用,以及Eclipse的配置。 3. 熟悉Eclipse的编辑、编译与调试环境,编写简单的Application程序 编译执行并完成调试。 二、实验内容: 熟悉JDK的安装和配置,学习如何编写并运行简单的Application程序 (能输出一条简单的问候信息); 三、实验要求: 1. 能正确地安装JDK 2. 熟悉环境变量PATH, CLASSPATH设置方法,熟悉编辑环境 3. 调试程序、编译,运行后得到正确的结果 四、实验步骤: 1.从https://www.wendangku.net/doc/2a7666914.html,/technetwork/java/index.html上下载最新版本的JDK,并安装。 2.设置环境变量PATH, CLASSPATH, 使得Java程序能正确编译和执行。 3.在Eclipse环境下编写一个HelloWorld.java程序, (1)在主方法static public void main(String[ ] args)中调用System. out.println()方法,使程序输出一条问候信息; (2) 编译运行程序,观察运行情况和输出结果。(使用JDK环境,调用 javac.exe和java.exe编译和执行程序)

实验二 Java语言基础 一、实验目的: 熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。 二、实验内容: 1.编写Java Application程序,输出1900年到2000年之间的所有润年。 (闰年的判断条件:能被4整除且不能被100整除,或能被400整除); 2.金字塔:Pyramid.java 在屏幕上显示一个由星型符号“*”组成的金字塔图案,示例如下: * *** ***** ******* 要求:金字塔高度h,可以由用户设置。 三、实验要求: 1. 正确使用Java语言的选择语句,循环语句; 2. 调试程序、编译,运行后得到正确的结果 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提成 示,并给出解决办法。 四、实验步骤: 1.编写主类; 2.在static public void main(String[ ] args)方法中加入实现要求功能 的代码,主要步骤如下: (第一题)从1900到2000循环,按照闰年的判断条件是则输出1900年到2000年之间的所有润年。 (第二题)允许用户设置金字塔高度。 4. 编译运行程序,观察输出结果是否正确。

面向对象程序设计实验报告完整版

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 综合实验报告 面向对象程序设计 专业名称: 物联网工程 ___班级: _____ 级2班__ ___________姓名: 你哥哥 学号: 02051928 信息科学与工程学院 二零一三年七月

第一题: (1) 1.1题目概述 (1) 1.2设计思路 (2) 1.3设计说明与调试分析 (2) 1.4编码实现 (2) 1.5程序运行结果 (5) 1.6设计心得 (5) 第二题: (6) 2.1题目概述 (6) 2.2设计思路 (7) 2.3设计说明与调试分析 (7) 2.4编码实现 (7) 2.5程序运行结果 (11) 2.6设计心得 (11)

第一题: 1.1题目概述 用抽象类设计计算二维平面图形图形面积的程序, 在基类TDshape中设计纯虚函数area()和printName(), area()用于计算几何图形的面积, printName()用于打印输出几何图形的类名, 如Triangle类的对象就打印输出”Triangle”。每个具体形状的类则从抽象类TDshape派生, 各自需要定义其它独有的数据成员和成员函数, 而且定义area()和printName()的具体实现代码, 如图所示。 要求编写以TDshape为接口的函数, 借以访问具体类如

Triangle和Rectangle类的成员函数area(), printName ()。1.2设计思路 由简到繁, 逐步实现。 1.3设计说明与调试分析 编写基类TDshape->编写虚函数->编写继承类Triangle ->实例化TDshape和Triangle ->调用基类虚函数实现调用继承类相应函数->同样的方式处理继承类Rectangle. 1.4编码实现 #include using namespace std; class TDshape{ public: virtual void area()=0; virtual void printName()=0; }; class Triangle:public TDshape{ private: double width,height;

完成Java面向对象程序设计实验课的心得体会范文

Java面向对象程序设计实验课的心得体会经过这几周对Java面向对象程序设计的学习,让我更加了解到Java学习的重要性。 在实验课上,我们完成多个实验,在这个阶段的学习中,我从认识到熟悉,而后到能够自主运用。通过对Java的了解,我发现它确实有很多方便之处,它集抽象性、封装性、继承性和多态性于一体,实现了代码重用和代码扩充,提高了软件开发的效率。对于我们这个专业来说学好Java语言是很重要的,所以在实验的过程中我都尽力理解java编程思想、掌握基本技巧,尽量学到最多的知识。 学习程序设计的基本目的就是培养描述实际问题的程序化解决方案的关键技能,Java面向对象程序设计是一门实践性比较强的课程,在实际中,我们必须把理论和实践结合起来。在实验中,我们理解理论课上的知识,然后运用到实际的操作中,我们必须在现有的理论的基础上,进行实践。多次实验后,也让我看到了现在学习的一个很大弱点:只听不练,永远不会熟练运用;空记技巧,忽略思想,会在多变的习题中十分无奈。 Java思想:Java是一门面向对向语言,他定义一切都是对象面向对象,就是面对现实; 现实中的一切都是对象,他们有分类,就产生了“类”; 他们有不同,类和类之间的不同,使用类来区分; 同一个类中不同的对象的区别,使用成员区分。

所以,面向对象的内部逻辑是分类。 面向对象编程思想就象数学上的一些概念,如:空间、群、环、域等 原始的编程思想就象古典数学,人们只在一个集合上探讨问题,没有系统的方法(即运算)定义,于是仁者见仁、智者见智,这样在一定程度上造成了理论的一种混乱局面,不利于科学的发展。于是近代数学向公理化发展,这是什么意思呢?就是说,人们除了在限定论域(即上面的集合,面向对象也有此概念)外,还在此论域上加进了一套通用的、公认的运算(方法);集合加上集合上定义的运算就构成了数学上的空间、群等,在计算机领域里,就变成为“类”。这种集合上定义了操作的东西利用起来就方便多了,这使得人们讨论问题时都在给定集合的运算能力上下工夫,即有通用性可事半功倍。 面向对象的编程思想就要想近世代数的分析思想,首先要确定“论域”,即工程所涉及到的所有的“对象”,然后要分类处理,把隶属同一类别的对象集合在一起(做成一个集合),定义他们之间的运算性质及可以进行的操作,这样就构建了一个类,当然以后用到这个类的对象时都要通过已经定义了的操作来完成各项功能,这就是常要求的类的“类的成员变量要通过共有函数来操作”。 我想真正的面向对象编程思想不应该是编程思想,应该是面向对象的分析方法才对! 我的理解: 1、将分析过程为抽象的过程:简言之:分成多个小问题(组成部分),

面向对象试题(标准答案)

CoreJavaOOP考试题 考试时间:90分钟 考试总分:100分 一、选择题(不定项选择)(22*4=88) 1. 类A,B的定义如下: class A { private int a = 100; A() { System.out.print("A()"); System.out.println(a); } } class B extends A { private int a = 200; B() { System.out.print("B()"); System.out.println(a); } } 运行下面的代码: new B(); 输出的结果是:(A )。 A. A() 100 B() 200 B. A() 200 B() 200 C. B() 200 A() 100 D. B() 200 A() 200

2.下列说法正确的是(D ) A.所有类都必须定义构造方法(构造器) B.构造方法必须初始化类的所有数据成员 C.子类定义了构造器后,不再调用父类的构造器 D.构造方法可以访问类的非静态成员 3.在Java中,哪个关键字使类不能派生子类?, (A ) A : final B : public C : private D : native 4.class Base{ static void test(){ System.out.println(“Base.test()”); } } public class Child extends Base{ static void test(){ System.out.println(“Child.test()”); } public static void main(String[] args){ Base base = new Child(); Child child = new Child(); base.test(); child.test(); } } 程序运行的结果是( C ) A.Child.test() Child.test() B.Child.test() Base.test() C.Base.test() Child.test() D.Base.test() Base.test()

面向对象分析与设计实验报告

面向对象分析与设计实验报告 题目:宿舍管理系统 学号:200*********** 姓名:****** 班级:09软件*****04 完成时间:2011.11.09

目录 1 系统功能需求 (3) 1.1管理系统模块 (3) 1.2查询学生模块 (3) 1.3学生管理模块 (4) 1.4资料修改模块 (5) 1.5楼栋管理模块 (6) 1.6出入登陆模块 (6) 2 建立需求模型 (7) 2.1 划分子系统 (7) 2.2 识别参与者 (8) 2.3 识别用况 (8) 2.4 对需求进行捕获与描述 (9) 3 系统分析 (11) 3.1 寻找类 (11) 3.2 建立状态机图 (12) 3.3 建立类图 (12) 3.4 建立顺序图 (13) 4 系统设计........................................................................... 1错误!未定义书签。 4.1 问题域部分设计 (14) 4.2 人机界面部分设计 (14) 5 总结 (16) 参考文献 (17)

1.系统的功能需求 我校学生公寓现为手工管理,效率低、易出错、手续繁琐,而且耗费大量的人力,物力,财力。故设计一个学生公寓管理系统,管理学生住宿情况,员工情况,处理学生离校,管理人员来访情况等功能。通过此系统,后勤人员可以对学生公寓的各项情况实行电脑化管理,以提高工作效率,也使得公寓管理所需的各项信息能方便快速进行录入,查询,删除和更新。 面对学生公寓管理工作的特点以及该管理工作的具体问题, 本系统可以解决以下问题: (1)录入公寓各学生的基本情况。 (2)全面查询学生的基本情况。 (3)对学生离校进行处理。 (4)每学期对学生住宿进行注册。 (5)对来访人员进行出入管理。 (6)对学生的财务进行登记管理。 (7)对楼栋物资和楼栋的管理。 (8)对各项情况进行修改,删除,更新。 (9)友好的操作界面, 以及简单快速的操作. (10)多种查询方式。 本系统针对学生公寓管理日常的工作程式, 对学生公寓的各项情况例如:学生信息,学生个人财产信息,来访人员信息等进行有效管理,并能通过各方法进行快速方便的查询。使学生公寓管理工作运作简明、清晰,各状况一目了然,使学生公寓管理工作更加科学化、规范化。 1.1管理系统模块:实现用户退出功能。 1.2查询学生模块:该模块包括五个子模块 1.按学号查询——实现按学号查询学生信息 2.按姓名查询——实现按姓名查询学生信息 3.按学生班级查询——实现按学生班级查询学生信息 4.按家庭住址查询——实现按家庭住址查询学生信息 5.混合查询——实现按混合查询学生信息

面向对象程序设计实验

实验一C++基础1.1 实验目的 1.了解并熟悉开发环境,学会调试程序; 2.熟悉C++中简单的标准输入输出函数的使用方法; 3.理解const修饰符的作用并学会应用; 4.理解内联函数的优缺点并学会其使用场合; 5.理解并学会函数重载; 6.理解并熟练掌握使用new和delete来分配内存; 7.理解并熟练掌握引用的使用方法。 1.2 实验内容 1.2.1 程序阅读 1.理解下面的程序并运行,然后回答问题。 #include int max_def(int x, int y) { return (x>y?x:y); } int max_def(int x, int y, int z) { int temp = 0; return (temp=(x>y?x:y))>z?temp:z; } double max_def(double x, double y) { return (x>y?x:y); } int main()

{ int x1 = 0; int x2 = 0; double d1 = 0.0; double d2 = 0.0; x1 = max_def(5,6); x2 = max_def(2,3,4); d1 = max_def(2.1,5.6); d2 = max_def(12.3,3.4,7.8);-----------------------------------------------------①cout<<"x1="<

实验二面向对象编程实验报告材料

实验二面向对象编程 1.实验目的 (1)掌握类与对象基本知识; (2)Java中的继承机制及包(package)、接口(interface)等的设计方法; (3)掌握static、this、super等关键字的使用; (4)掌握Java中两种比较器的用法。 2.实验容 实验题1 定义一个类Book,包含两个属性:一个是private的String类型的属性title、一个是private 的float类型的属性listPrice,封装这两个属性的四个方法setTitle()和getTitle()、setListPrice( )和geListPrice()。 基本要求: (1)设计类Book及类BookManagement,在类BookManagement中输出Book类的对象的两个private 属性; (2)重写父类的toString()方法,实现Book类实例的两个属性的输出。 实验结果: 实验过程: 首先建立一个Books工程,再建立俩个类Book和Bookmanagement。在Book类中,有俩个属性:一个是private的String类型的属性title、一个是private的float类型的属性listPrice,使用getter和setter

生成四个方法setTitle()和getTitle()、setListPrice( )和geListPrice()。最后重写Tostring函数。 在Bookmanagement中有主函数,使用JOptionPane.showMessageDialog(null,book)函数使之用对话框形式输出 代码如下: package book; public class Book { private String title; private float listPrice; public Book(String title, float listPrice) { super(); this.title = title; this.listPrice = listPrice; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public float getListPrice() { return listPrice; } public void setListPrice(float listPrice) { this.listPrice = listPrice; } Override public String toString() { return"title:" + getTitle() + ",Price:" + getListPrice(); } } package book;

面向对象程序设计实验报告

. , 面向对象程序设计实验报告 班级:计算机科学与技术11-5 学号:0505 ( 姓名:高冉冉 日期:2012/7/2 \

题目3: 1.问题描述: 假设有图书类Book,包括书名、出版社名称、作者姓名、图书定价等数据成员。编程序完成Book类的设计,从键盘读入10本图书的各项数据,并将这10本图书的相关数据写入磁盘文件中,然后从中读出各图书数据,计算所有图书的总价值,并显示每本图书的详细信息,每本图书的信息显示在一行上。 2.实现代码: #include · #include #include #include<> using namespace std; class Book { private: char bookName[20]; etPrice(); - ioFile<>book[i]; cout<

实验7 面向对象分析与设计—活动图

实验7 面向对象分析与设计—活动图姓名:学号:日期: 7.1 实验目的 ?熟悉熟悉UML活动图的功能和组成元素 ?理解活动图的语义 ?学会构思活动图 ?掌握活动图的绘制方法 7.2 实验类型及学时 ?验证型 ?2学时 7.3 实验设备 ?PC机一套,要求安装Windows操作系统、Office软件 ?安装Visio分析建模工具 7.4 实验要求 ?要求能够熟练运用Visio软件所提供的菜单、工具、模型等制作图形或图 表;能用Visio软件所提供的专业图形模板,自行绘制出专业化、高质量的图形或图表 ?结合案例1,根据给定系统(案例2)的业务需求,构思网上书店的活动 图,且绘制活动图 ?攥写实验报告,请以“学号+姓名”命名实验报告文档,并在规定时间内 提交

7.5实验内容 1、案例1——图书管理系统之用户管理模块 2、案例2——网上书店系统 7.6 实验结果 1、案例2——网上书店系统 请将“网上书店系统的活动图”放置于实验报告7。 (1)客户购书的活动图

(2)订单处理的活动图 7.7 心得体会 (请大家根据自己的实际情况,如实填写)

不过如此,我觉得简单的小菜一碟,就和那个什么一样,和上次实验报告三一样,这几个案列通过之前的几次操作都是剖析的较为详细了,所以实际上画活动图和前面的几张图片没有太大差别。就是把已经剖析好的每个部分用着活动图的规则来进行摆放,尽管可能因为时间不够,然后导致有些地方出错,或者会看不出来,所以我百度了一下下,发现没有别人做的,所以就先这样上交了。非要说问题的话就是感觉有很多地方有缺漏,而且说明分析可能不够,而且图画的不是很漂亮,但是时间不够我就不改了。

面向对象实验题及答案(全)

实验1 cin、cout及面向过程的编程实验2 引用与函数重载 实验3 类与对象 实验4 静态成员与对象参数 实验5 拷贝构造函数与内存分配 实验6 对象数组与子对象 实验7 含有数组成员的对象与深拷贝实验8 运算符重载(1) 实验9 运算符重载(2) 实验10 继承与派生 实验11 虚函数与类族 实验12 STL

实验1 cin 、cout 及面向过程的编程 1A :显示某个日期是星期几 (1) 输入、输出要求: 输入:3个正整数,依次为年、月、日,比如2049 10 1 输出:按类似“[2049-10-5] is Friday.”的形式输出 示例: (2) 处理方法 历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式,其中最著名的是蔡勒(Zeller)公式。即 7)%110)1(26244(-+? ?? ???++-??????+??????+=d m c c y y w 公式中的符号含义: w ——星期几 c ——年份的前两位 y ——年份的后两位 m ——月,3≤m ≤14,某年的1、2月视为上一年的13、14月,比如2003年1月1日要看作2002年的13月1日 d ——日 ??——代表取整,即只要整数部分 %——除法求余数 例如:对于2049年10月1日,计算过程如下: 5 7%547)%284051249(7)%1110)110(2620242044949(==+-++=-+??? ???++?-??????+??????+=w 即2049年10月1日是星期5。如果计算结果是负数,则加7。 1B :格式化输出实数 从键盘读取本金和年利率,求20年中每年末本息合计有多少钱。 输入:用空格分隔的两个数,都可以带小数点 输出:以“钱数(?年后)”的方式显示,以“2格、右对齐”的方式显示年,以“共10格、小数点后取2位、右对齐”的方式显示本息合计的钱数,见示例 示例:本金973.45元、年利率2%的显示结果如下

面向对象编程练习题库test

面向对象编程练习题库 t e s t Document serial number【KKGB-LBS98YT-BS8CB-BSUT-BST108】

面向对象编程练习题 专题1 初识Java 一、填空题 1.自从Sun推出Java以来,按应用范围可分为三个版本,分别是()、()、()。 2.环境变量的设置,若JDK安装在“D:\JDK”,则应设置Path为()、classpath 为()。 3.Java源文件的扩展名为(),用Javac编译Java源文件,得到的字节码文件的扩展 名为()。 4.如果Java源文件中有多个类,那么只能有一个类是()类。 二、选择题 1.作为Java应用程序入口的main方法,其声明格式是() A.public static int main(String args[]) B.public static void main(String args[]) C.public void main(String args[]) D.public int main(String args[]) 2.下面命令正确的是() A.java B.java AppFirst C.java D.javac AppFirst 3.设有一个Java小程序,源程序名为,其HTML文件为,则运行该小程序的命令为 () A.java FirstApplet B.javac C.appletviewer D.appletviewer 4.JDK安装完成后,主要的命令如javac、java等,都存放在根目录的()文件夹下。A.bin B.jre C.include D.doc 5.Java语言是一种语言。 A.机器B.汇编C.面向过程的D.面向对 象的 6、Java程序的最基本组成单位是( )。

《面向对象分析与设计》实验报告

《面向对象分析与设计》 实验报告 班级:计科09-4班 姓名:郑翼 学号:08093435

实验一用例图 一、实验目的 1.学会分析系统中的参与者和用例 2.掌握用例图的绘制方法 二、实验器材 1. 计算机一台; 2. Rational Rose 工具软件; 三、实验内容 画出A TM系统的用例图 四、实验截图

五、实验体会 通过这次实验,理解了用例图的基本用法,并且初步掌握了Rational Rose软件的使用。对以后面向对象的学习都是十分重要的。

实验二交互图 一、实验目的 1.学会用协作图实现用例 2.掌握顺序图的绘制方法以及顺序图和协作图的相互转换。 二、实验器材 1. 计算机一台; 2. Rational Rose 工具软件; 三、实验内容 画出A TM取款的顺序图,并转换为协作图。 四、实验截图 顺序图

协作图 五、实验体会 通过实验,学会了用协作图实现用例,掌握了顺序图的绘制方法以及顺序图和协作图相互转换的方法,进一步的加深了对软件的使用。

实验三类图 一、实验目的 1.理解类的基本概念 2.理解类间的关系 3.掌握类图的绘制方法 二、实验器材 1. 计算机一台; 2. Rational Rose 工具软件; 三、实验内容 分析选课系统中的类及关系,然后画出它们的类图。 四、实验步骤 1.分析 在选课系统中,通过分析可抽象出如下几个类: 1.学生类 2.管理员类 3.课程类 学生类和管理员类的属性较容易分析,这里只列出课程类的属性和方法:(1)课程名称 (2)开课教室 (3)课程号 (4)授课教师 (5)选课的学生 (6)开课起始时间 (7)允许选课的学生人数 (8)设置课程号 (9)设置课程名称 (10)查询课程号

面向对象程序设计实验(完整版)

实验项目名称:jdk环境配置及第一个java程序 实验目的:通过上机了解如何在windows系统中配置java环境,并在此基础上通过调试运行书中的java application以及java applet掌握java语言程序的编写以及运行步骤。 实验内容: 实验结果: 实验二 实验项目名称:数组及字符串 实验目的:熟悉数组以及字符串的初始化,函数调用等基本操作 实验内容:1.使用3种方式对一个二维数组进行赋值 2.使用3种方式实现两个字符串的连接操作。 实验过程: 实验三 实验项目名称:面向对象程序设计基础实验一 实验目的:熟悉java语言的面向对象基本概念 实验内容:创建类Rectangle,具有属性length和width,缺省值均为1。该类具有计算perimeter(周长)和area(面积)的方法,并有length和width的设置和读取方法。设置方法应检验length和width是否大于0.0并且小于20.0。 实验过程 实验结果 实验四 实验名称:面向对象程序设计二 实验目的:了解java语言中的继承机制 编写一个Java应用程序,设计一个运输工具类Trartspoft,包含的成员属性有:速度、载重量;汽车类V ehicle是Transpoft的子类,其中包含的属性有:车轮个数和车重;飞机Airplane 类是Transport的子类其中包含的属性有:机型和发动机数量,每个类都有相关数据的输出方法。 实验过程 实验结果 实验五 利用接口继承完成对Biology(生物),Animal(动物),Man(人)三个接口的定义 其中Biology接口定义一个breath()抽象方法,Animal接口定义sex() 和eat()两个抽象方法,Man接口定义think()和study()两个抽象方法; 定义一个NormalMan类实现上述三个接口定义的抽象方法。

面向对象考试题

第五章考试题 一、选择题:(每题3分,共20题) 1.下面关于类的说法错误的一项是()。 A、类属于Java语言中的复合数据类型 B、对象是Java语言 中的基本结构单位 C、类是同种对象的集合和抽象 D、类就是对象 2.如下所示代码: public class Test05_01{ private float a; public static void m ( ){ } } 如何使成员变量a被方法m( )访问()。 A、将private float a改为public float a B、将private float a改为static float a C、将private float a改为protected float a D、将private float a改为float a 3.下面关于类的说法有误的一项是()。 A、类就是对象 B、类是同种对象的集合和 抽象 C、类属于Java语言中的复合数据类型 D、对象是Java语言 中的基本结构单位

4.下列哪种类成员修饰符修饰的变量只能在本类中被访问()。 A、protected B、default C、private D、public 5.下面关于方法的说法不正确的一项是()。 A、类的私有方法不能被其他类直接访问。 B、Java中的构造方法名必须和类名相同。 C、方法体是对方法的实现,包括变量声明和合法语句。 D、如果一个类定义了构造方法,也可以用该类的默认构造方法。 6.下列程序的运行结果是()。 public class Test05_02 extends x{ int ab(){ static int a = 10; a++; System.out.println(a); } public static void main(String[] args) { Test05_02 b = new Test05_02 (); b.ab(); } } A、10 B、编译错误 C、11 D、运行成功,但不输出

面向对象程序设计,实验报告

安徽工业大学 面向对象程序设计实验报告 实验课程:《C++语言程序设计》 学生姓名: 学号: 专业班级: 2011年 12 月 18 日

目录 实验1熟悉C++开发环境及简单程序设计和应用 (3) 实验2基本控制结构程序设计 (6) 实验3 类与对象 (10) 实验4友元函数与友元类 (13) 实验5数组与指针 (16) 实验6静态成员 (20) 实验7类的继承 (22) 实验8多态 (24)

安徽工业大学实验报告 学生姓名:张虹学号:6100409033 专业班级:网络工程091 实验类型:□验证□综合□设计□创新实验日期:实验成绩: 实验1熟悉C++开发环境及简单程序设计和应用 一、实验目的 1.初步了解C++程序的编译、连接和运行的过程。 2.掌握和理解C++程序的结构。 二、实验内容 1.使用VC 2.运行一个简单的C++程序 3.编程求出对任意输入的两个整数,求出该两个整数的最大公约数和最小公倍数 三、实验步骤 1.启动VC 或

2.建立工程并输入以下程序 #include using namespace std; void main() { int i(1), sum(0); do { sum+=i; i++; }while(i<=10); cout<<"sum="<

3.保存文件、运行程序、退出VC程序、打开已经存在的文件 4.编程求出对任意输入的两个整数,求出该两个整数的最大公约数和最小公倍数编写以下代码: #include using namespace std; void main() { int a,b,c,d,i; cout<<"a="; cin>>a; cout<<"b="; cin>>b; for(i=1;i<=a && i<=b;i++) if(a%i==0 && b%i==0) c=i; for(i=a*b;i>=a && i>=b;i--) if(i%a==0 && i%b==0) d=i; cout<<"a和b的最大公约数为"<

相关文档
相关文档 最新文档