面向对象程序设计方法课件.ppt
《面向对象程序设计方法课件.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计方法课件.ppt(503页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1面向对象程序设计2地位与作用是计算机科学与技术专业本科生的一门必修课程面向对象软件开发集抽象性、封装性、继承性和多态性于一体,可以帮助人们开发出模块化、数据抽象程度高的,体现信息隐蔽、可复用、易修改、易扩充等特性的程序3内容简介面向对象的基本思想C+语言的基本概念、基本语法和编程方法C+语言的面向对象特征k类与对象k继承与派生k多态性与虚函数4学习方法多练习,掌握基本概念多读程序,学习编程方法与技巧多上机实践,加强动手能力多剖析范例,积累编程经验5面向过程的程序设计(以C语言为例)1、自上而下(top-down)的设计方式:是一个自顶向下,逐步求精的过程;2、以main函数概括出整个应用程序
2、需要做的事情,而main函数由对一系列的子函数的调用组成;main中的每一个子函数都可以被精炼成更小的函数。重复这个过程,即可完成一个过程式的设计;3、特征是以函数为中心,以函数作为划分程序的基本单位,数据往往处于从属地位。6过程式设计的优缺点:优点:易于掌握与理解,符合人们的思维习惯;缺点:1、不能适应问题比较复杂,或者需求经常变化的情况;2、数据与操作分离开,对数据与操作的修改变得很困难;3、程序架构的依赖关系不合理:main函数依赖于子函数,子函数又依赖于更小的子函数;程序的核心逻辑依赖于外延的细节,一个细节上的小改动,会引起一系列的变动。7什么是面向对象程序设计什么是面向对象程序设计?
3、面向对象程序设计(Object-orientedprogramming,OOP),指一种程序设计范型,同时也是一种程序开发的方法论。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。8面向对象程序设计1历史回顾1967年挪威计算中心的KistenNygaard和OleJohanDahl开发了Simula67语言,它提供了比子程序更高一级的抽象和封装,引入了数据抽象和类的概念,它被认为是第一个面向对象语言。92面向对象程序设计的基本概念面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得
4、到了具体的体现。103面向对象语言一个语言要称为面向对象语言必须支持几个主要面向对象的概念。根据支持程度的不同,通常所说的面向对象语言可以分成两类:基于对象的语言,面向对象的语言。基于对象的语言仅支持类和对象,如Ada、Alphard、CLU、Euclid、Modula等,它们不支持继承、多态。而面向对象的语言支持的概念包括:类与对象、继承、多态。例如Smalltalk、Java。另外一些则是对现有的语言进行改造,增加面向对象的特征演化而来的。如C+,由Ada发展而来的Ada95等,这些语言保留着对原有语言的兼容,并不是纯粹的面向对象语言,。11教材及参考书目C+语言基础教程(第二版)吕凤翥著
5、清华大学出版社2007C+语言及其程序设计教程(修订版)张国峰编著电子工业出版社1997C+语言程序设计郑莉等编著清华大学出版社1999C+程序设计教程钱能编著清华大学出版社199912第1章C+语言概述13第1章C+语言概述141.1.1面向对象的由来和发展机器语言(二进制码)汇编语言20世纪50年代中期,FORTRAN语言20世纪50年代中期,Algol语言在计算机语言发展史上具有划时代的意义,引入了许多程序设计概念。如变量、数组、循环、分支等。提出块(BeginEnd)思想,对数据进行保护,是一种初级封装。151.1.1面向对象的由来和发展(续)20世纪60年代中期,Simula67语言
6、面向对象语言的鼻祖,提出了对象、类的概念,并支持类的继承。20世纪70年代中期,Ada语言支持数据抽象类型的最重要的语言之一,但不完全支持继承。20世纪70年代中期,Smalltalk语言最有影响的面向对象语言之一,丰富了面向对象的概念。20世纪80年代中期后出现C+等多种面向对象语言1652 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96AdaALGOL60ALGOL68PascalModula-2CPLBCPL BCC+JavaLISPPROLOGCOBOLFORTRAN77FORTRANPL/1Simul
7、a67Smalltalk80BASICANSI-BASICQBASIC VBFORTRAN90171.1.2C+的起源和特点一、C+的起源在C语言基础上为支持面向对象的程序设计研制的一个通用目的的程序设计语言;由AT&T贝尔实验室BjarneStroustrup博士开发;二、C+的特点与C兼容,既保持了C的简洁、高效和接近汇编的特点,又比C更安全,结构化程度更高;既支持面向过程的程序设计,又支持面向对象的程序设计;注意其两面性181.2面向对象的方法必须先研究事物,而后才能研究过程。必须先知道一个事物是什么,而后才能觉察这个事物中所发生的变化。路德维希费尔巴哈和德国古典文学的终结恩格斯19面向
8、过程的程序设计面向过程的程序设计1、特点、特点模块化的设计方法模块化的设计方法 (自顶向下、功能抽象、分而治之)(自顶向下、功能抽象、分而治之)面向数据流面向数据流 (数据流动、数据和处理过程分离)(数据流动、数据和处理过程分离)采用瀑布模型采用瀑布模型20The Waterfall Model212、缺点、缺点不能完全贯彻不能完全贯彻“功能抽象功能抽象”的思想的思想 数据数据/处理分离处理分离需要了解数据结构需要了解数据结构 全局变量全局变量从功能出发划分模块从功能出发划分模块 所划分模块千差万别,可复用性不高所划分模块千差万别,可复用性不高221.2.1面向过程与面向对象程序设计例例1.1
9、:输入任意短语或句子,计算该短语包含多少个字(word)和字符(character)。注意:输入短语时,必须在字和字之间只空一格。231.2.1面向过程与面向对象程序设计(续)面向过程的方法#include#includevoidmain()charch;intwdcount,chcount;wdcount=1;chcount=0;printf(*:Pleaseinputanyphrasen);while(ch=getche()!=r)chcount+;241.2.1面向过程与面向对象程序设计(续)if(ch=)wdcount+;printf(n*:Thenumberofwordis%dn,w
10、dcount);printf(n*:Thenumberofcharis%dn,chcount);面向对象的方法#include#includeclasscountpublic:定义类公有成员251.2.1面向过程与面向对象程序设计(续)count();voidprocess();voiddisplay();private:intwdcount,chcount;count:count()wdcount=1;chcount=0;voidcount:process()私有成员构造函数成员函数数据成员261.2.1面向过程与面向对象程序设计(续)charch;cout*:Pleaseinputanyp
11、hraseendl;while(ch=getche()!=r)chcount+;if(ch=)wdcount+;coutendl;voidcount:display()printf(n*:Thenumberofwordis%dn,wdcount);271.2.1面向过程与面向对象程序设计(续)printf(n*:Thenumberofcharis%dn,chcount);voidmain()countA;A.process();A.display();运行结果*Pleaseinputanyphrase.Iamateacher*:Thenumberofwordis4*:Thenumberofch
12、aris15定义对象调用公有成员函数281.2.1面向过程与面向对象程序设计(续)是一种数学思维或计算机思维方法,与人们认识世界的方法不同以不稳定的、多变的“过程”和“操作”为中心来构造系统可重用性较差是建立在认识方法学基础上的一项技术科学,比较自然地模拟了人类认识客观世界的方式;以相对稳定的“对象”和“数据结构”为中心来构造系统可重用性较好面向过程程序设计面向对象程序设计291.2.1面向过程与面向对象程序设计(续)面向过程程序设计面向对象程序设计P1P2P3P4P5O1O2O3O4O5P6301.2.1面向过程与面向对象程序设计(续)面向过程程序设计面向对象程序设计P1P2P3P5O1O2
13、O3O4O5P6O4311.2.2抽象在面向对象中的作用一、抽象的概念抽象代表着一个对象的本质特征,这个特征将这个对象与所有其他种类的对象区别开来;抽象是通过从特定的实例中抽取共同的性质以形成一般化的概念的过程;抽象具有层次;汽车轮船飞机交通工具321.2.2抽象在面向对象中的作用(续)二、面向对象抽象的原理(面向对象计算的本质)数据抽象、行为共享、进化、确定性1、数据抽象为程序员提供了一种对数据和为操作这些数据所需要的算法的抽象;是面向对象方法的核心,包括:模块化:构成了面向对象计算的本质;信息隐藏:将一个模块的细节部分对用户隐藏起来,用户只能通过一个受保护的接口来访问某个模块,而不能直接访
14、问一个模块内部的细节;类公有成员331.2.2抽象在面向对象中的作用(续)2、行为共享行为是由实体的外部接口定义的行为共享指许多实体具有相同的接口,可增加系统的灵活性;支持行为共享的方式k分类与层次分类k多态与继承对象公有成员函数名341.2.2抽象在面向对象中的作用(续)3、进化需求进化(虚函数)进化式的问题求解(继承的构造函数)4、确定性确保每个行为项都有一个正确的解释,系统不会因不能响应某一行为而失败;确定性与类型的正确性有关;351.2.3面向对象计算的基本特征面向对象系统的三要素:对象、类和继承;一、对象1、概念上对象是代表着正在创建的系统中的一个实体;2、实现形式上对象是一个状态和
15、操作(或方法)的封装体;3、对象的定义状态:对象的状态由这个对象的属性和这些属性的当前值决定。属性是静态的,当前值是动态的;一个对象具有状态、行为和标识。361.2.3面向对象计算的基本特征(续)行为:一个对象如何以状态变化和消息传递的形式进行作用和对外界进行反应。一个对象的行为代表了这个对象的外部可见的和可测试的活动;一个对象的状态代表着它的行为的累积结果;标识:标识是一个对象固有的一种特性,该特性将这个对象与其他对象区别开来;属性1属性2.属性n值11值21.值n1值12值22.值n2对象1行为值11值21.值n1值12值22.值n2对象2行为371.2.3面向对象计算的基本特征(续)4、
16、对象的分类实体对象界面对象控制对象按作用分类存储信息的对象支持系统的主要功能5、对象的确认发明对象:主要是控制对象;发现对象:主要是实体对象或界面对象;二、类1、什么是类381.2.3面向对象计算的基本特征(续)类是创建对象的样板,它包含着所创建对象的状态描述和方法的定义。类的完整描述包含了外部接口和内部算法以及数据结构的形式;2、类是对象的抽象及描述类中包含生成对象的具体方法,由一个类所创建的对象称为该类的实例;3、类是抽象数据类型的实现类是所有对象的共同的行为和不同的状态的集合体;三、继承继承提供了创建新类的一种方法,它的本质特征是行为共享;39属性属性1 1属性属性2 2属性属性n n行
17、为行为1 1行为行为2 2行为行为m m值值1111值值2121值值n1n1值值1212值值2222值值n2n2行为行为1 1值值1111值值2121值值n1n1行为行为m m值值1212值值2222值值n2n2对象对象1 1对象对象2 2对象对象k k对象对象p p类类类与对象的关系类与对象的关系1.2.3面向对象计算的基本特征(续)401.3.1C+语言中的抽象支持控制抽象:用于排列任意动作的顺序的一种方法;三种语句控制结构:顺序、循环、分支过程抽象(面向过程):对一组输入数据的一个计算动作和产生的输出结果;数据抽象(面向对象):类是实现抽象数据类型的工具;411.3.2C+对面向对象程序
18、设计方法的支持C+支持数据封装(数据抽象)C+中,类是支持数据封装的工具,对象则是数据封装的实现;C+中包含有私有、公有和保护成员每个可能的消息对应一个相应的方法,方法通过函数来定义;C+中通过发送消息来处理对象C+中允许友元破坏封装性C+中允许函数名和运算符重载C+支持继承性C+支持动态联编421.3.3C+对C语言的改进增加了新的运算符::,new,delete等;改进了类型系统,增加了安全性;引进了引用概念;允许函数重载,允许设置缺省参数,提高了编程的灵活性;引进了内联函数,提高了程序的效率;可以根据需要随时对变量进行说明;431.4C+程序的编辑、编译和运行一、编辑:源文件的扩展名为.
19、cpp二、编译1、预处理过程词法分析:单词语法分析:构造程序的格式符号表:程序中的各种符号及其属性错误处理程序:生成目标代码:目标文件扩展名.obj2、编译过程3、连接过程:可执行文件扩展名.exe三、运行441.4C+程序的编辑、编译和运行(续)源程序.cpp目标文件.obj可执行文件.exe编译器连接器磁盘中的#include文件C+库文件.LIB451.5.1C+的字符集大小写的英文字母:az,AZ数字字符:09特殊字符461.5.2词法记号1、关键字(保留字)表1-1C+的关键字471.5.2词法记号(续)2、标识符组成规则:以字母或下划线开始,其后跟零个或多个字母、数字或下划线;不能
20、以数字开始正确标识符:Result,DoubleList,_first,first_错误标识符:1first标识符的长度任意(受编译器限制);区分字母的大小写;不能使用系统的保留字;例如:ADD,Add,add481.5.2词法记号(续)3、运算符单目双目三目运算符5、分隔符(),分隔符:4、各种文字数字字符文字串文字文字布尔文字;491.5.3空白一、空白包括:空格、制表符、换行符、注释功能:指示词法记号的开始和结束位置;二、注释/*/501.6C+程序的结构一、C+示范程序#includevoidmain()coutHelloworld!endl;二、C+程序的组成预处理命令输入输出函数语
21、句变量其他I/O流库,提供所有的输入输出操作cout:流类对象:提取符例如:cinPleaseinputtwointegers:;cinab;endl:换行;51第2章数据类型和表达式522.1基本数据类型一、基本数据类型整型int浮点型(实型)字符型char基本数据类型逻辑型bool空值型void单精度浮点数float双精度浮点数double用于函数和指针532.1基本数据类型(续)二、数据类型修饰符signed:有符号unsigned:无符号short:短型long:长型说明:3)long修饰符还适用于双精度浮点数;2)上述修饰符均可用于整型和字符型;1)类型修饰符可以修饰除void、bo
22、ol类型以外的其他类型;542.1基本数据类型(续)三、基本数据类型列表表2-1C+的基本数据类型552.1基本数据类型(续)说明:1)表中的int可以省略,即在int之前有修饰符出现时,可以省略关键字int;2)单精度类型float、双精度类型double、长精度类型longdouble统称浮点类型;3)char类型和各种int类型统称整型类型;char类型变量在内存中以它的ASCII码值的形式存储;4)字宽(字节)取决于操作系统和编译器的实现,可用sizeof验证;562.2.1常量一、整型常量(无小数部分)1、表示方法十进制八进制十六进制2、十进制表示由09的数字组成不能以0开始无前缀例
23、:132,-3453、八进制表示由07的数字组成以0为前缀例:010,-05364、十六进制表示由09的数字及AF的字母(大小写均可)组成以0 x或0X为前缀例:0 x7A,-0X3de572.2.1常量(续)5、说明:1)长整型用L(或l)做后缀表示。例如:32765L,793l;2)无符号型用U(或u)做后缀表示。例如:4352U,3100u;3)unsignedlong型用后缀U(或u)和L(或l)一起表示,L与U的先后顺序无关。例如:49321ul,37825LU,41152Lu;4)无后缀时,整型常量类型按如下顺序确定:int,(unsigned),long,unsignedlong
24、十进制时无582.2.1常量(续)二、浮点型常量由整数部分和小数部分构成;只有十进制表示;一般表示形式(小数表示形式):k整数部分与小数部分可以省去一部分,但不能全部省去;k例如:5.,.25,4.07592.2.1常量(续)科学表示形式:k在小数表示法后面加E(或e)表示指数;k例如:23.5E6,.032E-5,.3e10k指数部分可正可负,但必须为整数;浮点常量的缺省数据类型为double型;后缀F(或f)表示float类型;后缀l(或l)表示longdouble类型;602.2.1常量(续)三、字符常量由一对单引号括起的一个字符表示;其值为所括起字符在ASCII表中的编码;所括起字符的
25、表示方法:k图形表示法该方法适用于有图形符号的可打印字符;例如:A,a,*k转义序列表示法该方法适用于所有字符,尤其是无图形符号的不可打印字符;612.2.1常量(续)K转义序列表示方法:以反斜线()开头,后跟字符的ASCII码值;K八进制表示:ddd;例如:101K十六进制表示:xhh;例如:x41表2-2C+中常用转义序列符622.2.1常量(续)四、布尔常量有两个值:true和false;五、字符串常量(串常量,字符串)一对双引号括起的字符序列,字符序列可以包含空格、转义序列或任何其他字符,这些字符不一定是C+字符集中的字符,只要C+编译器支持即可;例如:Thisisastring;串常
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 方法 课件
限制150内