面向对象的分析与设计课件基础篇教学文案_第1页
面向对象的分析与设计课件基础篇教学文案_第2页
面向对象的分析与设计课件基础篇教学文案_第3页
面向对象的分析与设计课件基础篇教学文案_第4页
面向对象的分析与设计课件基础篇教学文案_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

1、2022-2-151北京大学信息学院研究生课程面向对象的分析与设计面向对象的分析与设计课件基础篇2022-2-152北京大学信息学院研究生课程面向对象的分析与设计从程序设计方法的角度看,面向对象是一种新的程序设计从程序设计方法的角度看,面向对象是一种新的程序设计范型范型(paradigm)(paradigm),其基本思想是使用对象、类、继承、封,其基本思想是使用对象、类、继承、封装、聚合、关联、消息、多态性等基本概念来进行程序设装、聚合、关联、消息、多态性等基本概念来进行程序设计。计。自自2020世纪世纪8080年代以来,面向对象方法已深入到计算机软件年代以来,面向对象方法已深入到计算机软件领

2、域的几乎所有分支。它不仅是一些具体的软件开发技术领域的几乎所有分支。它不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行问题求解,以及如的关系,用什么观点来研究问题并进行问题求解,以及如何进行系统构造的软件方法学。从这个意义上讲:何进行系统构造的软件方法学。从这个意义上讲:面向对象方法是一种运用对象、类、继承、封装面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。的软件开发方法。1.1 1.1

3、 什么是面向对象什么是面向对象第第1 1章章 面向对象方法概论面向对象方法概论2022-2-153北京大学信息学院研究生课程面向对象的分析与设计面向对象方法的基本思想面向对象方法的基本思想一、从现实世界中客观存在的事物出发来构造系统一、从现实世界中客观存在的事物出发来构造系统强调直接以问题域(现实世界)中的事物为中心强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象为系统中的对象,作为系统的特征,把它们抽象为系统中的对象,作为系统的基本构成单位。这可以使系统直接映射问题基本构成单位。这可以使系统直接映射

4、问题域,域,保持问题域中事物及其相互关系的本来面貌。保持问题域中事物及其相互关系的本来面貌。二、充分运用人类日常的思维方法二、充分运用人类日常的思维方法强调运用人类在日常的逻辑思维中经常采用的思想强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装方法与原则,例如抽象、分类、继承、聚合、封装、关联等等。这使得软件开发者能更有效地思考问、关联等等。这使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表题,并以其他人也能看得懂的方式把自己的认识表达出来。达出来。2022-2-154北京大学信息学院研究生课程面向对象的分析与设计主要特点:主要

5、特点:用用类类和和对象对象作为系统的基本构成单位。对象对应作为系统的基本构成单位。对象对应问题域中的事物,其问题域中的事物,其属性属性和和操作操作刻画了事物的静刻画了事物的静态特征和动态特征,它们之间的态特征和动态特征,它们之间的继承继承关系、关系、聚合聚合关系、关系、关联关联和和消息消息如实地表达了问题域中事物之如实地表达了问题域中事物之间实际存在的各种关系。间实际存在的各种关系。因此,无论系统的构成成分,还是通过这些成分因此,无论系统的构成成分,还是通过这些成分之间的关系而体现的系统结构,都可直接地映射之间的关系而体现的系统结构,都可直接地映射问题域。问题域。2022-2-155北京大学信

6、息学院研究生课程面向对象的分析与设计对问题域的认识(人)客观世界(问题域)计算机自然语言语言的鸿沟编程语言语言的过渡(人)编程(人)程序的理解和执行(机器)软件开发:对事物的认识和描述软件开发:对事物的认识和描述问题问题语言的鸿沟语言的鸿沟1.2 从认识论看面向对象方法的形成从认识论看面向对象方法的形成2022-2-156北京大学信息学院研究生课程面向对象的分析与设计计算机机器语言自然语言客观世界(问题域)语言的鸿沟语言的发展语言的发展鸿沟变窄鸿沟变窄程序的指令、数据、地址,都是由二进制的“0”和“1”构成的。离机器最近,能够直接地执行,然而没有丝毫形象的意义,离人类的思维最远。汇编语言以易理

7、解的符号表示指令、数据以及寄存器、地址等物理概念。稍稍适合人类的形象思维,但仍然相差很远。因为抽象层次太低,仍需考虑大量的机器细节。高级语言隐蔽了机器细节,使用有形象意义的命名和表达式,可以联系到程序所描述的具体事物。特别是结构化编程语结构化编程语言言更便于体现客观事物的结构和逻辑涵义,与人类的自然语言更接近,但仍有不少差距。面向对象语言能比较直接地反映客观世界的本来面目,并使软件开发人员能够运用人类认识事物所采用的一般思维方法来进行软件开发。2022-2-157北京大学信息学院研究生课程面向对象的分析与设计问题域测试编程计算机编程语言自然语言需求分析总体设计详细设计软件工程学的作用软件工程学

8、的作用传统的软件工程方法传统的软件工程方法分析与设计的鸿沟分析与设计概念及表示法的不一致2022-2-158北京大学信息学院研究生课程面向对象的分析与设计问题域问题域OOA计算机计算机自然语言面向对象编程语言OODOOPOOT软件工程学的作用软件工程学的作用面向对象的软件工程方法面向对象的软件工程方法2022-2-159北京大学信息学院研究生课程面向对象的分析与设计1.3 1.3 面向对象方法的基本概念与原则面向对象方法的基本概念与原则对象,类对象,类属性,操作属性,操作封装封装继承,一般继承,一般- -特殊结构特殊结构聚合,整体聚合,整体- -部分结构部分结构关联关联消息消息多态多态持久对象

9、,主动对象持久对象,主动对象2022-2-1510北京大学信息学院研究生课程面向对象的分析与设计对象对象是现实世界中是现实世界中某个实际存在的事某个实际存在的事物,它可以是有形物,它可以是有形的,比如一辆汽车的,比如一辆汽车,也可以是无形的,也可以是无形的,比如一项计划。,比如一项计划。对象是构成世界的对象是构成世界的一个独立单位。它一个独立单位。它具有自己的静态特具有自己的静态特征和动态特征。征和动态特征。属性属性是用来描述对象静态特是用来描述对象静态特征的一个数据项。征的一个数据项。操作操作是用来描述对象动态特是用来描述对象动态特征的一个动作序列。征的一个动作序列。对象标识对象标识就是对象

10、的名字,就是对象的名字,有有“外部标识外部标识”和和“内部标内部标识识”之分。之分。对象,属性,操作对象,属性,操作对象对象是系统中用来是系统中用来描述客观事物的一描述客观事物的一个实体,它是构成个实体,它是构成系统的一个基本单系统的一个基本单位。对象由一组属位。对象由一组属性和性和施加于这些属施加于这些属性一组操作构成。性一组操作构成。对象对象对象标识对象标识属性属性操作操作2022-2-1511北京大学信息学院研究生课程面向对象的分析与设计封装:封装:把对象的属性和操作结合成一个独立把对象的属性和操作结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。的系统单位,并尽可能隐蔽对象的内部细

11、节。属属性性操操作作报刊报刊A A报刊报刊B B钱箱钱箱报刊零售报刊零售款货清点款货清点顾顾客客封装的重要意义:封装的重要意义:使对象能够集中而完整地描述并对应一个使对象能够集中而完整地描述并对应一个具体的事物。具体的事物。体现了事物的相对独立性,使对象外部不体现了事物的相对独立性,使对象外部不能随意存取对象的内部数据,避免了外部能随意存取对象的内部数据,避免了外部错误对它的错误对它的“交叉感染交叉感染”。对象的内部的修改对外部的影响很小,减对象的内部的修改对外部的影响很小,减少了修改引起的少了修改引起的“波动效应波动效应”。由封装机由封装机制保证制保证 封装带来的问题:封装带来的问题:编程的

12、麻烦编程的麻烦执行效率的损失执行效率的损失 解决办法:解决办法:不强调严格封装,不强调严格封装,实行可见性控制。实行可见性控制。(混合型(混合型OOPLOOPL) 例如:例如:C+C+2022-2-1512北京大学信息学院研究生课程面向对象的分析与设计抽象,类,一般类,特殊类抽象,类,一般类,特殊类抽象与分类:抽象与分类:忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,叫做抽象。抽象是形成概念的基本手段。把具有共同性质的事物划分为一类,叫做分类。类类是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分。

13、类的作用是用来创建对象,对象是类的一个实例。对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象类名类名属性属性操作操作抽象抽象2022-2-1513北京大学信息学院研究生课程面向对象的分析与设计不同程度的抽象可得到不同层次的分类不同程度的抽象可得到不同层次的分类较多地较多地忽略事忽略事物之间物之间的差别的差别可得到可得到较一般较一般的类的类较多地较多地注意事注意事物之间物之间的差别的差别可得到可得到较特殊较特殊的类的类运输工具运输工具火车火车汽车汽车飞机飞机卡车卡车轿车轿车轮船轮船车辆车辆2022-2-1514北京大学信息学院研究生课程面向对象的分析与设计定义定义1:如果类如果类

14、A A具有类具有类B B的全部属性和全部操作,而且具的全部属性和全部操作,而且具有自己特有的某些属性或操作,则有自己特有的某些属性或操作,则A A叫做叫做B B的的特殊类特殊类,B B叫叫做做A A的的一般类一般类。一般类与特殊类又称。一般类与特殊类又称父类父类与与子类子类。定义定义2 2:如果类如果类A A的全部对象都是类的全部对象都是类B B的对象,而且类的对象,而且类B B中存中存在不属于类在不属于类A A的对象,则的对象,则A A是是B B的特殊类,的特殊类,B B是是A A的一般类。的一般类。可以证明,以上两种定义是等价的可以证明,以上两种定义是等价的一般类和特殊类的定义一般类和特殊

15、类的定义2022-2-1515北京大学信息学院研究生课程面向对象的分析与设计继承:继承:特殊类拥有其一般类的全部属性与操特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承。作,称作特殊类对一般类的继承。继承意味着继承意味着自动地拥有自动地拥有,或曰,或曰隐含地复制隐含地复制继承简化了继承简化了人们对事物人们对事物的认识和描的认识和描述,非常有述,非常有益于软件复益于软件复用,是用,是OOOO技技术提高软件术提高软件开发效率的开发效率的重要原因之重要原因之一。一。由继承机由继承机制保证制保证由一组具有继由一组具有继承关系的类所承关系的类所组成的结构称组成的结构称作作一般一般- -特殊特

16、殊结构结构。它是一。它是一个以类为结点个以类为结点,以继承关系,以继承关系为边的连通的为边的连通的有向图。有向图。继承关系的语义:继承关系的语义:“is a kind of”军人军人军官军官士兵士兵义务兵义务兵志愿兵志愿兵例例2022-2-1516北京大学信息学院研究生课程面向对象的分析与设计多继承:多继承:允许一个允许一个特殊类具有一个以上特殊类具有一个以上一般类的继承方式称作多继承一般类的继承方式称作多继承人员人员姓名姓名教职工教职工职称职称专业专业研究生研究生学号学号班级班级专业专业在职研究生在职研究生在职单位在职单位 例例:2022-2-1517北京大学信息学院研究生课程面向对象的分析

17、与设计聚合:聚合:是两个类之间的一个二元关系,它表示一个类的对象是两个类之间的一个二元关系,它表示一个类的对象实例以另一个类的对象实例作为其组成部分。实例以另一个类的对象实例作为其组成部分。聚合刻画了现实事物之间的构成关系或者拥有关系。聚合刻画了现实事物之间的构成关系或者拥有关系。部分对象部分对象整体对象嵌套对象嵌套对象整体对象部分对象部分对象整体对象对象指针或对象标识对象指针或对象标识两种聚合,两种实现方式:两种聚合,两种实现方式:紧密、固定的聚合关系紧密、固定的聚合关系例如汽车与发动机例如汽车与发动机松散、灵活的聚合关系松散、灵活的聚合关系例如公司与法律顾问例如公司与法律顾问聚合关系的语义

18、:聚合关系的语义:“has a”或或“is a part of”紧密、固定紧密、固定的聚合方式的聚合方式又称为又称为组合组合2022-2-1518北京大学信息学院研究生课程面向对象的分析与设计整体整体-部分结构:部分结构:聚合关系又称整体聚合关系又称整体-部分关系。由一组具有聚合关系的类所部分关系。由一组具有聚合关系的类所形成的结构称为形成的结构称为整体整体-部分结构部分结构。它是一个以类为结点,以。它是一个以类为结点,以聚合关系为边的连通有向图。聚合关系为边的连通有向图。例例公公 司司0*0*法律顾问法律顾问汽车发动机车身气缸111111*2022-2-1519北京大学信息学院研究生课程面向

19、对象的分析与设计关联:关联:两个或者多个类上的一个关系(即这些类的对象实两个或者多个类上的一个关系(即这些类的对象实例集合的笛卡儿积的一个子集合),其中的元素提例集合的笛卡儿积的一个子集合),其中的元素提供了被开发系统的应用领域中一组有意义的信息。供了被开发系统的应用领域中一组有意义的信息。 城市城市* * *有航线有航线 城市之间有航线城市之间有航线教教 师师学学 生生* *1 1指导论文指导论文 教师与被指导的学生教师与被指导的学生例:例:2022-2-1520北京大学信息学院研究生课程面向对象的分析与设计用集合论的观点和系统需求讨论关联概念用集合论的观点和系统需求讨论关联概念 关联是两个

20、或者多个类上的一个关系,其中的元素提关联是两个或者多个类上的一个关系,其中的元素提供了被开发系统的应用领域中一组有意义的信息。供了被开发系统的应用领域中一组有意义的信息。 例:设例:设A和和B是两个类,它们的对象实例集合是是两个类,它们的对象实例集合是A=a1,a2,anB=b1,b2,bmA和和B的笛卡儿积的笛卡儿积AB= , , , , , , 这个笛卡儿积集合中这个笛卡儿积集合中有有n m个元素,它们个元素,它们可以组合成可以组合成2( n m)个个子集合。子集合。但是只有某个子集合但是只有某个子集合中的元素提供了被开中的元素提供了被开发系统的应用领域中发系统的应用领域中一组有意义的信息

21、时一组有意义的信息时,才有必要把它定义,才有必要把它定义为系统中的一个关联为系统中的一个关联。2022-2-1521北京大学信息学院研究生课程面向对象的分析与设计例如:在一个教学管理系统中例如:在一个教学管理系统中有教师、学生、教务员课程等类。有教师、学生、教务员课程等类。系统中需要表明每一门课程由哪位教师承担、有哪些学生系统中需要表明每一门课程由哪位教师承担、有哪些学生选修,因此需要在教师和课程之间定义一个关联,在学生选修,因此需要在教师和课程之间定义一个关联,在学生和课程之间也定义一个关联。和课程之间也定义一个关联。该系统的教务员要为学生做注册、登记成绩等工作,但是该系统的教务员要为学生做

22、注册、登记成绩等工作,但是不需要区别是哪个教务员为哪个学生做的,因此就不需要不需要区别是哪个教务员为哪个学生做的,因此就不需要在教务员和学生这两个类之间定义关联。在教务员和学生这两个类之间定义关联。 教师教师课程课程学生学生教务员教务员callcall1*教务员教务员2022-2-1522北京大学信息学院研究生课程面向对象的分析与设计消息:消息:消息是向对象发出的服务请求消息是向对象发出的服务请求 目前在大部分面向对象的编程语言中,消息其实就目前在大部分面向对象的编程语言中,消息其实就是函数(或过程)调用。是函数(或过程)调用。但是,函数调用只是实现消息的方式之一,上述理解但是,函数调用只是实

23、现消息的方式之一,上述理解只适合于顺序系统只适合于顺序系统更一般的定义:更一般的定义:消息是对象之间在一次交互中所传送的信息消息是对象之间在一次交互中所传送的信息 2022-2-1523北京大学信息学院研究生课程面向对象的分析与设计教师教师课程课程学生学生教务员教务员callcall1*纠正一种误解纠正一种误解认为在任何两个类之间只有存在关联才认为在任何两个类之间只有存在关联才可能存在消息。可能存在消息。实际上,关联和消息是两个截然不同的概念,二者是相互实际上,关联和消息是两个截然不同的概念,二者是相互独立的。独立的。教务员教务员call2022-2-1524北京大学信息学院研究生课程面向对象

24、的分析与设计多态:多态:多态是指同一个命名可具有不同的语义。多态是指同一个命名可具有不同的语义。OOOO方法中,常方法中,常指在一般类中定义的属性或操作被特殊类继承之后,可指在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。以具有不同的数据类型或表现出不同的行为。实现机制:实现机制:重写(重写(override)在特殊类中对继承来的属性或操作重在特殊类中对继承来的属性或操作重新定义其实现;新定义其实现;动态绑定(动态绑定(dynamic binding)在运行时根据对象接收在运行时根据对象接收的消息动态地确定要连接哪一段操作代码;的消息动态地确定要连接哪一段

25、操作代码;类属(类属(generic)操作参量的类型可以是参数化的。操作参量的类型可以是参数化的。2022-2-1525北京大学信息学院研究生课程面向对象的分析与设计其他:其他:持久对象:持久对象:在程序运行结束后仍能继续保存的对象在程序运行结束后仍能继续保存的对象超出了程序运行时间,跨越了内外存空间超出了程序运行时间,跨越了内外存空间实现途径:支持持久对象的实现途径:支持持久对象的OOPL,OO-DBMS主动对象:主动对象:至少有一个操作不需要接收消息就能主动执至少有一个操作不需要接收消息就能主动执行的对象。行的对象。描述具有主动行为的事物描述具有主动行为的事物描述并发执行的多个控制流描述并

26、发执行的多个控制流2022-2-1526北京大学信息学院研究生课程面向对象的分析与设计面向机器面向代数面向过程面向数据面向人面向文件面向信息面向应用面向功能面向数据流 面向对象是软件方法学的返朴归真面向对象是软件方法学的返朴归真软件科学的发展历程中软件科学的发展历程中出现过许多出现过许多“面向面向”软件开发从过分专业化的方法、规则和技巧中回到了客观世界,回到了人们的日常思维,是软件理论的返朴归真。面向对象面向对象2022-2-1527北京大学信息学院研究生课程面向对象的分析与设计1. 雏形阶段雏形阶段60年代挪威计算中心开发的年代挪威计算中心开发的Simula67面向对象语言的先面向对象语言的

27、先驱和第一个里程碑(首先引入了类的概念和继承机制)。驱和第一个里程碑(首先引入了类的概念和继承机制)。70年代年代CLU、并发、并发Pascal、Ada和和Modula-2等语言对抽象数据等语言对抽象数据类型理论的发展起到重要作用(支持数据与操作的封装)。类型理论的发展起到重要作用(支持数据与操作的封装)。犹他大学的博士生犹他大学的博士生Alan Kay设计了一个实验性的语言设计了一个实验性的语言Flex。从从Simula 67中借鉴了许多概念,如类、对象、继承等。中借鉴了许多概念,如类、对象、继承等。1972年年Palo Alno研究中心(研究中心(PARC)发布了)发布了Smalltalk

28、-72,其,其中正式使用了中正式使用了“面向对象面向对象”这个术语。这个术语。Smalltalk的问世标志着面向对象程序设计方法的正式形成。的问世标志着面向对象程序设计方法的正式形成。但是这个时期的但是这个时期的Smalltalk语言还不够完善语言还不够完善1.4 OO1.4 OO方法的发展历史与现状方法的发展历史与现状2022-2-1528北京大学信息学院研究生课程面向对象的分析与设计PARCPARC先后发布了先后发布了Smalltalk-72Smalltalk-72,7676,7878等版本,直至等版本,直至19811981年推出该语言最完善的版本年推出该语言最完善的版本Smalltalk

29、-80Smalltalk-80。Smalltalk-80Smalltalk-80的问世被今认为是面向对象语言发展史上最的问世被今认为是面向对象语言发展史上最重要的里程碑。迄今绝大部分面向对象的基本概念及其支重要的里程碑。迄今绝大部分面向对象的基本概念及其支持机制在持机制在Smalltalk-80Smalltalk-80中都已具备。它是第一个完善的、中都已具备。它是第一个完善的、能够实际应用的面向对象语言。能够实际应用的面向对象语言。但是,但是,SmalltalkSmalltalk开始几年的应用不够广泛,原因是:开始几年的应用不够广泛,原因是: 一种新的软件方法学被广泛接受需要一定的时间。一种新

30、的软件方法学被广泛接受需要一定的时间。 商品化软件开发工作到商品化软件开发工作到8787年才开始进行。年才开始进行。 追求纯追求纯OOOO的宗旨使许多软件开发人员感到不便。的宗旨使许多软件开发人员感到不便。 2.2.完善阶段完善阶段2022-2-1529北京大学信息学院研究生课程面向对象的分析与设计3.3.繁荣阶段繁荣阶段自自8080年代中期到年代中期到9090年代,是面向对象语言走向繁荣的阶段。年代,是面向对象语言走向繁荣的阶段。其主要表现是大批比较实用的其主要表现是大批比较实用的OOPLOOPL的涌现,例如的涌现,例如 C+C+、Objective-CObjective-C、Object

31、PascalObject Pascal、CLOSCLOS(Common Lisp Common Lisp Object SystemObject System)、)、EiffelEiffel、ActorActor等。等。OOOO编程语言分为编程语言分为纯纯OOOO语言语言和和混合型混合型OOOO语言语言混合型语言是在传统的过程式语言基础上增加混合型语言是在传统的过程式语言基础上增加OOOO语言成分,语言成分,在实用性方面具有更大的优势。在实用性方面具有更大的优势。此时的纯此时的纯OOOO语言也比较重视实用性。语言也比较重视实用性。2022-2-1530北京大学信息学院研究生课程面向对象的分析与

32、设计4 4、发展到软件生存周期前期阶段、发展到软件生存周期前期阶段计算机软件领域的很多新计算机软件领域的很多新的方法与技术都有这样的的方法与技术都有这样的发展经历,例如:结构化发展经历,例如:结构化方法,形式化方法,软件方法,形式化方法,软件复用。复用。与其他方法相比,面向对与其他方法相比,面向对象的方法与技术发展到软象的方法与技术发展到软件生命期的前期阶段有着件生命期的前期阶段有着更为深刻的意义。更为深刻的意义。当前:几乎覆盖计算机软件当前:几乎覆盖计算机软件领域的所有分支领域的所有分支面向对象的编程语言面向对象的编程语言面向对象的分析面向对象的分析面向对象的设计面向对象的设计面向对象的软件

33、测试面向对象的软件测试面向对象的软件维护面向对象的软件维护面向对象的图形用户界面面向对象的图形用户界面面向对象的数据库面向对象的数据库面向对象的数据结构面向对象的数据结构面向对象的智能程序设计面向对象的智能程序设计面向对象的软件开发环境面向对象的软件开发环境面向对象的体系结构面向对象的体系结构许多新领域以面向对许多新领域以面向对象理论为基础,或作象理论为基础,或作为主要技术为主要技术软件体系结构(软件体系结构(software architecture)领域工程(领域工程(domain engineering)设计模式(设计模式(design patterns)基于构件的软件工程(基于构件的软

34、件工程(CBSE)智能代理(智能代理(agent)面向服务的体系结构(面向服务的体系结构(SOA)面向对象方法从编程发展到面向对象方法从编程发展到设计、分析,进而发展到整设计、分析,进而发展到整个软件生存周期。个软件生存周期。2022-2-1531北京大学信息学院研究生课程面向对象的分析与设计5. 最新发展最新发展编程语言编程语言语言语言 + 类库类库 + 可视化编程环境可视化编程环境例如:例如:Visual C+, Visual Basic, Delhpi分析与设计方法分析与设计方法走向统一,形成统一建模语言走向统一,形成统一建模语言UML结束各种方法的概念及表示法不一致的局面结束各种方法的

35、概念及表示法不一致的局面2022-2-1532北京大学信息学院研究生课程面向对象的分析与设计在软件生存周期全过程运用面向对象方法在软件生存周期全过程运用面向对象方法L.M.Northrop:“L.M.Northrop:“尽管面向对象语言正取得令人振奋的发展,但编程并尽管面向对象语言正取得令人振奋的发展,但编程并不是软件开发问题的主要根源。需求分析与设计问题更为普遍并且更不是软件开发问题的主要根源。需求分析与设计问题更为普遍并且更值得解决。因此面向对象开发技术的焦点不应该只对准编程阶段,而值得解决。因此面向对象开发技术的焦点不应该只对准编程阶段,而应更全面地对准软件工程的其他阶段。面向对象方法真

36、正意义深远的应更全面地对准软件工程的其他阶段。面向对象方法真正意义深远的目标是它适合于解决分析与设计期间的复杂性并实现分析与设计的复目标是它适合于解决分析与设计期间的复杂性并实现分析与设计的复用。面向对象的开发不仅仅是编程,必须在整个软件生存周期采用一用。面向对象的开发不仅仅是编程,必须在整个软件生存周期采用一种全新的方法,这一观点已被人们所接受。种全新的方法,这一观点已被人们所接受。软件工程百科全书软件工程百科全书纽约,纽约,19941994面向对象的分析面向对象的设计面向对象的编程面向对象的测试面向对象的软件维护2022-2-1533北京大学信息学院研究生课程面向对象的分析与设计第第2 2

37、章章 不同的分析与设计方法不同的分析与设计方法几种典型的几种典型的建模方法建模方法功能分解法功能分解法结构化方法结构化方法信息建模法信息建模法面向对象方法面向对象方法方法的比较方法的比较对问题域的不对问题域的不同映射同映射以不同的概念以不同的概念构成系统模型构成系统模型什么是什么是OOA什么是什么是OODOO方法的主要优点方法的主要优点几种典型的几种典型的OO方法方法从软件系统建从软件系统建模面临的难题模面临的难题看面向对象方看面向对象方法的优势法的优势Booch方法方法Coad-Yourdon方法方法Jacobson方法方法(OOSE)Rumbaugh方法方法(OMT)本章内容结构本章内容结

38、构2022-2-1534北京大学信息学院研究生课程面向对象的分析与设计历史上几种典型的建模方法历史上几种典型的建模方法2.1 功能分解法功能分解法(function decomposition)以系统需要提供的功能为中心来组织系统。首先定义各种功能,然后把功能分解为子功能对较大的子功能进一步分解,直到可给出明确的定义。根据功能子功能的需要设计数据结构。定义功能/子功能之间的接口。没有明确地区分分析与设计没有明确地区分分析与设计 功能 功能 功能 系统 子功能子功能子功能子功能分解分解分解分解分解分解建模过程:建模过程:层层进行功能分解层层进行功能分解2022-2-1535北京大学信息学院研究生

39、课程面向对象的分析与设计功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块得到的系统模型:得到的系统模型:由模块及其接口构成由模块及其接口构成优点与缺点优点与缺点: :直接地反映用户的需求,所以工作很容易开始。不能直接地映射问题域,很难检验结果的正确性。对需求变化的适应能力很差。局部的错误和修改很容易产生全局性的影响。2022-2-1536北京大学信息学院研究生课程面向对象的分析与设计2.2 结构化方法结构化方法结构化分析(结构化分析(structured analysis,SA)结构

40、化设计(结构化设计(structured design,SD) 结构化分析结构化分析又称数据流法又称数据流法,其基本策略是跟踪数据流,即其基本策略是跟踪数据流,即研究问题域中数据如何流动,以及在各个环节上进行何种研究问题域中数据如何流动,以及在各个环节上进行何种处理,从而发现数据流和加工。得到的分析模型是数据流处理,从而发现数据流和加工。得到的分析模型是数据流图(图(DFD),主要模型元素是),主要模型元素是数据流数据流、加工加工、文件文件及及端点端点,外加,外加处理说明处理说明和和数据字典数据字典。结构化设计结构化设计与功能分解法基本相同,基于模块的概念建立与功能分解法基本相同,基于模块的概

41、念建立设计模型,分为概要设计和详细设计。设计模型,分为概要设计和详细设计。概要设计:概要设计:确定系统中包含哪些模块以及模块之间的调确定系统中包含哪些模块以及模块之间的调用关系,得到模块结构图(用关系,得到模块结构图(MSD)。)。详细设计:详细设计:描述每个模块内部的数据结构和操作流程。描述每个模块内部的数据结构和操作流程。2022-2-1537北京大学信息学院研究生课程面向对象的分析与设计数据流数据流加工加工文件文件起点起点处理说明处理说明数据词典数据词典优点:优点:有严格的法则,强调研究问题域。有严格的法则,强调研究问题域。缺点:缺点:仍然是间接映射问题域;仍然是间接映射问题域;与结构化

42、设计的概念不一致,从分析与结构化设计的概念不一致,从分析到设计的过渡比较困难;到设计的过渡比较困难;数据流和加工的数量太多,引起分析数据流和加工的数量太多,引起分析文档的膨胀。文档的膨胀。终点终点2022-2-1538北京大学信息学院研究生课程面向对象的分析与设计2.3 信息建模法(信息建模法(information modeling)由实体由实体-关系法(关系法(E-R方法)发展而来。方法)发展而来。核心概念是核心概念是实体实体和和关系关系。实体描述问题域中的事物,关系描。实体描述问题域中的事物,关系描述事物之间在数据方面的联系,都可以带有述事物之间在数据方面的联系,都可以带有属性属性。发展

43、之后的方法也把实体称作发展之后的方法也把实体称作对象对象,并使用了,并使用了类型类型和和子类型子类型的概念,作为实体(对象)的抽象描述。的概念,作为实体(对象)的抽象描述。有人也称之为面向对象方法,但有以下差别:有人也称之为面向对象方法,但有以下差别:1.强调的重点是信息建模和状态建模,而不是对象建模。2.没有把对实体属性所进行的操作封装到实体对象中。3.只有属性的继承,不支持操作的继承。4.没有采用消息通讯。实体实体属性属性属性属性属性属性属性属性关系关系实体实体mnE-R 图图信息模型信息模型 mn对象对象属性属性关系关系属性属性对象对象属性属性2022-2-1539北京大学信息学院研究生

44、课程面向对象的分析与设计2.4 面向对象方法面向对象方法面向对象的分析(面向对象的分析(OOA)面向对象的设计(面向对象的设计(OOD)运用对象、类、继承、封装、聚合、关联、消息、多态性运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统。等概念来构造系统。把问题域中的事物抽象为对象,作为系统的基本构成单位把问题域中的事物抽象为对象,作为系统的基本构成单位其属性和操作刻画了事物的静态特征和动态特征其属性和操作刻画了事物的静态特征和动态特征完整完整地刻画了问题域中事物。地刻画了问题域中事物。用类作为对象的抽象描述,建立它们之间的继承、聚合、用类作为对象的抽象描述,建立它们之间的继承

45、、聚合、关联、消息等关系关联、消息等关系如实地表达了问题域中事物之间的如实地表达了问题域中事物之间的各种关系。各种关系。封装、继承、聚合、关联、消息通讯等原则符合人类的日封装、继承、聚合、关联、消息通讯等原则符合人类的日常思维常思维使系统的复杂性得到控制。使系统的复杂性得到控制。因此,得到的系统模型可以直接映射问题域。因此,得到的系统模型可以直接映射问题域。2022-2-1540北京大学信息学院研究生课程面向对象的分析与设计不同的建模方法不同的建模方法 体现于体现于从不同的概念出发来认识问题域用不同的概念进行系统构造系统对现实世界的不同映射 信息建模法 面向对象方法功能功能/ /子功能子功能功

46、能接口功能接口功能分解法数据流数据流加工加工 结构化方法间接映射间接映射间接映射间接映射半直接映射半直接映射直接映射直接映射2022-2-1541北京大学信息学院研究生课程面向对象的分析与设计审批审批不同的方法对同一应用实例(电话安装业务系统)的不同效果不同的方法对同一应用实例(电话安装业务系统)的不同效果结构化分析结构化分析数据流和加工数据流和加工登记登记安装安装开通开通问题:问题:不是直接映射问题域,与问题域事物相关的数据和操作不是围绕这些事物不是直接映射问题域,与问题域事物相关的数据和操作不是围绕这些事物来组织的,而是分散在数据流和加工中;来组织的,而是分散在数据流和加工中;经常发生信息

47、膨胀经常发生信息膨胀模型中的多个数据流,实现中其实只是一项数据;模型中的多个数据流,实现中其实只是一项数据;分析模型难以与设计模型及源程序对应。分析模型难以与设计模型及源程序对应。用户登记用户登记表表用户登记用户登记表表用户登记用户登记表表用户登记用户登记表表文件文件用户信用户信息息2022-2-1542北京大学信息学院研究生课程面向对象的分析与设计面向对象方法面向对象方法对象及其关系对象及其关系用户登记表用户名登记人审批人施工队号码登记审批安装开通用户营业员主管人施工队机房1*1* *1*callcallcallcall个人用户团体用户帐单帐单项1* *1*call直接映射了问题域直接映射了

48、问题域中的实际事物;中的实际事物;能够与程序形成良能够与程序形成良好的对应。好的对应。2022-2-1543北京大学信息学院研究生课程面向对象的分析与设计顾名思义,面向对象的分析(顾名思义,面向对象的分析(OOA),就是运用面向对象),就是运用面向对象方法进行系统分析。方法进行系统分析。首先,首先,OOA是分析,是软件生存周期的一个阶段,具有一是分析,是软件生存周期的一个阶段,具有一般分析方法共同具有的内容、目标及策略;般分析方法共同具有的内容、目标及策略;但是,但是,它强调运用面向对象方法进行分析,用面向对象的它强调运用面向对象方法进行分析,用面向对象的概念和表示法表达分析结果。概念和表示法

49、表达分析结果。基本任务:基本任务:运用面向对象的概念对问题域进行分析和理解运用面向对象的概念对问题域进行分析和理解,将问题域中与系统责任有关的事物抽象为系统中的类和,将问题域中与系统责任有关的事物抽象为系统中的类和对象,定义这些类和对象的属性与操作,以及它们之间所对象,定义这些类和对象的属性与操作,以及它们之间所形成的各种关系。形成的各种关系。最终目标:最终目标:建立一个满足用户需求、直接映射问题域的建立一个满足用户需求、直接映射问题域的OOA模型模型及其及其规约规约。2.4.1 什么是什么是OOA问题:问题: OOA是需求分析还是系统分析?是需求分析还是系统分析? 2022-2-1544北京

50、大学信息学院研究生课程面向对象的分析与设计2.4.2 什么是什么是OOD不同时期有不同内容及特点不同时期有不同内容及特点早期(早期(80年代末期之前)年代末期之前)OOD的特点:的特点:1、不是基于、不是基于OOA的的大多基于结构化分析结果(数据流图)大多基于结构化分析结果(数据流图)2、是、是OO编程方法的延伸编程方法的延伸多数方法与编程语言有关,特别受多数方法与编程语言有关,特别受Ada影响很大影响很大3、不是纯、不是纯OO的的对某些对某些OO概念(如继承)缺少支持,概念(如继承)缺少支持,搀杂一些非搀杂一些非OO 概念(如数据流、包、模块等)概念(如数据流、包、模块等)4、不是只针对软件

51、生存周期的设计阶段、不是只针对软件生存周期的设计阶段OOD中的中的“D”指的是指的是Design 或或 Development多少涉及分析问题(如识别问题域的对象),但很不彻底多少涉及分析问题(如识别问题域的对象),但很不彻底早期的早期的OOD可看作现今可看作现今OOA&D方法的雏形方法的雏形2022-2-1545北京大学信息学院研究生课程面向对象的分析与设计定义:定义:面向对象的设计(面向对象的设计(OOD)就在是)就在是OOA模型基础上运用面模型基础上运用面向对象方法进行系统设计,目标是产生一个符合具体实向对象方法进行系统设计,目标是产生一个符合具体实现条件的现条件的OOD模型。模

52、型。现今(现今(90年代以后)年代以后)OOD的特点:的特点:1. 以面向对象的分析为基础,一般不依赖结构化分析。以面向对象的分析为基础,一般不依赖结构化分析。2. 与相应的与相应的OOA方法共同构成一种方法共同构成一种OOA&D方法体系。方法体系。OOA和和OOD采用一致的概念与原则,但属于软件生存周采用一致的概念与原则,但属于软件生存周期的不同阶段,有不同的目标及策略。期的不同阶段,有不同的目标及策略。3. 较全面地体现面向对象方法的概念与原则。较全面地体现面向对象方法的概念与原则。4. 大多数方法独立于编程语言,通过面向对象的分析与大多数方法独立于编程语言,通过面向对象的分析与设

53、计所得到的系统模型可以由不同的编程语言实现。设计所得到的系统模型可以由不同的编程语言实现。2022-2-1546北京大学信息学院研究生课程面向对象的分析与设计软件建模面临的挑战软件建模面临的挑战1、问题域和系统责任复杂性日益增长、问题域和系统责任复杂性日益增长问题域问题域(problem domain):被开发系统的应用领域,即在现实世界中由这个系统进行处理的业务范围。系统责任系统责任(system responsibilities):所开发的系统应该具备的职能。随着硬件性能的提高和价格的下降,软件系统所面临的问题域和系统责任越来越复杂,因此系统也越来越庞大。 2、交流问题、交流问题软件系统的

54、开发需要各类人员之间频繁交流。领域的多样性使软件工程中的交流问题比与其他工程更为突出。 有效的交流需要一种彼此都能理解的共同语言,否则将使彼此的思想难以沟通,很容易隐藏下许多错误。 2.4.3 OO方法的主要优点方法的主要优点2022-2-1547北京大学信息学院研究生课程面向对象的分析与设计3 3、需求的不断变化、需求的不断变化用户因素,竞争因素,经费因素用户因素,竞争因素,经费因素开发者必须接受和适应需求变化开发者必须接受和适应需求变化易变部分和稳定部分:易变部分和稳定部分:功能:最易变功能:最易变外部接口:很易变外部接口:很易变属性:较易变属性:较易变对象:较稳定对象:较稳定4 4、软件

55、复用的要求、软件复用的要求复用级别提高复用级别提高分析结果复用分析结果复用要求分析模型的基本成分可以在多个系统中复用要求一个分析模型可以在多种条件下设计和实现需求需求变化变化系统局部系统局部修改修改受影响受影响部分修改部分修改产生产生新错误新错误延长开发延长开发时间时间2022-2-1548北京大学信息学院研究生课程面向对象的分析与设计面向对象方法的优势面向对象方法的优势对问题域和系统责任的复杂性具有较强的处理能力对问题域和系统责任的复杂性具有较强的处理能力从问题域中的实际事物出发来构造系统模型,使系统模型能直接地映从问题域中的实际事物出发来构造系统模型,使系统模型能直接地映射问题域;继承、封

56、装、聚合等概念使系统的复杂性得到有效的控制。射问题域;继承、封装、聚合等概念使系统的复杂性得到有效的控制。提供了便于各类相关人员交流共同语言提供了便于各类相关人员交流共同语言使用与问题域一致的概念及术语,体现人类的日常思维方式,为改进使用与问题域一致的概念及术语,体现人类的日常思维方式,为改进各类人员之间的交流提供了最基本的条件。各类人员之间的交流提供了最基本的条件。 对需求的变化具有较强的适应性对需求的变化具有较强的适应性按封装原则把系统中最容易变化的因素隔离起来,系统的各个单元成按封装原则把系统中最容易变化的因素隔离起来,系统的各个单元成分之间接口很少,把需求变化所引起的影响局部化。分之间

57、接口很少,把需求变化所引起的影响局部化。为实现分析与设计级别的软件复用提供了有力支持为实现分析与设计级别的软件复用提供了有力支持OO方法的封装、继承、聚合等原则,对象的完整性、独立性以及与问方法的封装、继承、聚合等原则,对象的完整性、独立性以及与问题域的良好对应,使之非常有利于软件复用。题域的良好对应,使之非常有利于软件复用。贯穿软件生存周期全过程的一致性贯穿软件生存周期全过程的一致性从从OOA开始使用与问题域一致的概念、词汇、原则及表示法,这种一开始使用与问题域一致的概念、词汇、原则及表示法,这种一致性保持到设计、编程、测试、维护等各个阶段,对于整个软件生存致性保持到设计、编程、测试、维护等

58、各个阶段,对于整个软件生存周期的开发、维护及管理活动都具有重要的意义。周期的开发、维护及管理活动都具有重要的意义。2022-2-1549北京大学信息学院研究生课程面向对象的分析与设计Booch方法方法Coad-Yourdon方法方法Firesmith方法方法Jacobson方法方法(OOSE) Martin-Odell方法方法Rumbaugh方法方法(OMT)Seidewitz-Stark方法方法Shlaer-Mellor方法方法Wirfs-Brock方法方法2.4.4 几种典型的几种典型的OO方法方法方法的异同方法的异同体现于:体现于:概念概念表示法表示法系统模型系统模型开发过程开发过程可用

59、性可用性技术支持技术支持2022-2-1550北京大学信息学院研究生课程面向对象的分析与设计Booch方法方法必要时使用必要时使用用于分析和设计用于分析和设计6种模型图种模型图基本图基本图通常不可缺少通常不可缺少类图类图对象图对象图模块图模块图进程图进程图只用于设计只用于设计补充图补充图状态转移图状态转移图交互图交互图模型图模型图2022-2-1551北京大学信息学院研究生课程面向对象的分析与设计开发期望行为模型(分析)建立体系结构(设计)逐渐形成实现(演化)建立核心需求(概念化)(a) 宏过程识别类和对象识别类和对象的语义识别类和对象的关系说明类和对象的接口和实现(b) 微过程管理交付后的演

60、化(维护)特点:特点:思想活跃,开拓与创新思想活跃,开拓与创新可操作性不够强可操作性不够强类图与对象图并存类图与对象图并存过程过程Booch方法(续)方法(续)2022-2-1552北京大学信息学院研究生课程面向对象的分析与设计主题层主题层类及对象层类及对象层结构层结构层属性层属性层服务层服务层OOA模型的模型的5个层次个层次主题层主题层类及对象层类及对象层结构层结构层属性层属性层服务层服务层人机交互部分(HIC)问题域部分(PDC)任务管理部分(TMC)数据管理部分(DMC)OOD模型的模型的5个层次和个层次和4个部分个部分Coad/Yourdon方法方法特点:特点:概念简练,过程清晰概念简练,过程清晰强调

温馨提示

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

评论

0/150

提交评论