您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > Chap01_面向对象编程基础
主讲:龙满生信息工程学院主要内容程序设计范型面向对象基本概念C++简史信息工程学院1.1程序设计范型程序=算法+数据程序设计方法/程序设计范型(paradigm)面向过程的程序设计基于对象的程序设计面向对象的程序设计泛型程序设计面向方面的程序设计信息工程学院1.1.1面向过程的程序设计设计思路模块分解与功能抽象:自上向下、逐步求精、分而治之。结构化程序设计:模块内部由顺序、选择和循环三种基本结构组成。模块化实现的具体方法是使用子程序/子过程。程序结构按功能划分为若干个基本模块,形成一个树状结构。模块之间的关系尽可能简单,功能上相对独立——高内聚、低耦合。信息工程学院1.1.1面向过程的程序设计相关语言Fortran、C、Pascal优点有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。信息工程学院1.1.1面向过程的程序设计缺点数据安全性差:易于被外部修改。可重用性差:每一种相对于老问题的新方法都要带来额外的开销。可维护性差:把数据和处理数据的过程分离为相互独立的实体,当数据结构改变时,所有相关的处理过程都要进行相应的修改。大型应用程序,如图形用户界面的应用,很难用过程来描述和实现,开发和维护都很困难。信息工程学院1.1.2基于对象的程序设计设计思路通过数据抽象对问题建模形成类。与类相关的算法被称为该类的公有接口,数据以私有的形式被存储在每个对象中系统则由类的对象实例之间的相互作用表现出来相关语言Ada信息工程学院1.1.3面向对象的程序设计设计思路通过继承和多态扩展抽象数据结构将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体——对象。对同类型对象抽象出其共性,形成类。类通过一个外部接口与外界发生关系。对象与对象之间通过消息进行通讯。信息工程学院1.1.3面向对象的程序设计优点程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。通过继承与多态,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。相关语言Smalltalk、C++和Java信息工程学院1.1.4泛型程序设计设计思想通过数据类型参数化实现通用的算法和数据结构,如通用链表、通用排序算法等。相关语言C++是一种支持多种程序设计方法的混合型语言。信息工程学院1.1.5面向方面程序设计设计思路传统开发方法主要根据功能对系统进行划分,而软件的非功能需求,如安全性,往往横贯在这些功能模块中,不是独立存在的。针对多个横切的关注或方面的程序设计活动,程序员用独立的模块表达各个关注的行为,最终使用一种称为编织(weaving)的技术将其融入程序代码。相关语言AspectJ信息工程学院1.2面向对象基本概念抽象封装类和对象接口、消息和事件继承多态信息工程学院1.2.1抽象抽象(Abstraction)抽象是指从被研究对象中抽取出共同的、本质的、与研究问题相关的特征,舍弃个别的、非本质的、与研究问题无关的次要特征。学生1学生2学生3学生4学生5…属性:班级学号姓名专业…学生对象2学生对象3学生对象4学生对象5…行为:查询修改添加打印…客观事物学生类学生对象信息工程学院1.2.2封装封装(Encapsulation)封装就是把对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。对外形成一个边界(或者说一道屏障),只保留有限的对外接口使之与外部发生联系。信息工程学院1.2.2封装radiuscentermove()area()scale()getCenter()getRadius()从外部不能通过直接修改center或radius来改变圆的状态。通过调用这些操作,从外部就可查询圆的状态或对圆进行操作。信息工程学院1.2.3类和对象对象(Object)对象是用来描述客观事物的一个实体,可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。对象是用来构成系统的一个基本单位,由一组属性和一组行为构成。属性(Attribute):可以用某种数据来描述(静态特征)行为(Action):对象所表现的行为或具有的功能(动态特征)信息工程学院1.2.3类和对象类(Class)具有相同属性和行为的一组对象的集合。为属于该类的全部对象提供了抽象的描述,包括属性和行为两个主要部分。类与对象的关系犹如模具与铸件之间的关系,类是创建对象的模板,对象是类的一个实例(Instance)。信息工程学院1.2.3类和对象+操作1()+操作2()-属性1-属性2类名+操作1()+操作2()类名类名+area():double+perimeter():double+move(innewx:int,innewy:int):void+scale(infactor:double):void-radius:double-center_x:int-center_y:intCircle属性1=值1属性2=值2对象名:类名radius:double=2.7center_x:int=10center_y:int=20cobj:Circle+area():double+perimeter():double+move(innewx:int,innewy:int):void+scale(infactor:double):voidCircle类和对象的UML图示信息工程学院1.2.4接口、消息和事件接口(Interface)对外公开的属性和操作。消息(Message)是对象之间发出的行为请求,描述事件发生的信息。封装使对象成为一个相对独立的实体,而消息机制为它们提供了一个相互间动态联系的途径,使它们的行为能互相配合,构成一个有机的运行系统。事件(Event)多个消息构成一个事件。信息工程学院1.2.4接口、消息和事件创建了一个Circle类的对象cobj比较:intiobj;Circlearea()perimeter()move()scale()类名接口Circlecobj;cobj.area();类的两个不同对象1.向圆对象cobj发送了一个请求2.该请求是通过调用area函数来实现的1.接口对应的就是类中的函数2.接口规定程序员能向Circle对象发出什么请求3.只能有四种请求:求面积、求周长,移动、缩放信息工程学院1.2.4接口、消息和事件Circlec(1.5);doublea;a=c.area();c.move(2,3);创建对象向对象发送消息Circle类的实现constdoublePI=3.1415926;classCircle{doubleradius;intcenter_x,center_y;public:Circle(doubler=1.0,intx=0,inty=0){radius=r;center_x=x;center_y=y;}doublearea(){returnPI*radius*radius;}doubleperimeter(){returnPI*radius*2;}voidmove(intnewx,intnewy){center_x=newx;center_y=newy;}voidscale(doublefactor){radius=radius*factor;}};信息工程学院1.2.5继承继承(Inheritance)继承允许在已有类的基础上定义新类,并且可以增加自己特有的功能或者修改继承得到的功能。原有类称为基类、父类或超类,新类称为子类或派生类。单继承:只有一个父类;多继承:有多个父类。派生类自动拥有父类的属性和操作。派生类可以修改继承得到的功能,改变已经存在的基类操作的行为,这称为改写或覆盖(override)。信息工程学院1.2.5继承基类子类1+操作1()+操作2()子类2+操作3()+操作1()子类2改写了基类的操作1子类1新增加了操作3信息工程学院1.2.6多态性多态性(Polymorphism)是指相同名称的接口具有不同的实现。Gardelli和Wegner将多态性分为四类:强制多态性:通过将操作数的值转换为需要的类型,函数或运算符可以对多种不同的类型进行操作。重载多态性:一个函数名字可以有多种含义,在调用时根据参数的类型决定调用函数的哪个定义。包含多态性:一个类型是另一类型的子类型,基类型可用的函数对子类型也起作用。这样的函数可以有不同的实现,并根据运行时刻确定的子类型来调用。参数多态性:将类型作为参数,在实例化时指定。模板提供参数多态性。信息工程学院1.2.6多态性信息工程学院1.2.7面向对象的软件工程面向对象的软件工程是面向对象方法在软件工程领域的全面应用。面向对象的分析(OOA)面向对象的设计(OOD)面向对象的编程(OOP)面向对象的测试(OOT)面向对象的软件维护(OOSM)信息工程学院1.3C++简史C++源于C语言,而C语言是在B语言的基础上发展起来的。1960年出现了一种面向问题的高级语言ALGOL60。1963年英国剑桥大学推出了CPL(CombinedProgrammingLanguage)语言,后来经简化为BCPL语言。信息工程学院1.3C++简史1970年美国贝尔(Bell)实验室的K.Thompson以BCPL语言为基础,设计了一种类似于BCPL的语言,取其第一字母B,称为B语言。1972年美国贝尔实验室的DennisM.Ritchie为克服B语言的诸多不足,在B语言的基础上重新设计了一种语言,取其第二字母C,故称为C语言。信息工程学院1.3C++简史1980年贝尔实验室的BjarneStroustrup对C语言进行了扩充,推出了“带类的C”,多次修改后起名为C++。以后又经过不断的改进,发展成为今天的C++。C++改进了C的不足之处,支持面向对象的程序设计,在改进的同时保持了C的简洁性和高效性。C++作为一种面向对象程序设计语言,具有对象、类、消息等概念,同时支持面向对象技术的抽象性、封装性、继承性和多态性。
本文标题:Chap01_面向对象编程基础
链接地址:https://www.777doc.com/doc-3323269 .html