您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页面向对象程序设计实验项目

面向对象程序设计实验项目

来源:意榕旅游网
 实验一 C++面向过程练习〔一〕 〔2学时〕

 实验目的和要求:

1. 2. 3. 4. 5. 6.

掌握C++程序的根本格式与标准,学会编写简单的C++程序。 理解C++程序的构造和特点。

熟悉C++程序根本的输入和输出操作。

掌握C++数据类型、常量和变量以及修饰符的使用方法。 掌握C++的各种流程控制语句的使用。

熟悉C++语言实验环境,可以在VC6.0或BC3.0的环境下调试与运行程序。

 实验内容:

1. 求解方程axbxc0在复数域上的解,a,b,c由终端输入。注意分析的全面性。 2. 用e121111,求e之值,直到106为止。 1!2!n!n!

实验二 C++面向过程练习〔二〕〔2学时〕

 实验目的和要求:

1. 掌握一维数组、二维数组的定义与使用。

2. 掌握函数定义、函数调用和函数说明的方法。 3. 掌握函数递归调用的概念和使用方法。

 实验内容:

1. 编程求假设干个整数中的最大和次大,最小和次小这四个数。 2. 由键盘输入两个整数,试编写两个函数分别求出这两个数的最大公约数和最小公倍

数。

3. 编写一个递归函数void reverse(int a[],int n),将数组a中的数倒置。如a数组原来

为:1 2 3 4 5,那么调用reverse函数后,a数组内容变为:5 4 3 2 1。

实验三 C++在非面向对象方面的扩大〔2学时〕

 实验目的和要求:

1. 2. 3. 4. 5. 6. 7.

掌握函数重载的方法及定义重载函数时的考前须知。 掌握函数缺省参数的使用。

掌握指针的定义及使用方法,理解void型指针。

理解动态内存分配意义,掌握new和 delete使用方法。 掌握引用的声明方法及使用。

掌握const修饰符及其内联函数的使用。

熟悉C++在非面向对象方面的其他扩大特性。

 实验内容:

1. 编写10个重载函数max,分别求两个整数、实数、双精度数、字符、字符串及三

个整数、单精度数、双精度数、字符、字符串中的最大数。 2. 编写函数void add1〔int sum〕,void add2〔int * sum〕,void add3〔int & sum〕,功

能如下:输入假设干个整数,以0完毕,并用参数sum返回这假设干个整数之和。在主程序中分别调用这三个函数,观察结果,总结值传递和地址传递的规律。 3. 矩阵中填数:当给出 N*N 的矩阵,要求用程序填入以下形式的数:

〔1〕S形填数,例如N=5 〔2〕回转填数,例如N=5 1 1 2 3 4 5 2 3 4 5 16 17 18 19 6 10 9 8 7 6

15 24 25 20 7 11 12 13 14 15

20 19 18 17 16 14 23 22 21 8 13 12 11 10 9 21 22 23 24 25 要求:用new和delete动态分配空间〔提示:可用一维数组来表示二维数组〕。

实验四 类与对象〔一〕〔4学时〕

 实验目的和要求:

1.

2. 3. 4. 5. 6. 7.

掌握类、类的数据成员、类的成员函数的定义方式。 理解类成员的访问控制方式。

掌握对象的定义和操作对象的方法。

理解和掌握构造函数、析构函数、拷贝构造函数的定义与执行过程。 掌握重载构造函数的方法。 理解浅拷贝与深拷贝。 理解对象的生存期。

 实验内容:

1. 设计三个图形类:Circle〔圆〕、Rectangle〔矩形〕、Triangle〔三角形〕,要求:

(1) Circle 类根本信息:圆心坐标、半径;

Rectangle 类根本信息:长、宽;

Triangle 类根本信息:三个顶点坐标;

其中:成员变量为 private 属性,成员函数为public 属性。 (2) 为Circle类设计缺省的构造函数,并用init成员函数进展数据成员的初始化。 (3) 为其余两个类设计多个构造函数:无参、带参、参数值缺省的构造函数。 (4) 每个图形类有计算图形的面积GetArea(),计算图形的周长GetPerimeter(),

显示图形的根本信息函数Show(),修改根本信息的函数Set(形参)。以Circle 类为例:通过GetArea()计算圆的面积,GetPerimeter()计算圆的周长,Show()函数中显示圆心坐标、直径、周长、面积等根本信息;Set(int x,int y, int r)函数可以修改圆心坐标和半径。

(5) 注意多个构造函数的声明方式与定义的实现。

(6) 当输入数据为不合理数据时(例如:输入的三角形的顶点是否能组成一个三

角形),提示用户输入错误。

2. 一维数组是应用极为广泛的数据构造,但是C++语言的数组没有下标越界检查,因

此极易出错。请定义一个平安的一维整型数组类intArray,要求:

(1) 根本信息:存储数据的基址指针,数组的大小,均定义为private属性。 (2) 定义构造函数、析构函数、拷贝构造函数。 (3) 定义以下成员函数:

int GetSize();返回数组的大小,即数组的元素个数。

int GetAt(int nIndex) ;获得nIndex索引位置上的数组元素值。

void SetAt(int nIndex , int newElement);向nIndex位置设定新的newElement值。 (4) 使用intArray类实现一个冒泡排序程序。

实验五 类与对象〔二〕〔4学时〕

 实验目的和要求:

1.

2. 3. 4. 5. 6. 7.

掌握对象数组的定义与使用方法。

理解对象指针的概念,学会用指针引用对象。 理解this指针的工作方式。

掌握静态数据成员和静态成员函数的根本使用方法。 理解友元与友元函数的作用,掌握其使用方法。 掌握对象成员及其常类型的使用方法。 学会使用C++的多文件方式编写程序。

 实验内容:

1. 设计一个Student〔学生〕类,并使Student类具有以下特点:

(1) 该类具有学生姓名、学号、程序设计、信号处理、数据构造三门课程的成绩。 (2) 学生全部信息由键盘输入,以进步程序的适应性。

(3) 通过成员函数分别统计每个学生的平均成绩和每门课程的平均成绩,当课程

数量增加或减少时成员函数无需修改仍可求取平均成绩。 (4) 输出学生的各科成绩与平均成绩。 (5) 学生对象的定义采用对象数组实现。 (6) 统计不及格学生人数。 (7) 表格输出整齐美观。

(8) 能以最方便的方式实现对课程数量和学生人数的修改。 (9) 采用多文件方式组织程序。

实验六 继承与派生类 〔4学时〕

 实验目的和要求:

1. 2. 3. 4. 5.

理解类的继承的概念,可以定义和使用类的继承关系。 掌握派生类的声明与定义方法。 熟悉三种派生方式的访问特性。 掌握多基继承,理解和掌握虚基类。 理解赋值兼容规那么。

 实验内容:

1. 定义点Point类作为基类,在此根底上派生出直线Line类和圆Circle类,在Circle

类的根底上以不同的属性派生出圆柱Cylinder类和球Spheroid类。并要求基类和各派生类具有以下特点:

(1) Line类含有计算直线长度和斜率的成员函数。 (2) Circle类含有计算圆面积的成员函数。

(3) Cylinder类含有计算圆柱外表积和体积的成员函数。 (4) Spheroid类含有计算球体的外表积和体积的成员函数。 (5) 要求在实验报告中画出类层次图。

2. 小型公司人员管理。某小型公司有四类人员:总经理、技术人员、销售经理、推销

员。设计一个基类person,并派生出employee〔职员〕,再由employee派生出manager〔总经理〕、technician〔技术人员〕、salesmanager〔销售经理〕、saleman〔推销员〕。销售经理既是经理又是销售人员,兼具两类人员的特点,因此同时继承manager 和salesman 两个类。 (1) 类定义

 person类:

根本信息:姓名、性别、出生日期〔使用自定义的 Date〔日期〕类〕 其中:根本信息为 private 属性,成员函数为public 属性

 Date 类:

成员变量:年、月、日

 派生类employee :新增属性:编号、职位、薪水等  派生类technician:新增属性:工作时间

 派生类 saleman: 新增属性:销售额、所属部门 (2) 实现人员信息的录入与显示。 (3) 计算并显示个人月薪:

月薪计算方法:总经理拿固定月薪8000 元,技术人员按每小时25 元领取月薪;推销员的月薪按当月销售额的4%提成;销售经理固定月薪5000 元加所管辖部门当月销售总额的5‰ 。

实验七 多态性与虚函数 〔4学时〕

 实验目的和要求:

1. 理解编译时的多态性和运行时的多态性。 2. 掌握虚函数的定义与使用方法。

3. 掌握纯虚函数和抽象类的概念和使用方法,运用纯虚函数实现多态性。

 实验内容:

1. 在实验六题目1的根底上,增加以下内容:在Line类的根底上派生长方形Rectangle

类和正方形Squre类,并分别在长方形Rectangle类和正方形Squre类的根底上派生长方体Cuboid类和正方体SquareBody类,并要求基类和各派生类具有计算各图形的周长、面积和体积的功能,要求用纯虚函数实现。

注:可先定义一个抽象类---图形Figure类,含有求周长、面积、体积的纯虚函数,用此类进展派生。假设某个图形由上述几个图形组成,求该图形的总面积〔假设

为平面图形〕或总体积〔假设为立体图形〕。 2. 员工管理:

(1) 将实验六中题目2中不同员工的工资计算函数pay(),改用虚函数实现。 (2) 将每个类中的信息显示函数:display()改用虚函数实现。 (3) 对每个类增加一个升职函数:promote()。

(4) employee〔〕类中的pay()和display()设计为纯虚函数;在主函数中便可以根

据赋值兼容规那么用基类类型的指针数组来处理不同派生类的对象。

(5) 由于不同类的对象调用晋级函数promote()需要赋于不同的实参值,难以对

各类对象统一处理,因此,employee()中promote()定义为虚函数,各派生类再定义同名函数。

实验八 运算符重载 〔6学时〕

 实验目的和要求:

1. 理解运算符重载的概念和使用方法。 2. 掌握运算符重载的两种形式。 3. 掌握几种常用运算符的重载。

 实验内容:

1. 请为complex类〔复数类〕定义以下重载运算符函数 (1) 算术运算符+、-、*、/; (2) 求复数的共轭运算符! (3) 插入运算符<<; (4) 提取运算符〉〉

2. 请为fraction类〔分数类〕定义以下重载运算符函数 (1) 算术运算符+、-、*、/; (2) 关系运算符<,>,<=,>=,==,!= (3) 插入运算符<<; (4) 提取运算符〉〉

3. 对实验四中的题目2实现的intArray类定义下标运算符“[]〞重载函数,并用下标

运算符的方法实现冒泡排序。

实验九 模板 〔2学时〕

 实验目的和要求:

1. 掌握函数模板及其声明方法。 2. 掌握模板函数及其生成方法。 3. 学习类模板的声明与使用方法。

 实验内容:

1. 定义函数模板实现求一维数组中所有数据的和。其数据类型可以为整数、单精度数、

双精度数、字符型数,并规定字符型数据的和为这两个字符连接起来的字符串,如:‘a’+‘b’=“ab〞。

2. 对实验五中的题目2 定义的intArray类用类模板进展改写〔改为Array类〕,使之

可以分别对假设干整数、单精度数、双精度数、字符型数进展排序。

实验十 I/O流 〔2学时〕

 实验目的和要求:

1. 2. 3. 4.

熟悉流及流类库的作用。

掌握流类库中常用的类及其成员函数的使用方法。 掌握控制输出宽度的函数width和setw。

掌握函数setiosflags和resetiosflags设置和恢复对齐方式、精度、大小写、进制等。

 实验内容:

1. 试分别用流的格式化状态字与I/O操作算子,各写一个三角形形状的九九乘法表。 2. 定义一个带有分别表示基数和整数值参数的格式化操作算子based,用以输出以此

基数表示的整数。

实验十一 文件的使用 〔2学时〕

 实验目的和要求:

1. 掌握文本文件的输入输出方法。 2. 掌握文本文件的输入输出方法。

 实验内容:

1. 学生文件中的每一行包含了以下信息:学号,姓名及5门功课的成绩,请从该文件

中接收数据,统计每个学生的总分和平均成绩,并按总分从高到低排序,将结果输出到另一文件中。

实验十二 综合练习〔选做〕

 实验目的和要求:

掌握面向对象程序设计中一种常用的软件开发方法,即将软件开发过程划分为明显的几个阶段:问题分析和功能定义、对象设计和实现、核心控制设计、编码与测试、进化〔有必要的话〕等。

 实验内容:

附录:实验报告的书写标准

1. 封面:请大家将实验报告的封面每一栏目写清楚、全面、准确。

2. 目录:要将所写的实验工程按次序写在第一页的目录上。注意工程名称

的前后一致性。 3. 实验报告的格式:

工程名称

➢ 实验目的和要求 ➢ 实验内容

➢ 实验步骤:

1. 问题分析和算法描绘。

2. 对于较大的题目,要表达采用的数据构造方式。如类的层次构造及其

各成员的含义与功能及其实现。

3. 可以给出分析的流程图、数据流图、类的层次构造图、程序的构造图。 4. 可以附上源程序。

➢ 实验结果及其分析:

实验结果:

1.1. 给出实验的结果及其形式〔如程序运行后的界面等〕

1.2. 至少给出两组测试用例,要具有针对性,最好要有一个刁难性的用例。

2. 实验分析:

2.1. 对程序用例的测试结果分析,如用例结果的正确性,程序的功能、可靠性、强健性、缺陷等。

2.2. 对整个程序的调试或运行过程中所遇到的问题进展分析,并说明你的解决方法。

2.3. 对本次实验的体会做个总结,如有没有到达预期的目的和要求,掌握了哪些知识,学到了哪些方法,还有哪些内容不够明晰,今后将怎么做等等。尤其要对实验过程中学到的分析问题、遇到的问题、解决问题的方法、策略做个总结。 1.

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务