• 1. C++面向对象程序设计 作者:陈维兴、林小茶等 21世纪高校计算机应用技术系列规划教材 谭浩强 主编 授课:崔春英 44958201@qq.com
  • 2. 课程介绍一、课程目标 本课程以面向对象程序设计为核心,选用C++ 语言为工具来介绍程序设计方法。 学习本门课程主要达到以下两个目标: 作为面向对象程序设计入门,领会面向对象程序设计的基本概念。 把握C++程序设计的基本要点,掌握面向对象程序设计的方法和要求。
  • 3. 《面向对象程序设计》是计算机专业的主干专业课程,它担负着培养学生面向对象编程思想,训练学生编程思维和动手能力等重要任务。同时也是学习后续课程不可缺少的基础。 二、课程地位
  • 4. 独立思考,上机实践。必须通过大量上机实践,独立思考来获得知识。 举一反三,融会贯通。学习C++语言的同时,融会贯通数据结构知识、程序设计风格以及软件工程的思想。触类旁通其他高级程序设计语言。 上机要求: 提前按要求编好程序; 固定位置,尽量独立处理好实验中的问题。 三、课程学习
  • 5. 四、教材介绍 教材:陈维兴,林小茶。C++面向对象程序设计(第二版),中国铁道出版社。 参考书: (1)周会平等。《面向对象程序设计基础》,北京邮电大学出版社。 (2)揣锦华。《面向对象程序设计与VC++实践》,西安电子科技大学出版社。 (3)游洪跃等。《C++面向对象程序设计教程》,清华大学出版社。
  • 6. 第一章 面向对象程序设计概述1.1 面向对象程序设计 1.2 面向对象程序设计语言 1.3 C++编程简介
  • 7. 1.1 面向对象程序设计1.程序 程序是用计算机语言描述的算法。 程序规定了计算机执行的动作和动作的顺序。 一个程序应该包括以下两方面的内容: 1)对数据的描述。指定数据的类型和数据的组织形式,即数据结构。 2)对操作的描述。即操作步骤,也就是算法。 一、程序设计的基本概念
  • 8. 程序从本质上来说就是描述一定数据的处理过程。著名的计算机科学家沃思(NiKiklaus Wirth)提出了一个公式: 程序 = 数据结构 + 算法
  • 9. 算法的三种描述方式:文字、图形描述、程序语言描述 (1)文字描述 例如,求解两个整数整商的算法的文字的描述: 1)读入两个整数,即被除数和除数; 2)如果除数为0,则输出除数为0的错误信息; 3)否则,计算被除数和除数的整商,输出计算结果。 (2)图形描述 流程图是对算法逻辑顺序的图形描述。
  • 10. 开始除数等于0吗?读入被除数和除数计算被除数和除数的商输出整商结束输出“除数为0错误”
  • 11. (3)程序语言描述 例1-1: #include int main() { int dividend,divisor,quotient; cout<<“Please enter the dividend\n”; cin>>dividend; cout<<“Please enter the divisor \n”; cin>>divisor; if(divisor == 0) cout<<“Error: the divisor cannot be 0.”; else { quotient = dividend/divisor; cout<<“Quotient is ”<< quotient ; } return 0; }
  • 12. 面向对象程序设计将数据及对数据的操作放在一起,作为一个互相依存、不可分割的整体来处理,它采用了数据抽象和信息隐藏技术。 面向对象程序设计的优越性表现在代码的可重用性和可扩充性。 二、什么是面向对象的程序设计 面向对象程序设计(OOP)方法强调直接以问题域(现实世界)中的事物为中心来思考和认识问题,并按照这些事物的本质特征把它们抽象为对象,以作为构成软件系统的基础。
  • 13. 一个简单的面向对象的C++程序。//学生信息管理 #include #include Class student { Private: Int sno; Char sname[20]; Float score; Public: Void setdata(int no,char name[],float s) { Sno=no; Score=s; Strcpy(sname,name); } Void display() {Cout<
  • 14. (1)对象(Object) 面向对象程序设计方法把客观世界中的一切实体都可视为对象(静态的属性,动态的行为)。 面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。 1、面向对象程序设计的基本概念
  • 15. (2)类(Class) 在实现世界中,“类”是一组具有相同属性和行为的对象的抽象。 类是对所有具有共同特征的事物的抽象,是一个抽象的概念,相当于一个模具;而对象是一个类中的某个具体实体,是一个具体存在的、客观的实体,后者说是类的一个实例(Instance),相当于用模具制造出来的产品。
  • 16. (3)消息(Message) 消息传递是面向对象程序设计用来描述对象之间通信的机制。 客观世界中的事物之间是相互联系的、相互影响的。在面向对象程序设计中,对象描述了客观实体,因此,对象之间也是相互联系的,当一个对象需要另外一个对象提供服务时,它向对方发出一个服务请求,而收到请求的对象会响应这个请求并完成指定的服务。这种向对象发出的服务请求就成为消息。 消息传递与对象封装间有着密切的联系。封装使对象成为一些各负其责、互不干扰的单位,而消息传递则为对象提供了唯一合法的动态联系的途径,使它们成为一个相互配合的有机整体。
  • 17. (4)方法 要求某一对象做某一个操作时,就向该对象发送一个相应的消息。当对象接收到发向它的消息时,就调用有关的方法,执行相应的操作。方法就是对象能执行的操作。在C++语言中方法是通过函数来实现的,称为成员函数。
  • 18. 2.面向对象程序设计的基本特征(1)抽象(Abstaction) 抽象是通过特定的实例(对象)抽取共同性质形成概念的过程。对于一组具有共同属性和行为的对象,可以抽象成一种类型,C++中这种类型就是类(class)。 面向对象程序设计方法中,对一个具体问题的抽象分析结果是通过类来描述和实现的。
  • 19. (2)封装(Encapsulation) 面向对象程序设计中封装是把数据和操作数据的代码都放在对象内部,并尽可能地隐蔽对象的内部细节。 封装举例:录音机、电视机
  • 20. (3)继承(Inheritance) 继承是依据现有类定义新类。新类继承现有类的一切。 基类(父类) 派生类(子类) 子类比父类要更加具体化,例如,“狗”这个类可能会有它的子类“牧羊犬”和“吉娃娃犬”。假设“狗”这个类有一个方法叫做“叫()”和一个属性叫做“毛皮颜色”。它的子类(前例中的牧羊犬和吉娃娃犬)会继承这些成员。 实现了代码重用。
  • 21. (4)多态(Polymorphism) 面向对象程序设计中的多态性是指不同的对象收到相同的消息时产生的不同的行为方式。 当一个对象发出消息时,由于接收对象的类型可能不同,它们可能做出不同的反应,这样,一个消息可以产生不同的响应效果,这种现象叫做多态性。 例1:狗和鸡都有“叫()”这一方法,但是调用狗的“叫()”,狗会汪汪叫;调用鸡的“叫()”,鸡则会啼叫。
  • 22. 例2:一个电子游戏中,由士兵、炸弹、敌船等对象构成,它们有共同的行为知道如何在屏幕上显示(Create)自己。它们对共同的基本消息创建(Create)就会有不同的响应。例如,士兵对象收到Create消息后,会在屏幕的某个位置画出一个士兵的图形,而炸弹对象收到Create消息后,在屏幕上画出的是一个炸弹的图形。显然,画炸弹和画士兵需要不同的绘制方法。但是,它们可以被同一条消息Create所引发,这就是多态。
  • 23. 1.2 面向对象程序设计语言Smalltalk语言 Simula语言 C++语言 Java语言 C#语言
  • 24. 1.3 C++编程简介 C语言是1972年由Dennis Richie在贝尔实验室设计的一个通用目的的程序设计语言。C语言从问世以来,就是作为UNIX操作系统的开发语言而闻名于世。其实,目前许多UNIX和LINUX操作系统都是用C语言编写的。
  • 25. C语言的类型检查机制相对较弱,这使得程序中的一些错误不能在编译阶段由编译器检查出来; C语言本身几乎不支持代码重用的语言结构 C语言不适合开发大型程序,当程序达但是C语言也存在着一些局限:到的规模达到一定的程度时,程序员就很难控制程序的复杂性。
  • 26. C++继承了C的原有精髓,如高效率、灵活;引入了对开发大型软件颇为有效的面向对象机制。弥补了C语言不支持代码重用、不适合开发大型软件的不足。 增加面向对象程序设计的支持支持传统的面向过程的程序设计C++C
  • 27. 已知三边求三角形的面积1。用户:输入三边 程序面积2。算法接受用户输入的三边a,b,c计算面积: 求(a+b+c)/2s 求面积sqrt(s*(s-a)*(s-b)*(s-c))area将求得的面积area输出简单的C++示例程序:
  • 28. #include #include void main() { float a,b,c,s,area; cin>>a>>b>>c; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); cout<<"三角形面积="<
  • 29. C++的结构特性 C++程序的编辑、编译和运行
  • 30. #include class TennisPlay { public: TennisPlay(char *n,int r) { name=new char[strlen(n)+1]; strcpy(name,n); i=r; } //分配存储空间 ~TennisPlay() { delete[] name; } //释放存储空间,防止内存泄漏 whoareyou() { cout<
  • 31. 源程序目标程序可执行代码库编译程序链接程序.cpp .obj.exe1.编辑 2.编译 3.链接 4.运行
  • 32. 选择Build|Compile 菜单项,即可编译源文件。系统会在Output 窗口给出Error(错误)信息以及Warning(警告)信息。编译器Output 窗口给出语法错误和编译错误信息。 语法错误(Error)处理:鼠标双击错误信息可跳转到错误源代码处进行修改,一个语法错误可能引发系统给出很多条Error 信息。因此,发现一个错误并修改后最好重新编译一次,以便提高工作效率。 警告信息(Warning)处理:一般是触发了C\C++的自动规则,如将一个浮点型数据给整型变量赋值,需要系统将浮点型数据自动转换为整型,此时小数部分会丢失,因而系统给出警告信息。警告信息不会影响程序执行。
  • 33. 选择Build|Build 菜单项,链接并建立工程的EXE 文件,得到可执行文件.exe。这时编译器可能会给出链接错误。 链接错误(Linking Error)处理:链接时可能产生错误,原因可能是所需要的库文件或目标文件缺少,或程序中调用的Extern 函数没有定义等,只要补充相应文档再重新建立即可。 选择Build|Execute 菜单项,执行工程文件,会出现一个类似DOS 操作系统的窗口,光标闪烁等待输入。
  • 34. 例:编写一个C++程序,输入一个人的姓名,然后在屏幕上输出 “HELLO,***!”. 1 //ex1-2.cpp: 输入姓名,然后在屏幕上输出问候信息。 2 #include 3 main( ) 4 { 5 char name[20]; 6 cout<<“please input your name:”; 7 cin>>name; 8 cout<<“HELLO,”<
  • 35. 注释:两种方式,一是以“//”开头,表示该行的后继部分都是注释;另外一种即是C语言原有的注释方式,以“/ *”开头,以“*/”结尾,二者之间的所有字符都是注释。 注意大小写英文字母(区分大小写)。
  • 36. 实验步骤介绍
  • 37. 实验环境介绍
  • 38. 实验环境介绍
  • 39. 实验环境介绍
  • 40. 实验环境介绍
  • 41. 实验1名称:熟悉C++程序的上机过程实验要求:学习用Visual C++6.0编写标准的C++控制台程序,熟悉调试程序过程 实验内容: (1)编写一个简单程序,输出“welcome you”,并给程序加一行注释“First C++ program”。 (2)编写一个完整C++程序,从键盘输入三个值,输出其和、平均数、最小值和最大值。 (3)编写一个程序,读取用户输入的5个整数并输出其中的最大值。 (4)输出100以内的所有素数,并统计输出其个数。 (5)求1~10的阶乘之和,并输出。