ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:515.90KB ,
资源ID:9428220      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9428220.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(面向对象实验1讲解.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

面向对象实验1讲解.docx

1、面向对象实验1讲解面向对象程序设计实验指导书黄建灯 朱震桂林电子科技大学信息科技学院二一一年八月目录实验一 熟悉Visual C+开发环境学会最简单的开发 2实验二 类和对象(一) 5实验三 类和对象(二) 7实验四 String类的定义和使用 10实验五 String类的定义和使用(续) 12实验六 继承与派生 14实验七 多态性与虚函数 15第八章 输入输出流 16参考文献 17附录A C+保留字 18附录B 运算符优先级 19附录C ASCII字符集 20附录D 运算符重载 21附录E ANSI/ISO标准C+和标准C+中头文件命名规则 22附录F C+头文件 23附录G 系统中数据类型

2、长度 28实验一 熟悉Visual C+开发环境学会最简单的开发1. 实验目的熟悉Visual C+的开发环境;了解如何编辑、编译、链接和运行一个C+程序;2. 实验内容2.1 熟悉Visual C+开发环境,学会创建一个新的工程;1) 进入系统,启动Visual C+环境;2) 创建一个新的工程在Visual C+ 环境中,菜单File-New.,弹出一个对话框,提示新建(new);弹出的对话框TAB缺省在Projects页面上,选择该页面的“Win32 Console Application”,在右边的Project name输入框中输入工程名字,点击“OK”弹出新建工程向导;3) 新建向

3、导的第一步,要求选择: 空白工程; 简单应用程序; HELLO WORLD应用程序; 支持MFC的应用程序;这里我们首先选择第二项:简单应用程序,点击“finish”。4) 工程建立完成,在开发环境左侧的TAB页面中,查看ClassView和FileView内都能看到什么?在类视图中可以看到,“简单应用程序”只有一个全局函数main,这也是应用程序的入口,和C语言中的main函数含义相同。在文件视图中可以看到,开发环境为“简单应用程序”提供了标准全局文件“StdAfx.h”和“StdAfx.cpp”,同时提供了应用程序的源文件ProjectName.cpp。分别点击这三个文件,可以看到源代码只

4、是给出了程序的框架。5) 在Visual C+ 环境中,关闭刚才新建的文件和工程,则没有了当前激活窗口,视图呈现灰色;6) 选中菜单File-Recent Files,可以看到刚才新建的源文件,选中,则该源文件被打开。这里可以保存最近使用过的4个(该参数可修改)文件,以便下次快捷打开。7) 选中菜单File-Recent Workspaces,可以看到刚才新建的工程,选中,则该工程被打开。这里可以保存最近使用过的4个(该参数可修改)工程,以便下次快捷打开。2.2 打开一个工作区如果打开刚刚关闭的workspace,可以利用菜单中的recent workspace;如果要打开的workspace

5、在recent中已经看不到了,就需要在“打开文件对话框”中,找到工作区的存放位置。1. 点击菜单File-Open.,弹出打开文件对话框;2. 找到工作区在磁盘上的存放位置;一般都有一个和工作区名字相同的文件夹,存放工作区文件、该工程的头文件、源文件和资源文件等等。3. 工作区文件是一个以.dsw为后缀的文件,因此在文件类型过滤中要注意包含;4. 看到打开文件对话框中有projectname.dsw,点击即可。2.3 编译运行“简单应用程序”,看看这个程序框架提供了什么?1) 编译有三种方法:单击工具栏当中的Build图标;单击菜单Build-Build;使用快捷键F7;2) 运行有三种方法:

6、单击工具栏当中的Run图标;单击菜单Build-Run;使用快捷键F5;“简单应用程序”没有提供任何实质性的功能,“press any key to coontinue”就可以退出程序了。2.4 尝试编辑一个小的示范程序,并编译运行;按照上面的方法新建一个源文件,输入下面代码:include int main() cout”Hello Worldn”;cout”Welcome to C+ Programmingn”;coutStep Over(或者快捷键F10),每触发一次,程序运行一步;上面的小程序,每运行一步,打印一行,可以观察到单步跟踪的效果;4) 调试工具可以完成以下任务,大家可以在调

7、试时尝试:设置断点单步跟踪监视变量、寄存器和内存查看汇编代码和调用堆栈修改代码和变量值2.6 写一个短小的windows程序,体会消息触发机制;1) 创建一个新的 “Win32 Console Application”,在选项中选择hello world应用程序;2) 点击“finish”完成创建工程,可以看到系统提供了程序框架,包括头文件、源文件和资源文件;3) 类视图中可以看到WinMain全局函数和WndProc全局函数;4) 编译运行,看看系统提供的hello world应用究竟是什么?5) 点击左边的“WndProc”函数,右边的视图就跳到了这个函数相应的位置,在该函数的switch

8、分支中增加:case WM_LBUTTONDOWN:MessageBox(NULL, “pressed the left button of mouse!”, “Message”, NULL);break;编译运行,在窗口范围内,点击鼠标左键,看看有什么?3. 思考题课后自己查资料,结合我们这次实验的实例,了解什么是消息触发机制。实验二 类和对象(一)1. 实验目的(1) 掌握声明类的方法,类和类的成员的概念以及定义对象的方法。(2) 初步掌握用类和对象编制基于对象的程序。(3) 学习检查和调试基于对象的程序。2. 实验内容(1) 有以下程序:#include using namespace

9、std;class Timepublic:int hour;int minute;int sec; int main() Time t1; cint1.hour; cint1.minute; cint1.sec; coutt1.hour:t1.minute:t1.secendl; return 0;改写程序,要求:A) 将数据成员改为私有的;B) 将输入和输出功能改为成员函数实现;C) 在类体内定义成员函数。然后编译和运行程序。请分析什么成员应指定为公有、什么指定我私有的?什么函数最好放在类中定义?什么函数最好放在类外定义?(2) 分别给出如下的3个文件:A) 含类定义的头文件student.

10、h。 /student.hclass Studentpublic:void display();private: int num; char name20; char sex;B) 包含成员函数定义的源文件student.cpp /student.cpp#include#includestudent.hvoid student:display()coutnum:numendl;coutname:nameendl;coutsex:sexendl;C) 包含主函数的源文件main.cpp/main.cpp#include#include”student.h”int main( )Student s

11、tud;stud.display( );return 0;(1) 请完善该程序,在类中增加一对数据成员赋值的成员函数set_value。上机调试并运行。(3) 需要求3个长方柱的体积,请编一个基于对象的程序,数据成员包括length(长)、width(宽)、height(高)。要求用成员函数实现以下功能:A) 由键盘分别输入3个长方柱的长、宽、高;B) 计算长方柱的体积;C) 输出长方柱的体积。3. 预习内容C+面向对象程序设计第2章。实验三 类和对象(二)1. 实验目的(1) 进一步加深对类和对象的理解。(2) 掌握类的构造函数和析构函数的概念和使用方法。(3) 掌握是对对象数组、对象的指针

12、、及其使用方法。(4) 掌握友元的概念的使用。(5) 了解类模板的使用方法。2. 实验内容(1) 有以下程序:#includeclass Studentpublic:Student(int n,float s):num(n),score(s)void change(int n ,float s)num=n;score=s;void display()coutnum scoreendl;private: int num; float score;void main()Student stud(101,78.5);stud.display()stud.change(101,80.5);stud.d

13、isplay();A) 阅读此程序,分析其执行过程,然后上机运行,对比输出结果。B) 修改上面的程序,增加一个fun函数,改写main函数。在main函数中调用fun函数,在fun函数中调用change和display 函数。在fun函数中使用对象的引用(Student&)作为参数。(2) 商店销售某一商品,商店每天公布统一的折扣(discount)。同时允许销售人员在销售是灵活掌握售价(price),在此基础上,对一次购买10件以上者,还可以享受9.8折优惠。现已知当天3个销售员销售情况为 销售员号(num) 销售件数(quantity) 销售单价(price) 101 5 23.5 102

14、 12 24.56 103 100 21.5 请编程序,计算出当日此商品的总销售款sum以及每件商品的平均售价。要求用静态数据成员和静态成员函数。提示:将折扣discount,总销售款宿命和商品销售总件数n声明为静态数据成员,在定义静态成员函数average(求平均售价)和display(输出结果)。(3) 有以下程序: #includeusing namespace std;class Date;class Time public:Time(int, int, int);void display(Date &);private: int hour; int minute; int sec;c

15、lass Datepublic:Date(int, int, int);friend void Time:display(Date &);private: int month; int day; int year;Time:Time(int h,int m,int s)hour=h;minute=m;sec=s;void Time:display(Date &d)coutd.month/d.day/d.yearendl;couthour:minute:secendl;Date:Date(int m,int d, int y)month=m;day=d;year=y;int main()Time

16、 t1(10,13,56);Date d1(12,25,2004);t1.display(d1);return 0;分析和运行程序,注意友元函数Time:display的作用。将程序中的display函数不放在Time类中,而作为类外的普通函数,然后分别在Time和Date类中将display声明为友元函数。在主函数中调用display 函数,display函数分别引用Time和Date两个类的对象的私有数据,输出年、月、日和时、分、秒。修改后调试运行。(4) 有以下使用类模板程序 #includeusing namespace std;templatclass Comparepublic:

17、Compare(numtype a, numtype b) x=a;y=b; numtype max() return (xy)?x:y; numtype min() return (xy)?x:y; private: numtype x,y;int main()Comparecmp1(3,7);coutcmp1.max()is the maximum of two integer numbers.endl;coutcmp1.min()is the minimum of two integer numbers.endlendl;Compare cmp2(45.78,93.6);coutcmp2

18、.max()is the maximum of two float numbers.endl;coutcmp2.min()is the maximum of two float numbers.endl;Comparecmp3(a,A);coutcmp3.max()is the maximum of two characters.endl;coutcmp3.min()is the maximum of two characters.endl;return 0;A) 运行此程序,体会类模板的作用。B) 将它改写为在类模板外定义各成员函数。3. 预先内容C+面向对象程序设计第3章。实验四 Stri

19、ng类的定义和使用1. 实验目的在具备C+字符串知识的基础上,将思维转换到面向对象上来,理解和使用String类;掌握重载运算符函数;开始理解和关注程序运行中和内存有关的问题;2. 相关知识介绍2.1 String类的介绍2.2 String类的定义Class Stringchar* str;int size;void Error(int errorType, int badIndex = 0) const; /出错报警函数public:String(char* s);String(const String & s); /复制构造函数String(void);/ 重载赋值运算符函数String

20、 & operator= (const String & s); /String类的对象赋值String & operator= (char * s); /字符串赋值给对象/ 重载关系运算符函数int operator= (char * str, const String & s);int operator (const String & s) const; /判断调用对象是否小于形参int operator (char * str) const;friend int operator (const String & s) const; int operator (char * str) co

21、nst;friend int operator (char * str, const String & s);/ 重载算术运算符函数String operator+ (const String & s) const;String operator+ (char * str) const;friend int operator+ (char * str, const String & s);/ 将对象转换成C+字符串operator char* (void) const;/ 重载输出运算符函数friend ostream& operator (ostream& ostr, const Strin

22、g & s);int Length(void) const; /类定义完毕3. 实验内容 阅读String类的知识介绍,以及类的定义。这个String类的定义涉及到许多面向对象的概念:构造函数、析构函数、复制构造函数,重载赋值、关系、算术运算符函数,对于程序异常的处理:数组下标越界和内存耗尽所以对于课堂上学习的内容在实际中的应用,需要仔细琢磨,理解并能够应用。 将类的定义在Visual C+环境下编译,并编译通过。上面给出的类定义,需要配合环境调试通过,比如包含头文件,修改编辑以及编译错误等。 将String类的定义中的构造函数、析构函数实现1) 实现构造函数 String(char* s);

23、2) 实现复制构造函数 String(const String & s);3) 实现析构函数 String(void);4. 思考题String类对象和字符串究竟有什么不同?面向对象的String类究竟给字符串处理带来了什么优势?实验五 String类的定义和使用(续)1. 实验目的在具备C+字符串知识的基础上,将思维转换到面向对象上来,理解和使用String类;掌握重载运算符函数;开始理解和关注程序运行中和内存有关的问题;2. 实验内容2.1将String类的重载赋值运算符函数实现1) 实现String类的对象赋值String & operator= (const String & s);

24、2) 实现字符串赋值给对象String & operator= (char * s); 2.2将String类的重载关系运算符函数实现1) 实现字符串相等判断函数:int operator= (char * str, const String & s);2) 实现调用对象所含的字符串是否小于形参s所含的字符串的判断:int operator (const String & s) const; 3) 实现调用对象所含的字符串是否小于形参字符串str的判断:int operator (char * str) const;4) 实现调用形参字符串str是否小于形参s所含字符串的判断:friend i

25、nt operator (const String & s) const; 6) 实现调用对象所含的字符串是否大于形参字符串str的判断:int operator (char * str) const;7) 实现调用形参字符串str是否大于形参s所含字符串的判断:friend int operator (char * str, const String & s);2.3将String类的重载算术运算符函数实现8) 实现调用对象和形参对象所含的字符串相加String operator+ (const String & s) const;9) 实现调用对象所含的字符串和形参的字符串str相加Str

26、ing operator+ (char * str) const;10) 实现形参字符串str和形参s所含的字符串相加friend int operator+ (char * str, const String & s);2.4将String类的出错报警函数实现11) 实现出错报警函数:void Error(int errorType, int badIndex = 0) const; 出错报警函数能够根据入参传递的错误类型,给出相应的错误告警。2.5将String类的重载输出运算符函数实现12) 实现重载输出运算符函数ostream& operator (ostream& ostr, con

27、st String & s);完成把s所含的字符串输出到屏幕上。2.6 实现将字符串转换成String对象13) 实现将字符串转换成String对象operator char* (void) const;2.7 实现返回对象所含字符串的长度14) 实现返回对象字符串的长度int Length(void) const;2.8 检验字符串对象的连接、计算长度和输出s1 = string,s2 = class要求完成连接功能,能够计算字符串的长度,编译运行得到输出:string 和 class 连接成 string classLength of “string class”= 122.9 检验字符串

28、对象的复制、赋值、输出1) 要求将上面的s1 + s2连接得到的字符串赋值到s4当中;2) 再将s4的内容后面增加 “in MFC is”;3) 将s4的内容后面连接上“Cstring class”4) 将s4的内容输出到屏幕上;按照要求完成程序,编译运行,得到输出:string class in MFC is Cstring class2.10 检验字符串的比较大小1) 任意输入两个字符串2) 将输入的字符串转换成String对象3) 给出比较大小的结果实验六 继承与派生1. 实验目的(1) 了解继承在面向对象程序设计中的重要作用。(2) 进一步理解继承和派生的概念。(3) 掌握通过继承派生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1