版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C++高级程序设计第1章C++语言概述及工程实践说明第1章C++语言概述及工程实践说明
C++语言是应用面广的一门计算机程序设计语言。本章主要介绍C++语言的开展历史、面向对象技术的根底知识、运用VisualC++2023开发平台进行程序设计和调试程序的根本方法。最后简介练习实践工程情况。第1章C++语言概述及工程实践说明1.1C++程序设计语言简介1.2VisualC++2023编程工具简介1.3工程实践说明1.1C++程序设计语言简介C++程序设计语言是从C语言开展而来的,C语言起源于美国AT&T贝尔实验室。1969年KenThompson为DECPDP-7计算机设计了一个操作系统软件,就是最早的Unix。之后,KenThompson又根据剑桥大学MartinRichards设计的BCPL语言为Unix设计了一种便于编写系统软件的语言,命名为B语言。B语言是一种无类型的语言,直接对机器字操作,这一点与后来的C语言有很大不同。作为系统软件编程语言的第一个应用,KenThompson用B语言重写了其自身的解释程序。1972-1973年,KenThompson与同在贝尔实验室的DenisRitchie改造了B语言,为其添加了数据类型的概念,并将原来的解释程序改写为可以直接生成机器码的编译程序,然后将其命名为C语言。1.1.1C++语言的开展历程20世纪80年代初,贝尔实验室的BjarneStroustrup博士及其同事开始针对C语言的类型检查机制相对较弱、缺少支持代码重用的语言结构等缺陷进行改进和扩充,形成了带类的C(Cwithclass),即C++最早的版本。后来,Stroustrup和他的同事们又为C++引进了运算符重载、引用、虚函数等许多特性,并使之更加精炼,于1989后推出了AT&TC++2.0版。随后美国国家标准化协会ANSI和国际标准化组织ISO一起进行了标准化工作,并于1998年正式发布了C++语言的国际标准。1.1C++程序设计语言简介1.1.2面向对象程序设计技术1965年,提出了采用自顶向下、逐步求精的程序设计方法,指出程序设计可以使用三种根本控制结构来构造程序,任何程序都可由顺序、选择、循环三种根本控制结构进行构造。结构化程序设计方法的根本思想是,把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。支持结构化程序设计的高级语言在20世纪70年代初相继诞生,其典型代表有Pascal语言、C语言。结构化程序设计是一种面向过程的程序设计方法,它把数据和处理数据的操作别离为相互独立的实体。当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于旧问题的新方法都要带来额外的开销,程序的可重用性差。
1.1C++程序设计语言简介面向对象程序设计(ObjectOrientedProgramming)以对象作为程序的根本单元,将数据和操作封装其中,以提高软件的重用性、灵活性和扩展性。面向对象程序设计是以一种更接近于人类认知事物的方法建立模型,以对象作为计算主体,对象拥有自己的名称、状态以及接受外界消息的接口。面向对象程序设计比结构化程序设计更具有创立可重用代码和更好地模拟现实世界环境的能力。在面向对象程序设计中,对象是要研究的任何事物。现实世界的诸多有形的实体(如书、汽车等)都可看作对象。此外,一些抽象的规那么、方案或事件也能表示为对象。对象由数据(描述事物的属性)和作用于数据的操作(表达事物的行为)构成一独立的整体。从程序设计者来看,对象是一个程序模块;从用户来看,对象为他们提供所希望的行为。1.1C++程序设计语言简介类、对象及消息类是对一组有相同数据和操作的对象的抽象,一个类所包含的方法和数据描述了一组对象的共同属性和行为。对象那么是类的具体化,是类的实例。在面向对象程序设计中,经常用已有的类派生新类,并形成类的层次结构。消息是对象之间进行通信的一种规格说明。一般它由3个局部组成:接收消息的对象、消息名及实际变元。1.1C++程序设计语言简介1.1C++程序设计语言简介(1)封装性。封装是一种信息隐蔽技术,通过类的说明实现封装,是对象的重要特性。(2)继承性。继承性表达在类的层次关系中,派生的子类拥有父类中定义的数据和方法。子类直接继承父类的全部描述,同时可修改和扩充,并且继承具有传递性。(3)多态性。对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性,用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,这样,同一消息即可调用不同的方法。面向对象程序的设计方法具有如下3个特点:1.1.3学习C++程序设计的本卷须知(1)深刻理解语法规那么的内涵。应追求理解语法规那么后面隐藏的东西,即计算机在运行程序时所做的操作。(2)多读优秀的程序段,从中学习程序设计技巧。积累的编程技巧越多,程序设计能力的提高也就越快。这里应注意不要死记硬背,要活学活用。相对于其他程序设计语言,C++语言的概念和技术不仅多,并且比较难以掌握。下面的几个注意点对学习者会有帮助,供学习时参考。1.1C++程序设计语言简介(3)少做纸上的程序填空类题目,多在计算机上做编程练习题。初期以输入并调通完整的例程为主,到达熟悉编程环境和练习调试方法的目的,期间可穿插完成一些简单的程序练习题。熟悉工具之后,尽可能在计算机上独立完成书中的编程练习题,坚持每天都编程!(4)重点学习面向对象技术,学会用面向对象思想分析和描述问题。C++语言是C语言的超集,其中包含了结构化和面向对象程序设计两种方法。(5)注意逐渐养成良好的程序设计风格。程序的可读性、健壮性、易扩展性和易维护性非常重要,不要因追求所谓的技巧而编写难懂的程序。可读性是第一位的。要深刻地认识到:写程序不仅仅是让计算机完成某一项任务的,而且还是让人来阅读的。(6)根据自己的兴趣爱好,完成一个小型的应用软件工程。边学边做,边做边学。可以这样说:软件完成之日,也是你C++语言学成之时。1.1C++程序设计语言简介微软公司早在1998年推出的VisualC++6.0(VC6.0)是一款流行面广、业界使用时间长的软件开发工具,目前还有许多教材选用它作为C++语言教学的软件平台。随着新标准的推出和软件技术的开展,VC6.0对新标准和新操作系统的支持问题愈创造显,微软公司后来推出了多个VisualC++版本,目前最新的版本是VisualC++14.0,即VisualC++2023。我们选用VisualC++2023为教学软件平台,旨在让初学者能够直接接触新的技术和工具,不在过时的软件平台上花费时间。1.2VisualC++2023编程工具简介1.2.1C++程序生成过程1.2VisualC++2023编程工具简介C++语言是一种面向对象的高级程序设计语言,高级语言编写的程序是不能直接被计算机识别的,必须经过转换才能被执行。下面简要介绍用C++语言设计应用程序所经历的几个阶段。(1)编写程序。在文本编辑器中用C++语言编写源代码文件,以扩展名.cpp保存源代码程序。(2)程序预处理。源程序在被编译之前,先由预处理器根据源代码中的预处理指令在源代码中进行相应的插入与替换字符文本的操作。(3)编译程序。编译器将C++程序翻译成目标代码(本地代码)。如果是在.NET平台上运行的程序,编译器那么将程序编译成中间语言代码(托管代码)。
(4)连接程序。程序通常包含对标准或其他类库所定义的函数和数据的调用,连接器将被调用的相关代码组合到可执行文件中。最后生成的可执行文件的扩展名为.exe,这是一个在操作系统中或.NET框架上可运行的程序。(5)运行程序。由操作系统加载可执行文件,将其先读入到计算机内存中,最后CPU根据程序中的指令完成各种操作。(6)调试程序。程序在编译、连接和运行阶段都可能出现错误,程序员需要用系统提供的调试工具帮助发现并指出错误及原因,修改源程序中的错误。
1.2VisualC++2023编程工具简介1.2.2.NET框架与VisualC++2023从技术角度看,.NET应用是运行于.NET框架之上的应用程序。.NET框架是微软.NET技术的核心,历经数年的开展,.NET框架从1.0版到目前最新的6.0版,使得.NET已经开展成为构建企业应用程序最重要的平台之一。.NET框架提供了托管执行环境、简化的开发和部署以及与各种编程语言的集成,是支持生成和运行下一代应用程序和Web效劳的内部Windows组件。.NET框架的关键组件为公共语言运行时(CommonLanguageRuntime)和.NET框架类库,该类库包括ADO.NET、ASP.NET、Windows窗体〔Winform〕和WindowsPresentationFoundation〔WPF〕。1.2VisualC++2023编程工具简介公共语言运行时(CLR)与Java的虚拟机一样,是一个运行时环境,它负责计算机内存的分配和回收等资源管理工作,并保证应用软件和底层操作系统之间必要的别离。在CLR上运行的程序通常称为“托管的〞(Managed)代码,不在CLR上而是直接在计算机CPU上运行的程序被称为“非托管的〞(Unmanaged)代码(又称本地代码)。在VisualC++2023编程环境中,既可以用标准C++语言编写在CPU上直接运行的被编译为本地代码的应用程序,也支持编写能在CLR中运行的被编译成中间语言代码的程序。微软公司还专门设计了一门与标准C++兼容的计算机语言C++/CLI(CommonLanguageInfrastructure),用于支撑在.NET框架上采用C++语言开发应用软件。1.2VisualC++2023编程工具简介VisualC++2023并不强迫程序员编写的程序是用托管代码还是非托管代码,而且允许程序员在同一个工程中不同程序之间,甚至在同一个文件内混合使用托管代码和非托管代码。在使用VisualC++编程时,通常将设计非托管代码的和托管代码的应用程序分别简称为创立本地C++程序和C++/CLI程序。1.2VisualC++2023编程工具简介1.2.3VisualC++2023集成开发环境简介所谓集成开发环境(IntegratedDevelopmentEnvironment,IDE),是指集成了代码编写功能、分析功能、编译功能、调试等功能于一体的软件开发工具。VisualStudio2023产品发布了Express、Professional、Premium、Ultimate四个不同的版本,以满足不同程度的专业需求。其中Express版为学习版,可以免费下载,供初级软件开发者学习。我们采用VisualC++2023学习版或试用版为C++语言程序设计工具。1.2VisualC++2023编程工具简介VisualC++2023支持快速应用程序开发(RapidApplicationDevelopment,RAD)。RAD工具可以帮助程序员用直观的方式设计软件界面,通过简单的控件拖拽和属性设置,即可完成设计。界面由菜单栏、工具栏、工具箱窗口、属性窗口、解决方案资源管理器窗口、设计视图等组成。1.2VisualC++2023编程工具简介图1-1菜单栏由多个菜单项组成,菜单包含了用于管理IDE以及开发、维护和执行程序的命令。工具栏中包含了最常用的命令图标,如新建工程、保存文件、执行程序等。将鼠标指针停留在图标上,会显示图标的功能描述。工具箱窗口中分类存放了各种控件,可以将控件拖拽到设计窗体上,实现可视化界面设计。属性窗口可以显示设计视图中当前选中控件、代码文件的属性。解决方案资源管理器窗口提供了设计方案中的所有文件的便捷访问,双击其中的文件项,将翻开相应的文档。设计视图位于整个窗体的中央,它使用视图来显示用户控件、HTML页和内容页。通过设计视图,可以对文本和元素进行操作:添加、定位、调整大小,及使用特殊菜单或属性窗口设置属性。1.2VisualC++2023编程工具简介1.2.4简单的控制台应用程序VisualC++2023学习版提供了假设干应用程序模板,其中“Win32控制台应用程序〞模板用于设计本地Console类型的C++程序。控制台程序是为了兼容DOS程序而设立的,这种程序的执行就好似在一个DOS窗口中执行一样,没有自己的界面。INTEL的CPU有三种工作模式,实模式,保护模式,虚拟模式。实模式是16位的,在这种模式下可工作纯DOS。保护模式是32位的,WINDOWS就工作在这种模式下,为了使在32位保护模式下工作的WINDOWS可兼容16位实模式下的DOS程序,又设立了虚拟模式,就是控制台程序。1.2VisualC++2023编程工具简介【例1-1】编写输出“Hello,World!〞字符串的控制台应用程序。(1)从菜单栏中选择“文件〞→“新建〞→“工程〞命令,或直接单击工具栏上的“新建工程〞图标,弹出“新建工程〞对话框,选中“Win32控制台应用程序〞选项。单击“浏览〞按钮,选择工程存放的位置。在“名称〞文本框中输入工程名称“Example1_1〞,单击“确定〞按钮,弹出“Win32应用程序向导〞对话框。(2)在此向导对话框中,单击“下一步〞按钮。在“应用程序设置〞界面中,单击选中“空工程〞左侧的复选框,然后单击“完成〞按钮。(3)在解决方案资源管理器窗口中,右击“源文件〞选项,从弹出的快捷菜单中选择“添加〞→“新建项〞命令,弹出“添加新项〞对话框。选择“C++文件(.cpp)〞选项,输入名称“mainFun〞,单击“添加〞按钮,出现mainFun.cpp文本编辑窗口。1.2VisualC++2023编程工具简介(4)在文本编辑窗口中,输入下面的代码://例1-1,输出“Hello,World!〞字符串#include<iostream>usingnamespacestd;intmain(){ cout<<"Hello,World!"<<endl; return0;}(5)按Ctrl+F5组合键,输出运行结果。1.2VisualC++2023编程工具简介1.2.5简单的窗体应用程序1.2VisualC++2023编程工具简介VisualC++2023支持以RAD方式开发Windows窗体应用程序,并且有两个模板支持Windows窗体应用程序开发。一种是“Win32工程〞模板,该模板基于微软公司开发的传统的MFC(MicrosoftFoundationClasses)类库,该类库以C++类的形式封装了Windows操作系统的应用程序编程接口API(ApplicationProgrammingInterface)函数,所生成的程序代码是本地代码。另一种是“Windows窗体应用程序〞模板,用于开发基于.NET框架下的窗体应用程序,生成的程序代码是在CLR上运行的托管代码。【例1-2】编写Windows窗体应用程序,要求在窗体上显示“欢送使用VisualC++2023.〞。设计步骤如下:(1)创立工程。方法与例1-1相似,不同的是使用“Windows窗体应用程序〞模板。(2)从工具箱中拖拽“Label控件〞到设计窗体Form1(见图1-1)。选中Label控件,在属性窗口中选择Text属性,输入字符串“欢送使用VisualC++2023.〞。(3)按F5键或Ctrl+F5组合键执行程序。执行程序的另一种方式是通过工具栏中的按钮,或从菜单栏中选择“调试〞→“启动调试〞命令。运行结果如下图。1.2VisualC++2023编程工具简介1.2.6调试程序借助于调试工具,能让程序在某个位置暂停运行,进而观察到程序的内部结构和内存的状况,帮助程序员找到错误产生的原因。VisualC++2023的程序调试器功能强大,可以中断(或挂起)程序的执行以检查代码,计算和编辑程序中的变量,查看存放器,查看从源代码创立的指令,以及查看应用程序所占用的内存空间。使用编程工具的“编辑并继续〞功能,可以在调试时对代码进行更改,然后继续执行。下面列出VisualC++2023编程环境中调试程序的主要方法。1.2VisualC++2023编程工具简介(1) 设置与取消断点。如下图,单击程序编辑窗口左侧区域或者在光标所在行按F9键,出现红色圆点。关闭断点的方法是单击红色圆点或再次按F9键。系统允许在程序的多个位置设置断点。1.2VisualC++2023编程工具简介(2)启动与停止调试。设置过断点后,单击“启动调试〞按钮,程序开始运行并在断点处停止。单击“停止调试〞按钮,程序从调试状态退出。(3)程序跟踪运行。进入调试状态后,通过单击“逐语句〞按钮(或按F11键)或“逐过程〞按钮(或按F10键)使程序进入一次执行一行代码的“单步执行〞状态。“逐语句〞和“逐过程〞的差异仅在于它们处理函数调用的方式不同。如果程序调试位于函数调用的内部,立刻返回到调用函数的方法是使用编译器的“跳出〞功能,按Shift+F11组合键可快速调用跳出功能。(4)观察程序内部状态。程序进入调试状态后,可以通过“自动窗口〞、“局部变量〞、“监视窗口〞来查看程序运行到当前语句时内存中的变量、存放器等状态。1.2VisualC++2023编程工具简介1.3工程实践说明通过模拟中的联系人程序,演示如何综合运用课程所学的知识,设计并实现一个简易的通信录管理控制台应用程序。本工程所运用的面向对象程序设计思想和方法,可供读者在C++课程设计和应用程序开发中参考。1.3.1系统概述
1.3.2功能设计
1.3.3系统设计
1.3.4模块设计与代码实现
1.3工程实践说明1.3.1系统概述通信录管理系统是以管理联系人个人资料为目的信息管理系统,其应用范围十分广泛。通常一个通信录管理系统需要管理的主要信息有:联系人姓名、所在单位、固定、移动、群组、E-mail、QQ、通信地址、邮政编码等。一个通信录系统所具有的主要功能如下:维护功能。包括联系人和群组信息的输入、修改、删除等通信录信息的更新。显示功能。联系人信息的多种方式显示,如分组显示、分屏显示等。查找功能。提供按姓名、号、拼音等多种方式的查找。输出功能。打印输出、复制备份等。限于篇幅,本工程所设计的通信录管理系统演示性地实现了以下主要功能:输入新联系人。用户可以新增联系人,并输入根本信息。删除已有联系人。从文件中删除指定联系人的根本信息,及其在群组中的信息。创立新群组。允许用户创立新的群组。删除已有群组。不仅要删除群组名称,还要删除联系人与该群组所关联的信息。群组添加成员。为已有的群组添加联系人。按姓名查找。输入姓名,如果是管理系统中的联系人,那么显示联系的根本信息。按群组查找。输入群组名,输出群组的成员信息。分屏显示。以一屏5行的方式输出联系人信息。1.3.2功能设计1.3.3系统设计通信录管理系统的设计主要包括数据表设计和界面设计。数据表设计数据表的设计在信息管理系统的开发中占有重要的地位,关系数据库理论是设计数据表的理论依据。本工程中,需要处理的实体数据有联系人信息、群组信息,以及它们之间的联系信息。用实体-关系图表示,如图1.3-1所示。1.3.3系统设计联系人实体包含的数据项有:姓名、固话号码、号码、邮箱地址、QQ号、地址、邮政编码、公司名称等,其中姓名为关键字,用于区分不同的记录。注意:为简化设计,这里假设系统中不存在同姓名的联系人。群组实体包含的数据项只有群组名称,同时也是关键字。包含关系包含的数据项有:联系人姓名和群组名。联系人和群组之间的关系是多对多关系,即:一个联系人可以是多个群组的成员,一个群组可以包含多个联系人。联系人、群组以及它们之间的联系的数据被分别保存到person.dat、group.dat和relation.dat这3个文件中,并采用二进制文件格式存储。程序运行时,先从文件中读入数据,并存储到顺序容器vector和关联容器multimap定义的对象中,运行结束时,再将容器中的数据回写到文件中。1.3.3系统设计界面设计受控制台应用程序运行平台的限制,通信录管理系统的界面采用文本方式。用户根据程序界面的按键提示,选择相应的功能。界面中的表格线为制表符,可以利用Word中的插入符号功能,在Word文档中插入后,再复制到编程环境中。控制台的清屏可通过调用system(“cls〞)函数实现,让屏幕显示暂停可利用system
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《信号的频域分析》课件
- 《讲课语言文字应用综合演练》课件
- 《保险销售拒绝处理》课件
- 《保险理财与规划》课件
- 《故宫博物院》课件
- 《保护贸易理论》课件
- 群落演替课件-上课专用
- 的新闻法律和法规分析重点
- 专题08 锐角三角形及其应用 (讲练)(解析版)
- 《保险学》讲稿课件
- 中央2024年国家医疗保障局大数据中心招聘应届生笔试历年典型考题及考点剖析附带答案详解
- 透水沥青混凝土路面技术规程DBJ-T 15-157-2019
- 2023-2024学年湖北省黄石市黄石港区八年级(上)期末数学试卷(含解析)
- 职业素养提升第2版(大学生职业素养指导课程)全套教学课件
- 声音的产生省公开课一等奖新名师课比赛一等奖课件
- indesign典型实例第一章
- 2024年全球光伏板清扫机器人行业总体规模、主要企业国内外市场占有率及排名
- 新时代大学生劳动教育智慧树知到期末考试答案章节答案2024年延边大学
- 离心式压缩机设计-离心压缩机气动及结构设计含6张CAD图
- 手术室人员管理规范
- TB 10003-2016 铁路隧道设计规范 含2024年4月局部修订
评论
0/150
提交评论