您好,欢迎访问三七文档
1计算机系C++程序设计2005.2~2005.5(54学时)2第一章对象导论什么是面向对象的程序设计对象的创建和销毁面向对象的分析与设计3什么是面向对象的程序设计面向过程的程序设计面向对象的程序设计4面向过程的程序设计围绕着功能进行将问题的求解过程划分为数据结构和过程两部分根据功能实现的方便性设计数据结构过程要依据数据结构来仔细安排典型的面向过程程序设计方法是结构化程序设计5结构化程序设计方法结构化程序设计方法从程序要实现的功能的角度出发,一般按照自顶向下、逐步求精的方式,将程序要完成的功能逐级划分成许多小的功能模块,象搭积木一样搭起来。这些小的功能模块最终都可以转化成三种基本控制结构的组合。所谓的功能可以理解为对数据的操作。在程序实现中,特定的功能或功能模块一般用函数来实现,它们要对特定的数据进行操作。该方法出现在上个世纪70年代。6结构化设计方法的特点主要技术:自顶向下、逐步求精,采用单入口、单出口的控制结构。自顶向下:是一种分解问题的技术,逐步求精指结构化程序的连续分解,最终成为下面三种基本控制结构的组合三种基本控制结构:顺序、分支、循环。7分支结构语句1语句2语句3条件语句2语句1语句1语句2顺序结构循环结构8一个例子例:从键盘输入雇员信息(工号,姓名,年龄等),并把员工信息通过屏幕显示出来。9分析:根据题目要求,我们可以把问题划分为两个功能模块:一个是输入模块,一个是输出模块;设计完输入模块后,再设计输出模块。再具体考虑每个模块如何实现(逐步求精)。我们用C语言来写,参看下面的代码:10//从键盘输入雇员信息,并把雇员信息通过屏幕显示出来。voidmain()//主函数开始{//声明用于存储员工信息的变量intnEmpNumber;//雇员工号charstrEmpName[20];//雇员姓名intnEmpAge;//雇员年龄//输入模块GetEmpInfo(…);//输入雇员信息//输出模块PrintEmpInfo(…);//输出雇员信息}函数描述雇员的数据函数11结构化上面的例子中,我们可以进一步将雇员的属性放入一个结构中,可以在一定程度上完成对数据的封装。但在结构化程序设计中,数据与对其进行操作的函数仍是分离的。//声明雇员结构EmpstructEmp{intnEmpNumber;//雇员工号charstrEmpName[20];//雇员姓名intnEmpAge;//雇员年龄};12面向过程的程序设计的缺点程序设计者必须考虑每一细节。但对于复杂应用,单纯从过程的角度很难清楚地描述一个系统。过程之间会相互影响。是一种数学思维的方法,和人们认识世界示所习惯使用的方法不同。13问题函数用于完成一定的功能,它们都是针对特定的数据进行操作的。那么我们能不能以特定的数据为中心,将数据与对其进行操作的函数封装起来呢?14什么是面向对象的程序设计面向过程的程序设计面向对象的程序设计15面向对象的程序设计将问题的求解过程看成是以数据为中心和数据操作为一体的求解过程。数据和相关的操作称为对象。系统中所有的数据分属于不同的对象。设计者的任务是:-设计对象-如何通知有关对象完成所需的任务16面向对象的程序设计方法面向对象程序设计是建立在结构化程序设计基础上的,但它不再是从功能入手,而是从对象(人、地方、事情等)入手;面向对象程序设计以类作为构造程序的基本单位,它具有封装、数据抽象、继承、多态等特点;面向对象程序设计出现在80年代中后期。17对象简单地说,对象就是现实世界中的各种实体,包括人、地点和事物等。例如,学生、老师、教室、桌子、椅子等等。一般都要从属性和行为两个方面来对它们加以描述。18属性和行为对象具有的一些特征称为属性,以一个人为例,他的姓名、年龄、身高、体重等可以作为他的属性。这些属性会有其对应的值,一般至少会有一项区别于其它对象,它们在程序设计中对应的是一定的数据。为了达到目的,对象必须提供的功能(或必须提供的服务)称为对象的行为,在程序设计中对应一定的方法(函数)。19类(class)类描述了一组具有相同属性(数据元素)和相同行为(函数)的对象。类的数据成员是对对象属性的抽象,类的函数成员是对对象行为的抽象,而类本身就是对对象的抽象。20面向对象的程序设计主要就是创建新的数据类型(class)类的具体实例就是对象声明一个对象lightit;it.on();On()Off()Brighten()Dim()light类型名属性接口21C++中类的声明——Emp类classEmp//Emp类的声明{private://私有成员变量intnEmpNumber;//雇员工号charstrEmpName[20];//雇员姓名intnEmpAge;//雇员年龄public://公有成员函数Emp();//构造函数~Emp();//析构函数boolSetNumber(intnum);//设置工号boolSetName(char*n);//设置姓名boolSetAge(intage);//设置年龄intGetNumber();//查询工号char*GetName();//查询姓名intGetAge();//查询年龄};成员变量成员函数22C++中类变量的使用EmpEmpA;//声明Emp的对象EmpAEmpA.SetNumber(“12345”);//设置EmpA的工号EmpA.SetName(“丁一”);//设置EmpA的名字EmpA.SetAge(30);//设置EmpA的年龄……23程序=对象+对象+……对象1描述问题解决问题面向对象程序设计方法……数据算法对象n数据算法……24结构化VS面向对象结构化程序设计方法是一种模块化程序设计方法,它在解决问题时是以功能为中心的,一定的功能模块虽然也作用于特定的数据,但它们并没有被封装在一起。面向对象程序设计方法则是以对象为中心来解决问题的。属于同种对象的属性(数据)和行为(功能)被抽象出来封装到一起。25面向对象方法的优点实现的隐藏–把程序员分为类的实现者和类的使用者。类的实现者把不需要对用户公开的行为隐藏起来(private),用户可以使用的行为公布出来(public)实现的重用:组合或聚合。一个对象包含了另一个对象(has-a)继承:克隆一个对象,并对克隆后的对象进行修改多态性:不同对象收到相同消息时产生不同的行为的性质。小汽车发动机基类派生类26第一章对象导论什么是面向对象的程序设计对象的创建和销毁面向对象的分析与设计27创建和销毁对象静态存储区:全局对象或静态对象栈:自动或局部对象堆:动态分配的对象动态分配的对象必须显式回收28第一章对象导论什么是面向对象的程序设计对象的创建和销毁面向对象的分析与设计29面向对象的分析与设计—需求分析作用:确定系统要做什么–谁将使用这个系统–执行者用这个系统干什么–如何使用这个系统–如果其他人也做这件事或同一个执行者有不同的目标,该怎么办(多态)–使用这个系统时,会发生什么问题(异常处理)手段:用例图(USECASE)30面向对象的分析与设计—创建对象发现对象对象装配系统构造系统扩充对象重用31面向对象的分析与设计(续)创建核心并不断完善迭代用例:不断加入新的用例进化:系统的维护完善32第二章对象的创建与使用语言的编译过程分段编译工具使用库文件C++程序的结构熟悉C++的编程风格,如何利用已有的类33语言的翻译过程将高级语言的程序翻译成机器语言–解释执行–编译执行main(){inti,s;i=1;s=0;Ccompiler0110001011101001SourceprogramObjectprogram34编译程序的结构词法分析语法分析中间代码生成优化目标代码生成源程序目标程序单词语法单位中间代码优化后的中间代码识别一个个单词,并转化为机内形式按语法规则识别语法单位,如表达式、语句等如四元组、三元组和逆波兰表达式对运行速度、存储空间方面进行优化中间代码转换为目标程序35解释程序的结构源程序解释系统(逐句解释、执行)原始数据结果36连接与加载连接(link):将目标程序与已有的其它目标程序连接起来,产生一个可执行的程序加载(load):为程序在内存中定位37程序执行过程38分段编译工具程序可以由多个源文件组成,每个源文件包含若干个函数,每个文件必须独立编译一个文件中的函数可能要访问另一个文件中的函数或数据。如何使一个源文件中的函数知道另一个源文件中的函数或数据。所用的方法就是“声明”。39声明与定义定义(definition):这里创建了一个变量或一个函数声明(declaration):这个函数或变量在程序的其他地方做过定义40函数的声明和定义函数的声明intfunc(int,int);intfunc(intlength,intheight);intfunc();//仅在C中能用函数的定义intfunc(intlength,intheight){语句}41变量的声明和定义变量的定义inta;变量的声明externinta;42使用库文件包含库的头文件#includefile.h#include“file.h”使用库中的函数和变量把库连接进可执行文件:用系统的linker–在本程序的目标模块中找–在预先设定的库目录中查找–“”先找当前目录,再找库目录43编写第一个C++程序使用iostream类实现输入输出–包含iostream类#includeiostream.h或#includeiostreamusingnamestd;–输入:cin变量名;–输出:cout“hello”;程序的基本结构–注释:/**/或//–库包含–类和函数定义44一个简单的C++输出程序//Hello.cpp//SayingHellowithC++#includeiostream//预编译命令usingnamespacestd;//名字空间voidmain()//主函数开始{cout“Hello,world!”endl;}//主函数结束45读取输入数据//Input.cpp//Getsanumber#includeiostream//预编译命令usingnamespacestd;voidmain()//主函数开始{intnumber;cout“Enteradecimalnumber:”;cinnumber;}//主函数结束46把两个数相加的程序/*File:add2.cpp*thisprogramreadtwonumbers,addthemtogether,*andprintstheirssum.*/#includeiostreamusingnamespacestd;voidmain(){intnum1,num2,total;coutthisprogramaddstwonumbersendl;cout1stnumber?;cinnum1;cout2ndnumber?;cinnum2;total=num1+num2;coutThetotalistotalendl;}变量声明输入阶段计算阶段输出阶段空行:区分不同的部分运算符前后加空格47在程序前或者函数前的注释用来描述问题标识符的可读性很重要。不要在程序中用特别的数字,把它们定义为符号和常量。符号常量一般用大写字母。取名也要有意义。输入的数据要检查合法性。总是用{}来括起复合语句,并从另起一行开始。用空行来分割不同的区域,使得程序结构清晰。程序设计的风格48程序结构:–逻辑上属于同一个层次的语句互相对齐;逻辑上属于内部层次的推到下一个对齐位置。–在每个操作符、表达式前后至少留一个空格。–将相关的语句进行分组(grouping),每一组前后留一个空白行。–一行代码中只写一个声明、定义和简单语句。–所有的语句(简单和复合)均以‘;’结束。–所
本文标题:c++
链接地址:https://www.777doc.com/doc-3545800 .html