Chap01_面向对象编程基础.ppt_第1页
Chap01_面向对象编程基础.ppt_第2页
Chap01_面向对象编程基础.ppt_第3页
Chap01_面向对象编程基础.ppt_第4页
Chap01_面向对象编程基础.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、第1章 面向对象编程基础,主讲:龙满生,主要内容,程序设计范型 面向对象基本概念 C+简史,1.1 程序设计范型,程序=算法+数据 程序设计方法/程序设计范型(paradigm) 面向过程的程序设计 基于对象的程序设计 面向对象的程序设计 泛型程序设计 面向方面的程序设计,1.1.1 面向过程的程序设计,设计思路 模块分解与功能抽象:自上向下、逐步求精、分而治之。 结构化程序设计:模块内部由顺序、选择和循环三种基本结构组成。 模块化实现的具体方法是使用子程序/子过程。 程序结构 按功能划分为若干个基本模块,形成一个树状结构。 模块之间的关系尽可能简单,功能上相对独立高内聚、低耦合。,1.1.1

2、 面向过程的程序设计,相关语言 Fortran、C、Pascal 优点 有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。,1.1.1 面向过程的程序设计,缺点 数据安全性差:易于被外部修改。 可重用性差:每一种相对于老问题的新方法都要带来额外的开销。 可维护性差:把数据和处理数据的过程分离为相互独立的实体,当数据结构改变时,所有相关的处理过程都要进行相 应的修改。 大型应用程序,如图形用户界面的应用,很难用过程来描述和实现,开发和维护都很困难。,1.1.2 基于对象的程序设计,设计思路 通过数据抽象对问题建模形成类。 与类相关的算法被称为该类的公有接口,数

3、据以私有的形式被存储在每个对象中 系统则由类的对象实例之间的相互作用表现出来 相关语言 Ada,1.1.3 面向对象的程序设计,设计思路 通过继承和多态扩展抽象数据结构 将数据及对数据的操作方法封装在一起,作为一个相 互依存、不可分离的整体对象。 对同类型对象抽象出其共性,形成类。 类通过一个外部接口与外界发生关系。 对象与对象之间通过消息进行通讯。,1.1.3 面向对象的程序设计,优点 程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。 通过继承与多态,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。 相关语言 Smalltalk、C+和Java,1.1.

4、4 泛型程序设计,设计思想 通过数据类型参数化实现通用的算法和数据结构,如通用链表、通用排序算法等。 相关语言 C+是一种支持多种程序设计方法的混合型语言。,1.1.5 面向方面程序设计,设计思路 传统开发方法主要根据功能对系统进行划分,而软件的非功能需求,如安全性,往往横贯在这些功能模块中,不是独立存在的。 针对多个横切的关注或方面的程序设计活动,程序员用独立的模块表达各个关注的行为,最终使用一种称为编织(weaving)的技术将其融入程序代码。 相关语言 AspectJ,1.2 面向对象基本概念,抽象 封装 类和对象 接口、消息和事件 继承 多态,1.2.1 抽象,抽象(Abstracti

5、on) 抽象是指从被研究对象中抽取出共同的、本质的、与研究问题相关的特征,舍弃个别的、非本质的、与研究问题无关的次要特征。,学生1 学生2 学生3 学生4 学生5 ,属性: 班级 学号 姓名 专业 ,学生对象2 学生对象3 学生对象4 学生对象5 ,行为: 查询 修改 添加 打印 ,客观事物,学生类,学生对象,1.2.2 封装,封装(Encapsulation) 封装就是把对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 对外形成一个边界(或者说一道屏障),只保留有限的对外接口使之与外部发生联系。,1.2.2 封装,从外部不能通过直接修改center或radius来改变圆的状

6、态。,通过调用这些操作,从外部就可查询圆的状态或对圆进行操作。,1.2.3 类和对象,对象(Object) 对象是用来描述客观事物的一个实体,可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。 对象是用来构成系统的一个基本单位,由一组属性和一组行为构成。 属性(Attribute) :可以用某种数据来描述(静态特征) 行为(Action) :对象所表现的行为或具有的功能(动态特征),1.2.3 类和对象,类(Class) 具有相同属性和行为的一组对象的集合。 为属于该类的全部对象提供了抽象的描述,包括属性和行为两个主要部分。 类与对象的关系犹如模具与铸件之间的关系,类是创建对象的模

7、板,对象是类的一个实例(Instance)。,1.2.3 类和对象,类和对象的UML图示,1.2.4 接口、消息和事件,接口(Interface) 对外公开的属性和操作。 消息(Message) 是对象之间发出的行为请求,描述事件发生的信息。 封装使对象成为一个相对独立的实体,而消息机制为它们提供了一个相互间动态联系的途径,使它们的行为能互相配合,构成一个有机的运行系统。 事件(Event) 多个消息构成一个事件。,1.2.4 接口、消息和事件,创建了一个Circle类的对象cobj 比较: int iobj;,类的两个不同对象,向圆对象cobj发送了一个请求 该请求是通过调用area函数来实

8、现的,接口对应的就是类中的函数 接口规定程序员能向Circle对象发出什么请求 只能有四种请求:求面积、求周长,移动、缩放,1.2.4 接口、消息和事件,Circle c(1.5); double a; a = c.area(); c.move(2,3);,创建对象 向对象发送消息,Circle类的实现,const double PI = 3.1415926; class Circle double radius; int center_x, center_y; public: Circle(double r = 1.0, int x=0, int y=0) radius = r; cente

9、r_x = x; center_y = y; double area() return PI*radius*radius; double perimeter() return PI*radius*2; void move(int newx, int newy) center_x = newx; center_y = newy; void scale(double factor) radius = radius*factor; ;,1.2.5 继承,继承(Inheritance) 继承允许在已有类的基础上定义新类,并且可以增加自己特有的功能或者修改继承得到的功能。原有类称为基类、父类或超类,新类

10、称为子类或派生类。 单继承:只有一个父类; 多继承:有多个父类。 派生类自动拥有父类的属性和操作。 派生类可以修改继承得到的功能,改变已经存在的基类操作的行为,这称为改写或覆盖(override)。,1.2.5 继承,子类2改写了基类的操作1,子类1新增加了操作3,1.2.6 多态性,多态性(Polymorphism) 是指相同名称的接口具有不同的实现。 Gardelli和Wegner将多态性分为四类: 强制多态性:通过将操作数的值转换为需要的类型,函数或运算符可以对多种不同的类型进行操作。 重载多态性:一个函数名字可以有多种含义,在调用时根据参数的类型决定调用函数的哪个定义。 包含多态性:一

11、个类型是另一类型的子类型,基类型可用的函数对子类型也起作用。这样的函数可以有不同的实现,并根据运行时刻确定的子类型来调用。 参数多态性:将类型作为参数,在实例化时指定。模板提供参数多态性。,1.2.6 多态性,1.2.7 面向对象的软件工程,面向对象的软件工程是面向对象方法在软件工程领域的全面应用。 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的编程(OOP) 面向对象的测试(OOT) 面向对象的软件维护(OOSM),1.3 C+简史,C+源于C语言,而C语言是在B语言的基础上发展起来的。 1960年出现了一种面向问题的高级语言ALGOL 60 。 1963年英国剑桥大学推出了CPL(Combined Programming Language)语言,后来经简化为BCPL语言。,1.3 C+简史,1970年美国贝尔(Bell)实验室的K.Thompson以BCPL语言为基础,设计了一种类似于BCPL的语言,取其第一字母B,称为B语言。 1972年美国贝尔实验室的Dennis M.Ritchie为克服B语言的诸多不足,在B语言的基础上重新设计了一种语言,取其第二字母C,故称为C语言。,1.3 C+简史,1980年贝尔实验室的Bjarne Stro

温馨提示

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

评论

0/150

提交评论