C 面向对象程序设计 第一章 面向对象程序设计概述_第1页
C 面向对象程序设计 第一章 面向对象程序设计概述_第2页
C 面向对象程序设计 第一章 面向对象程序设计概述_第3页
C 面向对象程序设计 第一章 面向对象程序设计概述_第4页
C 面向对象程序设计 第一章 面向对象程序设计概述_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C++面向对象程序设计

作者:陈维兴、林小茶等21世纪高校计算机应用技术系列规划教材谭浩强主编授课:崔春英cuiying_1201@163.com课程介绍一、课程目标

本课程以面向对象程序设计方法为核心,选用C++语言为工具来介绍程序设计方法。学习本门课程主要达到以下两个目标:作为面向对象程序设计入门,领会面向对象程序设计的基本概念。把握C++程序设计的基本要点,掌握面向对象程序设计的方法和要求。二、教材简介教材:陈维兴,林小茶。C++面向对象程序设计。中国铁道出版社。三、课程学习独立思考,上机实践。计算机科学是注重实践的学科。必须通过大量上机实践,独立思考来获得知识。举一反三,融会贯通。学习C++语言的同时,融会贯通程序设计方法、程序设计风格以及软件工程的思想。触类旁通其他程序设计语言。上机要求:提前按要求编好程序固定位置,尽量独立处理好实验中的问题四、课程考核总成绩=平时成绩+课程设计+期末考试第一章面向对象程序设计概述1.1什么是面向对象程序设计1.2面向对象程序设计语言1.3C++编程简介程序设计基本概念根据传统的(面向过程)程序设计方法,把计算机的应用需求转变为可在计算机上运行程序,一般经历问题定义、算法设计、程序编码、程序测试等步骤。1.问题的定义问题定义的目的是明确要解决的问题。在软件开发过程中,需求分析完成的就是问题定义,即明确要开发软件的功能需求。程序设计基本概念2.算法设计

算法设计是指把问题的数学模型或处理需求转化为计算机的解题步骤。通常分为概要设计和详细设计两个阶段。3.程序编码

程序编码的主要任务,是选定某种程序设计语言将前一步设计出来的算法实现为能在计算机上运行的程序。4.测试和调试

测试和调试的主要目的在于发现和纠正程序中的错误。确保程序实现需求规格说明规定功能。算法与程序1.算法

做任何事情都有一定的步骤。为解决一个问题而采取的方案和步骤,就称为算法。算法是一个由有限步骤组成的具体过程。计算机解决问题的求解步骤就是计算机的算法。程序设计基本概念算法的三种描述方式:文字描述、图形描述、程序语言描述(1)文字描述例如,求解两个整数整商的算法的文字的描述:

1)读入两个整数,即被除数和除数;

2)如果除数为0,则输出除数为0的错误信息;3)否则,计算被除数和除数的整商,输出计算结果。(2)图形描述主要介绍流程图的描述方法。流程图是对算法逻辑顺序的图形描述。此方法形象、清晰、画法简单、格式自由,可以不涉及太多的机器细节或程序细节。

程序设计基本概念开始除数等于0吗?读入被除数和除数计算被除数和除数的商输出整商结束输出“除数为0错误”(3)程序语言描述

例1-1:#include<iostream.h>

intmain(){

intdividend,divisor,quotient;

cout<<“Pleaseenterthedividend\n”;

cin>>dividend;

cout<<“Pleaseenterthedivisor\n”;

cin>>divisor;if(divisor==0)

cout<<“Error:thedivisorcannotbe0.”;else{quotient=dividend/divisor;

cout<<“Quotientis”<<quotient;}return0;}程序设计基本概念2.程序

程序是用计算机语言描述的算法。程序规定了计算机执行的动作和动作的顺序。一个程序应该包括以下两方面的内容:1)对数据的描述。指定数据的类型和数据的组织形式,即数据结构。2)对操作的描述。即操作步骤,也就是算法。程序从本质上来说就是描述一定数据的处理过程。著名的计算机科学家沃思(NiKiklausWirth)提出了一个公式:

程序=数据结构+算法程序结构P4:按功能划分基本模块,这些模块形成一个树状结构;模块间关系尽可能简单,功能相对独立;模块由顺序、选择和循环三种基本结构组成;模块的实现方法是函数。结构化程序设计(StructureProgramming)语言工具:Basic、Fortran、C、Pasical等程序结构良好、易写易读程序风格:上一页ABPBAFTTPSF结构化控制语句(自左向右依次为顺序、分支、循环)举例:函数与函数调用的例子floatfunc1(floatX,floatY){ floatZ; Z=X+Y/2; returnZ;}main(){ floata,b,c;

scanf(“%f,%f”,&a,&b); c=func1(a,b);

printf(“%f”,c)}设计思想:面向对象程序设计将数据及对数据的操作放在一起,作为一个互相依存、不可分割的整体来处理,它采用了数据抽象和信息隐藏技术。它将对象及对对象的操作抽象成一种新的数据类型——类,并且考虑不同对象之间的联系和对象类的重用性。面向对象程序设计的优越性表现在代码的可重用性和可扩充性。程序结构:将系统划分为不同对象,对象间靠消息相互驱动,使对复杂系统的认识过程和系统程序设计实现过程尽可能一致语言工具:

C++、VC++、Java、VB等结构化程序设计是面向机器的,以算法为核心。面向对象的程序设计方法面向问题的,它认为现实世界由对象组成,而问题的求解方法与现实世界对应。面向对象程序设计的主要特征是:程序=对象+消息例如,当人们审视某高校学生教材购销系统时,首先会想到的是学生和教材处这两个实体。因为,教材购销的所有活动都是围绕这两个实体进行的。以学生教材购销系统为例,按照人们观察问题的视点,我们得到如图所示的结构。学生教材购销系统结构按照结构化程序设计方法,我们却得到如图所示的SC图(一种图形描述工具)。SC图中各模块的划分是以功能为基础的。学生教材购销系统结构SC图面向对象程序设计的基本概念1.对象(Object)面向对象程序设计方法把客观世界中的一切实体都可视为对象。例如,一辆汽车、一个学生、一个三角形、一份文件等都是对象。例如:教师黎明就是一个对象。对象的属性:年龄:30学历:博士职称:讲师专业:计算机软件对象的行为:授课运动吃饭一个个的像黎明这样的教师就可以构成一个教师类。在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。对象=数据+操作2.封装(Encapsulation)封装是一种机制。面向对象程序设计中封装是把数据和操作数据的代码都放在对象内部,并尽可能地隐蔽对象的内部细节。使用一个对象的时候,通过它向外界提供的接口形式,不需要知道它的数据结构细节和实现操作的算法。封装是一个取自日常生活的概念,我们把信、贺卡、照片放到同一个信封里寄给朋友,就是一个封装的简单例子。封装举例:录音机3.类(Class)

在实现世界中,“类”是一组具有相同属性和行为的对象的抽象。类和对象之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,一个对象是类的一个实例。由于类是对共同属性和行为的封装,所以通常使用如图所示的图形工具来表示一个类。

类的表示4.消息(Message)和方法消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。要求某一对象做某一个操作时,就向该对象发送一个相应的消息。当对象接收到发向它的消息时,就调用有关的方法,执行相应的操作。方法就是对象能执行的操作。在C++语言中方法是通过函数来实现的,称为成员函数。5.继承(Inheritance)继承是依据现有类定义新类.新类继承现有类的一切.基类(父类)派生类(子类)子类比父类要更加具体化,例如,“狗”这个类可能会有它的子类“牧羊犬”和“吉娃娃犬”。假设“狗”这个类有一个方法叫做“叫()”和一个属性叫做“毛皮颜色”。它的子类(前例中的牧羊犬和吉娃娃犬)会继承这些成员。这意味着程序员只需要将相同的代码写一次。实现了代码重用6.多态(Polymorphism)面向对象的通信机制是消息,面向对象技术通过向未知对象发送消息来进行程序设计。当一个对象发出消息时,由于接收对象的类型可能不同,所以,它们可能做出不同的反应,这样,一个消息可以产生不同的响应效果,这种现象叫做多态性。举例来说,狗和鸡都有“叫()”这一方法,但是调用狗的“叫()”,狗会汪汪叫;调用鸡的“叫()”,鸡则会啼叫。多态性举例:例如,一个电子游戏中,由士兵、炸弹、敌船等对象构成,它们有共同的行为知道如何在屏幕上显示(Create)自己。它们对共同的基本消息创建(Create)就会有不同的响应。例如,士兵对象收到Create消息后,会在屏幕的某个位置画出一个士兵的图形,而炸弹对象收到Create消息后,在屏幕上画出的是一个炸弹的图形。显然,画炸弹和画士兵需要不同的绘制方法。但是,它们可以被同一条消息Create所引发,这就是多态。C与C++

C语言是1972年由DennisRichie在贝尔实验室设计的一个通用目的的程序设计语言。C语言从问世以来,就是作为UNIX操作系统的开发语言而闻名于世。其实,目前许多UNIX和LINUX操作系统都是用C语言编写的。但是C语言也存在着一些局限:C语言的类型检查机制相对较弱,这使得程序中的一些错误不能在编译阶段由编译器检查出来;C语言本身几乎不支持代码重用的语言结构C语言不适合开发大型程序,当程序达到的规模达到一定的程度时,程序员就很难控制程序的复杂性。C与C++

C++继承了C的原有精髓,如高效率、灵活;引入了对开发大型软件颇为有效的面向对象机制。弥补了C语言不支持代码重用、不适合开发大型软件的不足。增加面向对象程序设计的支持支持传统的面向过程的程序设计C++CC与C++C++实现了类的封装,数据隐藏、继承及多态,使其代码可重用并容易维护。C++是一种混合型的面向对象设计语言。C++是一门高效使用的程序设计语言,既可进行过程化程序设计,又可进行面向对象程序设计。目前,C++语言已被广泛应用于程序设计的众多领域。已知三边求三角形的面积1。用户:输入三边程序面积2。算法接受用户输入的三边a,b,c计算面积:

求(a+b+c)/2s

求面积sqrt(s*(s-a)*(s-b)*(s-c))area将求得的面积area输出编写程序举例#include<iostream.h>#include<math.h>voidmain(){ floata,b,c,s,area; cin>>a>>b>>c; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); cout<<"三角形面积="<<area<<endl;}C++程序的结构特性一个简单的C++示例程序(例题2.1)C++的结构特性C++程序的编辑、编译和运行

#include<string.h>classTennisPlay{public:

TennisPlay(char*n,intr){name=newchar[strlen(n)+1];

strcpy(name,n);i=r;}//分配存储空间~TennisPlay(){delete[]name;}//释放存储空间,防止内存泄漏

whoareyou(){

cout<<name;}…….

//其他函数

private:char*name;

inti;//私有变量

};main(){

TennisPlaya(“zhouwen”,1);a.whoareyou();}输出:zhouwen1.3C++编程简介1.C++集成开发环境

C++的流行使得许多软件厂商都提供了自己的C++集成开发环境,称为C++IDE(IntegratedDevelopmentEnvironment)。著名的有Borland公司的C++Builder,IBM公司的VisualAgeForC++,Microsoft公司的VisualC++等等。其中,VisualC++是当今Windows操作系统下最流行的C++集成开发环境之一。C++编程简介VisualC++是美国微软公司开发的C++集成开发环境,它集源程序的编写、编译、连接、调试、运行,以及应用程序的文件管理于一体,是当前PC机上最流行的C++程序集成开发环境之一。VisualC++集成开发环境中的程序开发工具很多,要真正掌握它们必须结合具体的编程内容。

在以后的学习中,要多用、多试、多思考,才能够熟练地掌握它的用法。2.开发C++程序的步骤

同其它高级语言一样,要得到可执行的C++程序,必须对C++源程序进行编译和连接。对于C++语言,这一过程的一般描述如下:1)使用文本编辑工具编写C++程序,其文件后为.cpp,称为源代码(SourceCode);2)用编译器将源代码转换成二进制形式,文件后缀为.obj,称为目标代码(ObjectiveCode);3)最后,将若干目标代码和现有的二进制代码库经过连接器连接,产生可执行代码(ExecutableCode),文件后缀为.exe,只有.exe文件才能运行。C++编程简介源程序目标程序可执行代码库编译程序链接程序.cpp.obj.exe1.编辑2.编译3.链接4.运行C++编程简介例:编写一个C++程序,输入一个人的姓名,然后在屏幕上输出“HELLO,***!”.1//ex1-2.cpp:输入姓名,然后在屏幕上输出问候信息。

2#include<iostream.h>3main()4{5charname[20];6cout<<“pleaseinputyourname:”;7cin>>name;8cout<<“HELLO,”<<name<<“!\n”;9return0;10}

程序设计风格缩排规则:使程序的书写格式应能较好地反映出程序的层次结构。例如处于同一层次的语句都从同一个字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论