版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象的分析与设计课件基础篇1面向对象的分析与设计课件基础篇1第一部分:基础篇面向对象的分析与设计第一部分:基础篇面向对象的分析与设计2主要知识点1、什么是面向对象,它的基本思想和主要特点。2、从认识论个角度,看面向对象方法的形成和主要优势。3、面向对象方法中的对象、类、属性、操作、继承、封装、聚合、关联、消息、多态性等基本概念的确切含义,以及它们在系统构造中所起的作用。4、面向对象方法的发展历史。第1章面向对象方法概论3主要知识点第1章面向对象方法概论3从程序设计方法的角度看,面向对象是一种新的程序设计范型(paradigm),其基本思想是使用对象、类、继承、封装、聚合、关联、消息、多态性等基本概念来进行程序设计。自20世纪80年代以来,面向对象方法已深入到计算机软件领域的几乎所有分支。它不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行问题求解,以及如何进行系统构造的软件方法学。从这个意义上讲:面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。1.1什么是面向对象第1章面向对象方法概论4从程序设计方法的角度看,面向对象是一种新的程序设计范型(pa面向对象方法的基本思想一、从现实世界中客观存在的事物出发来构造系统强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象为系统中的对象,作为系统的基本构成单位。这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌。二、充分运用人类日常的思维方法强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装、关联等等。这使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表达出来。5面向对象方法的基本思想一、从现实世界中客观存在的事物出发来构主要特点:用类和对象作为系统的基本构成单位。对象对应问题域中的事物,其属性和操作刻画了事物的静态特征和动态特征,它们之间的继承关系、聚合关系、关联和消息如实地表达了问题域中事物之间实际存在的各种关系。因此,无论系统的构成成分,还是通过这些成分之间的关系而体现的系统结构,都可直接地映射问题域。6主要特点:用类和对象作为系统的基本构成单位。对象对应问题域中对问题域的认识(人)客观世界(问题域)计算机自然语言语言的鸿沟编程语言语言的过渡(人)编程(人)程序的理解和执行(机器)软件开发:对事物的认识和描述问题——语言的鸿沟1.2从认识论看面向对象方法的形成7对问题域的认识(人)客观世界计算机自然语言语编程语言语言的过计算机机器语言自然语言客观世界(问题域)语言的鸿沟语言的发展——鸿沟变窄程序的指令、数据、地址,都是由二进制的“0”和“1”构成的。离机器最近,能够直接地执行,然而没有丝毫形象的意义,离人类的思维最远。汇编语言以易理解的符号表示指令、数据以及寄存器、地址等物理概念。稍稍适合人类的形象思维,但仍然相差很远。因为抽象层次太低,仍需考虑大量的机器细节。高级语言隐蔽了机器细节,使用有形象意义的命名和表达式,可以联系到程序所描述的具体事物。特别是结构化编程语言更便于体现客观事物的结构和逻辑涵义,与人类的自然语言更接近,但仍有不少差距。面向对象语言能比较直接地反映客观世界的本来面目,并使软件开发人员能够运用人类认识事物所采用的一般思维方法来进行软件开发。8计算机机器语言自然语言客观世界语言的鸿沟语言的发展——鸿沟变问题域测试编程计算机编程语言自然语言需求分析总体设计详细设计软件工程学的作用——传统的软件工程方法分析与设计的鸿沟分析与设计概念及表示法的不一致9问题域测试编程计算机编程语言自然语言需求总体详细软件工程学的问题域OOA计算机自然语言面向对象编程语言OODOOPOOT软件工程学的作用——面向对象的软件工程方法10问题域OOA计算机自然语言面向对象OODOOPOOT软件工程1.3面向对象方法的基本概念与原则对象,类属性,操作封装继承,一般-特殊结构聚合,整体-部分结构关联消息多态持久对象,主动对象……111.3面向对象方法的基本概念与原则对象,类11对象是现实世界中某个实际存在的事物,它可以是有形的,比如一辆汽车,也可以是无形的,比如一项计划。对象是构成世界的一个独立单位。它具有自己的静态特征和动态特征。属性是用来描述对象静态特征的一个数据项。操作是用来描述对象动态特征的一个动作序列。对象标识就是对象的名字,有“外部标识”和“内部标识”之分。对象,属性,操作对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。对象由一组属性和施加于这些属性一组操作构成。对象对象标识属性操作12对象是现实世界中某个实际存在的事物,它可以是有形的,比如一辆对象(属性,操作,对象标识)要点:1、对象标识符2、属性3、服务注意点:1.一体性对象标识符、属性和服务2.区别三者的区别3.属性是对对象的静态描述.4.服务是对对象的动态描述.外部是通过调用服务与对象取得联系.13对象(属性,操作,对象标识)要点:1、对象标识符类名,属性,服务的命名注意点
标识符(即名字)要达义。要简明,短小,符合人的思维习惯。类名宜用名词或动名词,属性名用名词或动名词,服务名用动词或动名词。14类名,属性,服务的命名注意点标识符(即名字)要达义。14类名属性服务PersonID,Name,Add,...GetID,GetName,ChID,ChName,...例:类课程的表示CourseCID,CName,Credet,Term,NoteGetID,GetName,GetCredit,GetNoteChID,ChName,ChCredit,ChNote类的表示(注意与对象的联系)
15类名属性服务PersonID,Name,Add,...对象(属性,操作,对象标识)对象属性服务人姓名、电话、性别、年龄、地址、编号等等获取姓名,获取地址,获取编号,获取电话,修改地址(图一)例题1:考虑对象“人”,具体描述为:对象属性服务课程课程名、编号、学时数、选课要求、任课教师等获取并修改课程名、编号、学时数、选课要求、任课教师等(图二)例题2:考虑对象“课程”,具体描述为:16对象(属性,操作,对象标识)对象属性服务人姓名、电话、性别、类与对象的关系
类对象抽象定义实例
例:模具由模具压出的工件学生学生王强模板应用模板产生的文件类型变量,如
C语言中的
int和intx;17类与对象的关系类封装:把对象的属性和操作结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。售报亭属性操作报刊A报刊B…钱箱报刊零售款货清点顾客封装的重要意义:使对象能够集中而完整地描述并对应一个具体的事物。体现了事物的相对独立性,使对象外部不能随意存取对象的内部数据,避免了外部错误对它的“交叉感染”。对象的内部的修改对外部的影响很小,减少了修改引起的“波动效应”。由封装机制保证
封装带来的问题:编程的麻烦执行效率的损失解决办法:不强调严格封装,实行可见性控制。(混合型OOPL)例如:C++18封装:把对象的属性和操作结合成一个独立的系统单位,并尽可能隐封装的优点:
数据独立(如每件事物都对应于一对象)
具有隐藏性和安全性(如银行的账户)
易于维护(由于数据独立,易于发现问题)封装的缺点:
编程麻烦,需要更多的输入输出函数。
执行效率的损失。解决办法:不强调严格封装,实行可见性控制。(混合型OOPL),如C++
19封装的优点:数据独立(如每件事物都对应于一对象)19抽象,类,一般类,特殊类抽象与分类:忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,叫做抽象。抽象是形成概念的基本手段。把具有共同性质的事物划分为一类,叫做分类。类是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分。类的作用是用来创建对象,对象是类的一个实例。对象对象对象对象对象对象对象对象类名属性操作抽象20抽象,类,一般类,特殊类抽象与分类:忽略事物的非本质特征,只不同程度的抽象可得到不同层次的分类较多地忽略事物之间的差别可得到较一般的类较多地注意事物之间的差别可得到较特殊的类运输工具火车汽车飞机卡车轿车轮船车辆21不同程度的抽象可得到不同层次的分类较多地忽略事物之间的差别可定义1:如果类A具有类B的全部属性和全部操作,而且具有自己特有的某些属性或操作,则A叫做B的特殊类,B叫做A的一般类。一般类与特殊类又称父类与子类。定义2:如果类A的全部对象都是类B的对象,而且类B中存在不属于类A的对象,则A是B的特殊类,B是A的一般类。——可以证明,以上两种定义是等价的一般类和特殊类的定义22定义1:如果类A具有类B的全部属性和全部操作,而且具有自己特继承:特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承。继承意味着自动地拥有,或曰隐含地复制继承简化了人们对事物的认识和描述,非常有益于软件复用,是OO技术提高软件开发效率的重要原因之一。由继承机制保证由一组具有继承关系的类所组成的结构称作一般-特殊结构。它是一个以类为结点,以继承关系为边的连通的有向图。继承关系的语义:“isakindof”军人军官士兵义务兵志愿兵例23继承:特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类多继承:允许一个特殊类具有一个以上一般类的继承方式称作多继承人员姓名············教职工职称专业············研究生学号班级专业············在职研究生在职单位
······
······例:24多继承:允许一个特殊类具有一个以上一般类的继承方式称作多继承聚合:是两个类之间的一个二元关系,它表示一个类的对象实例以另一个类的对象实例作为其组成部分。聚合刻画了现实事物之间的构成关系或者拥有关系。部分对象部分对象整体对象嵌套对象整体对象部分对象部分对象整体对象对象指针或对象标识两种聚合,两种实现方式:紧密、固定的聚合关系——例如汽车与发动机松散、灵活的聚合关系——例如公司与法律顾问聚合关系的语义:“hasa”或“isapartof”紧密、固定的聚合方式又称为组合25聚合:是两个类之间的一个二元关系,它表示一个类的对象实例以另整体-部分结构:聚合关系又称整体-部分关系。由一组具有聚合关系的类所形成的结构称为整体-部分结构。它是一个以类为结点,以聚合关系为边的连通有向图。例公司0‥*0‥*法律顾问汽车发动机车身气缸111111‥*26整体-部分结构:聚合关系又称整体-部分关系。由一组具有聚合关关联:两个或者多个类上的一个关系(即这些类的对象实例集合的笛卡儿积的一个子集合),其中的元素提供了被开发系统的应用领域中一组有意义的信息。城市**有航线
城市之间有航线教师学生*1指导论文
教师与被指导的学生例:27关联:两个或者多个类上的一个关系(即这些类的对象实例集合的笛用集合论的观点和系统需求讨论关联概念关联是两个或者多个类上的一个关系,其中的元素提供了被开发系统的应用领域中一组有意义的信息。例:设A和B是两个类,它们的对象实例集合是A={a1,a2,……,an}B={b1,b2,……,bm}A和B的笛卡儿积A×B={<a1,b1>,<a1,b2>,……<a1,bm><a2,b1>,<a2,b2>,……<a2,bm>……<an,b1>,<an,b2>,……<an,bm>}这个笛卡儿积集合中有n×m个元素,它们可以组合成2(n×m)个子集合。但是只有某个子集合中的元素提供了被开发系统的应用领域中一组有意义的信息时,才有必要把它定义为系统中的一个关联。28用集合论的观点和系统需求讨论关联概念关联是两个或者多个类上例如:在一个教学管理系统中有教师、学生、教务员课程等类。系统中需要表明每一门课程由哪位教师承担、有哪些学生选修,因此需要在教师和课程之间定义一个关联,在学生和课程之间也定义一个关联。该系统的教务员要为学生做注册、登记成绩等工作,但是不需要区别是哪个教务员为哪个学生做的,因此就不需要在教务员和学生这两个类之间定义关联。教师课程学生教务员«call»«call»1***教务员29例如:在一个教学管理系统中教师课程学生教务员«call»«c消息:消息是向对象发出的服务请求目前在大部分面向对象的编程语言中,消息其实就是函数(或过程)调用。但是,函数调用只是实现消息的方式之一,上述理解只适合于顺序系统更一般的定义:消息是对象之间在一次交互中所传送的信息30消息:消息是向对象发出的服务请求目前在大部分面向对象的编什么是消息
消息是向对象发出的服务请求1.对象标志2.服务标志3.输入信息4.输出信息消息的组成例:“请你把那本书拿给我!”对象标志:你服务标志:把那本书拿给我输入信息:那本书输出信息:书给我消息的作用1.提供类之间的动态联系2.对象通过消息对外提供服务注意:你不能直接拿书,而是通过发送消息请求服务.31什么是消息消息是向对象发出的服务请求1.对象标志消息的消息的执行流程:创建对象发送消息分析处理消息返回相应信息结束接受消息例11:对象A:打印机对象B:操作系统接受消息发送打印消息执行返回信息结束接受信息在例题中:对象标志:打印机,服务标志:打印输入信息:要打印的文件输出信息:打印结束分析两个对象打印机和操作系统之间的消息通信.32消息的执行流程:创建对象发送消息分析处理消息返回相应信息结束教师课程学生教务员«call»«call»1***纠正一种误解——认为在任何两个类之间只有存在关联才可能存在消息。实际上,关联和消息是两个截然不同的概念,二者是相互独立的。教务员«call»33教师课程学生教务员«call»«call»1***纠正一种误多态:多态是指同一个命名可具有不同的语义。OO方法中,常指在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。实现机制:·重写(override)——在特殊类中对继承来的属性或操作重新定义其实现;·动态绑定(dynamicbinding)——在运行时根据对象接收的消息动态地确定要连接哪一段操作代码;·类属(generic)——操作参量的类型可以是参数化的。34多态:多态是指同一个命名可具有不同的语义。OO方法中,常指在多态例:多边形边数顶点数据绘图XY轴向矩形x边数*顶点数据*绘图正多边形*顶点数据*绘图35多态例:多边形XY轴向矩形正多边形35其他:持久对象:在程序运行结束后仍能继续保存的对象超出了程序运行时间,跨越了内外存空间实现途径:支持持久对象的OOPL,OO-DBMS主动对象:至少有一个操作不需要接收消息就能主动执行的对象。描述具有主动行为的事物描述并发执行的多个控制流36其他:持久对象:主动对象:36面向机器面向代数面向过程面向数据面向人面向文件面向信息面向应用面向功能面向数据流
······面向对象是软件方法学的返朴归真软件科学的发展历程中出现过许多“面向”软件开发从过分专业化的方法、规则和技巧中回到了客观世界,回到了人们的日常思维,是软件理论的返朴归真。面向对象37面向机器面向对象是软件方法学的返朴归真软件科学的发展历程中出1.雏形阶段60年代挪威计算中心开发的Simula67——面向对象语言的先驱和第一个里程碑(首先引入了类的概念和继承机制)。70年代CLU、并发Pascal、Ada和Modula-2等语言对抽象数据类型理论的发展起到重要作用(支持数据与操作的封装)。犹他大学的博士生AlanKay设计了一个实验性的语言Flex。从Simula67中借鉴了许多概念,如类、对象、继承等。1972年PaloAlno研究中心(PARC)发布了Smalltalk-72,其中正式使用了“面向对象”这个术语。Smalltalk的问世标志着面向对象程序设计方法的正式形成。但是这个时期的Smalltalk语言还不够完善1.4OO方法的发展历史与现状381.雏形阶段1.4OO方法的发展历史与现状38PARC先后发布了Smalltalk-72,76,78等版本,直至1981年推出该语言最完善的版本Smalltalk-80。Smalltalk-80的问世被今认为是面向对象语言发展史上最重要的里程碑。迄今绝大部分面向对象的基本概念及其支持机制在Smalltalk-80中都已具备。它是第一个完善的、能够实际应用的面向对象语言。但是,Smalltalk开始几年的应用不够广泛,原因是:①一种新的软件方法学被广泛接受需要一定的时间。②商品化软件开发工作到87年才开始进行。③追求纯OO的宗旨使许多软件开发人员感到不便。2.完善阶段39PARC先后发布了Smalltalk-72,76,78等版本3.繁荣阶段自80年代中期到90年代,是面向对象语言走向繁荣的阶段。其主要表现是大批比较实用的OOPL的涌现,例如C++、Objective-C、ObjectPascal、CLOS(CommonLispObjectSystem)、Eiffel、Actor等。OO编程语言分为纯OO语言和混合型OO语言混合型语言是在传统的过程式语言基础上增加OO语言成分,在实用性方面具有更大的优势。此时的纯OO语言也比较重视实用性。403.繁荣阶段404、发展到软件生存周期前期阶段计算机软件领域的很多新的方法与技术都有这样的发展经历,例如:结构化方法,形式化方法,软件复用。与其他方法相比,面向对象的方法与技术发展到软件生命期的前期阶段有着更为深刻的意义。当前:几乎覆盖计算机软件领域的所有分支面向对象的编程语言面向对象的分析面向对象的设计面向对象的软件测试面向对象的软件维护面向对象的图形用户界面面向对象的数据库面向对象的数据结构面向对象的智能程序设计面向对象的软件开发环境面向对象的体系结构许多新领域以面向对象理论为基础,或作为主要技术软件体系结构(softwarearchitecture)领域工程(domainengineering)设计模式(designpatterns)基于构件的软件工程(CBSE)智能代理(agent)面向服务的体系结构(SOA)面向对象方法从编程发展到设计、分析,进而发展到整个软件生存周期。414、发展到软件生存周期前期阶段计算机软件领域的很多新的方法与5.最新发展编程语言——语言+类库+可视化编程环境例如:VisualC++,VisualBasic,Delhpi分析与设计方法走向统一,形成统一建模语言UML结束各种方法的概念及表示法不一致的局面425.最新发展42传统方法数据结构+算法=程序设计以对象为中心组织数据与操作数据对象的属性操作对象的操作类型与变量类与对象实例函数(过程)调用消息传送类型与子类型一般类与特殊类,继承构造类型整体-部分结构,聚合指针关联不同点思想观念:从对象出发认识问题域;构造策略:以对象作为构成系统的基本单位,将对象的数据与操作紧密结合;保证机制:由支持封装、继承、多态的机制保证其原则的实现。面向对象方法与传统方法的比较面向对象方法43传统方法数据结构+算法=程序设计以对象为中心组织数据与操作数在软件生存周期全过程运用面向对象方法L.M.Northrop:“尽管面向对象语言正取得令人振奋的发展,但编程并不是软件开发问题的主要根源。需求分析与设计问题更为普遍并且更值得解决。因此面向对象开发技术的焦点不应该只对准编程阶段,而应更全面地对准软件工程的其他阶段。面向对象方法真正意义深远的目标是它适合于解决分析与设计期间的复杂性并实现分析与设计的复用。面向对象的开发不仅仅是编程,必须在整个软件生存周期采用一种全新的方法,这一观点已被人们所接受。——《软件工程百科全书》纽约,1994面向对象的分析面向对象的设计面向对象的编程面向对象的测试面向对象的软件维护44在软件生存周期全过程运用面向对象方法L.M.Northrop第2章不同的分析与设计方法几种典型的建模方法功能分解法结构化方法信息建模法面向对象方法方法的比较对问题域的不同映射以不同的概念构成系统模型什么是OOA什么是OODOO方法的主要优点几种典型的OO方法从软件系统建模面临的难题看面向对象方法的优势Booch方法Coad-Yourdon方法Jacobson方法(OOSE)Rumbaugh方法(OMT)本章内容结构45第2章不同的分析与设计方法几种典型的方法的比较什么是OO历史上几种典型的建模方法2.1功能分解法(functiondecomposition)以系统需要提供的功能为中心来组织系统。首先定义各种功能,然后把功能分解为子功能对较大的子功能进一步分解,直到可给出明确的定义。根据功能/子功能的需要设计数据结构。定义功能/子功能之间的接口。没有明确地区分分析与设计
功能
功能
功能
系统子功能子功能子功能子功能分解分解分解……………………建模过程:层层进行功能分解46历史上几种典型的建模方法2.1功能分解法功能功功能模块功能模块功能模块功能模块功能模块功能模块功能模块功能模块功能模块功能模块得到的系统模型:由模块及其接口构成优点与缺点:直接地反映用户的需求,所以工作很容易开始。不能直接地映射问题域,很难检验结果的正确性。对需求变化的适应能力很差。局部的错误和修改很容易产生全局性的影响。47功能功能功能功能功能功能功能功能功能功能得到的系统模型:优点2.2结构化方法结构化分析(structuredanalysis,SA)结构化设计(structureddesign,SD)
结构化分析又称数据流法,其基本策略是跟踪数据流,即研究问题域中数据如何流动,以及在各个环节上进行何种处理,从而发现数据流和加工。得到的分析模型是数据流图(DFD),主要模型元素是数据流、加工、文件及端点,外加处理说明和数据字典。结构化设计与功能分解法基本相同,基于模块的概念建立设计模型,分为概要设计和详细设计。概要设计:确定系统中包含哪些模块以及模块之间的调用关系,得到模块结构图(MSD)。详细设计:描述每个模块内部的数据结构和操作流程。482.2结构化方法结构化分析又称数据流法,其基本策略是跟踪数数据流加工文件起点处理说明————————————————————————数据词典————————————————————————优点:有严格的法则,强调研究问题域。缺点:仍然是间接映射问题域;与结构化设计的概念不一致,从分析到设计的过渡比较困难;数据流和加工的数量太多,引起分析文档的膨胀。终点49数据流加工文件起点处理说明数据词典优点:终点492.3信息建模法(informationmodeling)由实体-关系法(E-R方法)发展而来。核心概念是实体和关系。实体描述问题域中的事物,关系描述事物之间在数据方面的联系,都可以带有属性。发展之后的方法也把实体称作对象,并使用了类型和子类型的概念,作为实体(对象)的抽象描述。有人也称之为面向对象方法,但有以下差别:1.强调的重点是信息建模和状态建模,而不是对象建模。2.没有把对实体属性所进行的操作封装到实体对象中。3.只有属性的继承,不支持操作的继承。4.没有采用消息通讯。实体属性属性属性属性关系实体mnE-R图信息模型mn对象属性关系属性对象属性502.3信息建模法(informationmodeling2.4面向对象方法面向对象的分析(OOA)面向对象的设计(OOD)运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统。把问题域中的事物抽象为对象,作为系统的基本构成单位其属性和操作刻画了事物的静态特征和动态特征——完整地刻画了问题域中事物。用类作为对象的抽象描述,建立它们之间的继承、聚合、关联、消息等关系——如实地表达了问题域中事物之间的各种关系。封装、继承、聚合、关联、消息通讯等原则符合人类的日常思维——使系统的复杂性得到控制。因此,得到的系统模型可以直接映射问题域。512.4面向对象方法51不同的建模方法体现于从不同的概念出发来认识问题域用不同的概念进行系统构造系统对现实世界的不同映射
信息建模法
面向对象方法功能/子功能功能接口功能分解法数据流加工
结构化方法间接映射间接映射半直接映射直接映射52不同的建模方法体现于信息建模法面向对象方法功能/子功审批不同的方法对同一应用实例(电话安装业务系统)的不同效果结构化分析——数据流和加工登记安装开通问题:不是直接映射问题域,与问题域事物相关的数据和操作不是围绕这些事物来组织的,而是分散在数据流和加工中;经常发生信息膨胀——模型中的多个数据流,实现中其实只是一项数据;分析模型难以与设计模型及源程序对应。用户登记表用户登记表用户登记表用户登记表文件用户信息53审批不同的方法对同一应用实例(电话安装业务系统)的不同效果登面向对象方法——对象及其关系用户登记表用户名登记人审批人施工队号码登记审批安装开通用户营业员主管人施工队机房1*1*1*«call»«call»«call»«call»个人用户团体用户帐单帐单项1*1*«call»直接映射了问题域中的实际事物;能够与程序形成良好的对应。54面向对象方法——对象及其关系用户登记表用户营业员主管人施工队顾名思义,面向对象的分析(OOA),就是运用面向对象方法进行系统分析。首先,OOA是分析,是软件生存周期的一个阶段,具有一般分析方法共同具有的内容、目标及策略;但是,它强调运用面向对象方法进行分析,用面向对象的概念和表示法表达分析结果。基本任务:运用面向对象的概念对问题域进行分析和理解,将问题域中与系统责任有关的事物抽象为系统中的类和对象,定义这些类和对象的属性与操作,以及它们之间所形成的各种关系。最终目标:建立一个满足用户需求、直接映射问题域的OOA模型及其规约。2.4.1什么是OOA问题:OOA是需求分析还是系统分析?55顾名思义,面向对象的分析(OOA),就是运用面向对象方法进行2.4.2什么是OOD不同时期有不同内容及特点早期(80年代末期之前)OOD的特点:1、不是基于OOA的大多基于结构化分析结果(数据流图)2、是OO编程方法的延伸多数方法与编程语言有关,特别受Ada影响很大3、不是纯OO的对某些OO概念(如继承)缺少支持,搀杂一些非OO概念(如数据流、包、模块等)4、不是只针对软件生存周期的设计阶段OOD中的“D”——指的是Design或Development多少涉及分析问题(如识别问题域的对象),但很不彻底——早期的OOD可看作现今OOA&D方法的雏形562.4.2什么是OOD早期(80年代末期之前)OOD的特定义:面向对象的设计(OOD)就在是OOA模型基础上运用面向对象方法进行系统设计,目标是产生一个符合具体实现条件的OOD模型。现今(90年代以后)OOD的特点:1.以面向对象的分析为基础,一般不依赖结构化分析。2.与相应的OOA方法共同构成一种OOA&D方法体系。OOA和OOD采用一致的概念与原则,但属于软件生存周期的不同阶段,有不同的目标及策略。3.较全面地体现面向对象方法的概念与原则。4.大多数方法独立于编程语言,通过面向对象的分析与设计所得到的系统模型可以由不同的编程语言实现。57定义:现今(90年代以后)OOD的特点:57软件建模面临的挑战1、问题域和系统责任复杂性日益增长问题域(problemdomain):被开发系统的应用领域,即在现实世界中由这个系统进行处理的业务范围。系统责任(systemresponsibilities):所开发的系统应该具备的职能。随着硬件性能的提高和价格的下降,软件系统所面临的问题域和系统责任越来越复杂,因此系统也越来越庞大。
2、交流问题软件系统的开发需要各类人员之间频繁交流。领域的多样性使软件工程中的交流问题比与其他工程更为突出。
有效的交流需要一种彼此都能理解的共同语言,否则将使彼此的思想难以沟通,很容易隐藏下许多错误。
2.4.3OO方法的主要优点58软件建模面临的挑战1、问题域和系统责任复杂性日益增长2、交流3、需求的不断变化用户因素,竞争因素,经费因素……开发者必须接受和适应需求变化易变部分和稳定部分:功能:最易变外部接口:很易变属性:较易变对象:较稳定4、软件复用的要求复用级别提高——分析结果复用要求分析模型的基本成分可以在多个系统中复用要求一个分析模型可以在多种条件下设计和实现需求变化系统局部修改受影响部分修改产生新错误延长开发时间593、需求的不断变化易变部分和稳定部分:4、软件复用的要求需求面向对象方法的优势对问题域和系统责任的复杂性具有较强的处理能力从问题域中的实际事物出发来构造系统模型,使系统模型能直接地映射问题域;继承、封装、聚合等概念使系统的复杂性得到有效的控制。提供了便于各类相关人员交流共同语言使用与问题域一致的概念及术语,体现人类的日常思维方式,为改进各类人员之间的交流提供了最基本的条件。对需求的变化具有较强的适应性按封装原则把系统中最容易变化的因素隔离起来,系统的各个单元成分之间接口很少,把需求变化所引起的影响局部化。为实现分析与设计级别的软件复用提供了有力支持OO方法的封装、继承、聚合等原则,对象的完整性、独立性以及与问题域的良好对应,使之非常有利于软件复用。贯穿软件生存周期全过程的一致性从OOA开始使用与问题域一致的概念、词汇、原则及表示法,这种一致性保持到设计、编程、测试、维护等各个阶段,对于整个软件生存周期的开发、维护及管理活动都具有重要的意义。60面向对象方法的优势对问题域和系统责任的复杂性具有较强的处理能Booch方法Coad-Yourdon方法Firesmith方法Jacobson方法(OOSE)Martin-Odell方法Rumbaugh方法(OMT)Seidewitz-Stark方法Shlaer-Mellor方法Wirfs-Brock方法……2.4.4几种典型的OO方法方法的异同体现于:概念表示法系统模型开发过程可用性技术支持61Booch方法2.4.4几种典型的OO方法方法的异同体现Booch方法必要时使用用于分析和设计6种模型图基本图通常不可缺少类图对象图模块图进程图只用于设计补充图状态转移图交互图模型图62Booch方法必要时使用用于分析和设计6种模型图基本图通常不开发期望行为模型(分析)建立体系结构(设计)逐渐形成实现(演化)建立核心需求(概念化)(a)宏过程识别类和对象识别类和对象的语义识别类和对象的关系说明类和对象的接口和实现(b)微过程管理交付后的演化(维护)特点:思想活跃,开拓与创新可操作性不够强类图与对象图并存过程Booch方法(续)63开发期望行为建立体系结构逐渐形成实现建立核心需求(a)宏过主题层类及对象层结构层属性层服务层OOA模型的5个层次主题层类及对象层结构层属性层服务层人机交互部分(HIC)问题域部分(PDC)任务管理部分(TMC)数据管理部分(DMC)OOD模型的5个层次和4个部分Coad/Yourdon方法特点:概念简练,过程清晰强调概念的一致性过程指导不够具体64主题层OOA模型的5个层次主题层人机交互问题域任务管理数据管实体对象界面对象控制对象三种对象行为表示信息三维的分析模型四维的设计模型实现环境需求说明需求分析健壮分析需求模型分析模型需求模型设计实现设计模型实现模型分析模型需求模型单元测试组装测试实现模型设计模型系统测试测试模型分析过程构造过程测试过程Jacobson方法(OOSE)特点:通过用况描述用户需求用交互图描述对象之间的交互用况驱动的观点言之有过65实体对象界面对象控制对象三种对象行为表示信息三维的分析模型实三个模型功能模型对象模型模型动态Rumbaugh方法(OMT)过程:分析(面向对象)系统设计(传统方法)对象设计(面向对象)实现特点:概念严谨,阐述清楚过程具体,可操作性强包含了许多非OO的内容提出若干扩充概念,偏于复杂66三个模型功能模型对象模型模型动态Rumbaugh方法(第3章统一建模语言UML简介3.1UML的背景与发展历史3.2UML1概况3.3UML2概况主要组成部分元模型体系结构具体元类和抽象元类各种图和扩展机制UML2的四个规范图的增加和主要变化67第3章统一建模语言UML简介3.1UML的背景与发展历面向对象方法种类繁多1989年约10种,1994年达到50种以上概念、表示法、过程策略及文档组织等方面的差异使用户在选择建模方法和工具时无所适从不利于技术交流迫切需要OO概念及表示法走向统一和标准化统一建模语言UML应运而生诞生背景UML的背景与发展历史68面向对象方法种类繁多诞生背景UML的背景与发展历史68发展历史第一阶段:OO方法学家的联合行动1995.10:G.Booch与J.Rumbaugh联合推出UnifiedMethod0.81996.6:I.Jacobson加入推出UML0.9(UnifiedModelingLanguage)不再称“方法”而改称“建模语言”第二阶段:公司的联合行动1996:成立了UML伙伴组织,12家公司加入1997.1:推出UML1.0,另外5家公司加盟1997.9:形成UML1.1,提交OMG作为建模语言规范提案1997.11:UML1.1被OMG正式采纳69发展历史不再称“方法”而改称“建模语言”第二阶段:公司的联合第三阶段:OMG主持下的修订1997~2002:OMG成立UML修订任务组主持UML的修订先后产生UML1.2、UML1.3、UML1.4、UML1.5等版本UML1.3和UML1.4是两个最重要的修订版本第四阶段:UML的重大修订——UML21999:开始酝酿,旨在产生比UML1有显著改进的新版本2000~2001:由OMG陆续发布了4个提案需求(RFP)征集提案,择优采纳2002年之后先后形成4个UML2.0规范在OMG的组织下继续修订和改进,目前最新的版本是UML2.470第三阶段:OMG主持下的修订UML1.3和UML1.4是两个UML是什么不是什么1、是一种建模语言,不是一种建模方法“Rational统一过程”不是UML的一部分2、用于建立系统的分析模型和设计模型,而不是用于编程3、是一种已被OMG采纳的建模语言规范(specification)正式场合一般不称作“标准”(standard)
4、部分地采用了形式化语言的定义方式,但并不严格不是一种形式化语言,不能编译执行或解释执行“统一建模语言(UML)是一种用来对软件密集型系统制品进行可视化、详述、构造和建档的图形语言,也可用于业务建模以及其它非软件系统。”71UML是什么不是什么1、是一种建模语言,不是一种建模方法“UML1规范的主要构成部分(1)UML概要(UMLSummary):对UML做概括介绍,包括其构成、动机、目标、范围、特点、历史、现状以及对未来演化的建议。
(2)UML语义(UMLSemantics):定义UML的语法和语义,是定义UML语言的基本文件(3)UML表示法指南(UMLNotationGuide)定义UML的各种模型图给出各种图中建模元素的可视化表示法UML1概况72UML1概况72(4)UML外廓范例(UMLExampleProfiles)用于软件开发过程的UML外廓用于业务建模的UML外廓(5)UML模型交换(UMLModelInterchange)规定了建模工具在实现各种UML模型时需要共同遵守的语言约定,使来自不同厂商的建模工具能够彼此交换和处理各自开发的系统模型。(6)对象约束语言OCL(ObjectConstraintLanguage)定义了一种对象约束语言,用来描述模型中关于对象的附加约束,是一种形式化的语言。73(4)UML外廓范例(UMLExampleProfile定义建模语言的语言元-元模型层应用领域中的事物用户对象层应用系统的抽象描述系统模型层抽象描述模型的语言元模型层抽象实例化抽象实例化实例化元-元模型(meta-metamodel):元模型的基础体系结构,定义一种说明元模型的语言。例如:MOF元模型(metamodel):元-元模型的一个实例,定义一种说明模型的语言例如:UML模型(model):元模型的一个实例,定义一种语言来描述信息领域。例如:教学管理系统——教室类、学生类、课程类用户对象(userobject):模型的一个实例,定义一个特定的信息领域。例如:一个学校——某老师,某学生,某课程OMG的四层元模型体系结构74定义建模语言的语言应用领域中的事物应用系统的抽象描述抽象描述抽象元类和具体元类
类类型接口构件结点关联泛化依赖类目关系可泛化元素模型元素元素具体元类抽象元类(classifier)75抽象元类和具体元类类类型接口构件结点关联泛化依赖类目关系UML1的9种模型图静态结构图(StaticStructureDiagram)类图(ClassDiagram)对象图(ObjectDiagram)用况图(UseCaseDiagram)交互图(InteractionDiagram)顺序图(SequenceDiagram)协作图(CollaborationDiagram)状态图(StatechartDiagrams)活动图(ActivityDiagrams)实现图(ImplementationDiagrams)构件图(ComponentDiagram)部署图(DeploymentDiagram)
九种图支持用户从不同的视角进行系统建模76UML1的9种模型图静态结构图(StaticStructu关联类对象链教师:史密斯课程:计算概论教师:玛丽课程:图论*1课程教师元模型中的实例级概念引起体系结构层次的混乱77关联类对象链教师:史密斯课程:计算概论教师:玛丽课程:图论*扩展机制:附加到其他模型元素之上以,将原有的建模元素特化成一种语义较特殊的新变种,或者表示出它们的某些细节。约束(constraint):用于说明某些必须保持为真的命题。注释(comment):对模型元素的细节所进行的解释。标记值(TaggedValue):表示模型元素的附加的特征。衍型(stereotype):附加到其他模型元素之上,从而将原有的建模元素定制成一种语义较为特殊的新变种。衍型的表示法和例子«active»类名类名«界面»类名+关键词或图标=78扩展机制:约束(constraint):用于说明某些必须保UML基础结构Infrastructure定义一个可复用的元语言核心,用来定义各种元模型,包括UML、MOF和CWM等元模型UML上层结构Superstructure提供可直接用来构造用户系统的各种模型元素,以及从不同的视角对系统进行建模的各种模型图UML图交换DiagramInterchange给出在不同的建模工具之间实现模型交换的规范UML对象约束语言UMLOCL一个形式化的语言,描述模型约束信息UML2的四个规范UML2概况79UML基础结构定义一个可复用的元语言核心,用来定义各种元模型UML2的13种模型图图结构图行为图交互图类图构件图对象图活动图用况图状态机图部署图顺序图通讯图组合结构图包图交互概览图定时图支持用户从不同的视角进行系统建模80UML2的13种模型图图结构图行为图交互图类图构件图对象图活UML1的图UML2的图详见结构图类图classdiagram类图classdiagram第6章~第8章对象图objectdiagram对象图objectdiagram第9章9.7.1节构件图componentdiagram构件图componentdiagram第9章9.6节部署图deploymentdiagram部署图deploymentdiagram第9章9.7.6节包图packagediagram第9章9.2节组合结构图compositestructurediagram第9章9.7.2节行为图用况图usecasediagram用况图usecasediagram第5章5.5节状态图statechartdiagram状态机图statemachinediagram第9章9.5节活动图activitydiagrams活动图activitydiagrams第9章9.4节顺序图sequencediagram顺序图sequencediagram第9章9.3节协作图collaborationdiagram通信图communicationdiagram第9章9.7.3节交互概览图interactionoverviewdiagram第9章9.7.4节定时图timingdiagram第9章9.7.5节UML与UML2的各种图的对照81UML1的图UML2的图详见结类图classdiagra学习建议:1、重点掌握UML直接提供给应用模型开发者使用的建模元素,即“具体元类”;熟练地掌握面向对象方法最基本的概念。2、在13种图中,重点掌握类图、用况图、顺序图、活动图状态机图、构件图。3、着眼于实际应用,从UML的复杂性中解放出来。4、切记:UML只是一种建模语言,不是建模方法。它不包括过程,而且是独立于过程的。根据本单位的实际情况选择适当的过程。5、动手实践,使用工具;选择合适的项目开始实际应用。82学习建议:824.1引言(本书的宗旨)充分运用面向对象方法的基本概念,限制扩充概念以往某些OO方法提出了许多扩充概念,问题是:使方法复杂化——增加学习难度和工程开销缺乏编程语言支持——造成模型与源程序不一致加强过程指导给出运用最基本的OO概念自然而有效地解决建模问题的策略,包括那些在其他方法中采用扩充概念解决的问题。强调在类的抽象层次上建立系统模型所有对象的属性和操作以及对象之间的关系,都通过它们的类来描述,而不是针对个别对象实例进行描述……第4章本书的OOA&D方法概貌834.1引言(本书的宗旨)第4章本书的OOA&D方法概貌面向对象的概念包括以下两种情况:(1)用来构成系统模型的某种基本成分,称为建模元素(2)在建模中需要遵守的某种原则,不代表任何模型成分4.2主要概念主要建模元素
对象、类(所有的对象都通过类来表示)属性、操作(类属性和实例属性,被动操作和主动操作)一般-特殊关系,一般-特殊结构整体-部分关系,整体-部分结构关联(二元关联、多元关联)消息(控制流内部的消息,控制流之间的消息)84面向对象的概念包括以下两种情况:4.2主要概念主要建模元素主要原则(1)抽象什么叫抽象?(回顾定义)OO方法广泛地运用抽象原则,例如:·系统中的对象是对现实世界中事物的抽象,·类是对象的抽象,·一般类是对特殊类的进一步抽象,·属性是事物静态特征的抽象,·操作是事物动态特征的抽象。过程抽象任何一个完成确定功能的操作序列,其使用者都可把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。数据抽象根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。85主要原则(1)抽象85(2)分类分类就是把具有相同属性和操作的对象划分为一类,用类作为这些对象的抽象描述。不同程度的抽象可得到不同层次的类,形成一般-特殊结构(又称分类结构)。强调:在类的抽象层次上建模(3)封装(4)继承(5)聚合(6)关联(7)消息通信即要求对象之间只能通过消息进行通讯,而不允许在对象之外直接地存取对象内部的属性。8686(8)粒度控制人们在研究问题时既需要微观的思考,也需要宏观的思考。因此需要控制自己的视野:考虑全局时,注重其大的组成部分,暂时不详察每一部分的具体的细节;考虑某部分的细节时则暂时撇开其余的部分。这就是粒度控制原则。引入包(package)的概念,把模型中的类按一定的规则进行组合,形成一些包,使模型具有大小不同的粒度层次,从而有利于人们对复杂性的控制。87(8)粒度控制87(9)行为分析·以对象为单位描述系统中的各种行为任何行为都归属于某个对象,用对象的操作表示。对象的操作只作用于对象自身的属性。·通过消息描述对象之间的行为依赖关系如果一个对象操作的执行需要另一个对象为它提供服务,则在模型中表现为前者向后者发送消息。·认识行为的起因,区分主动行为和被动行为用主动对象的主动操作描述主动行为用对象的被动操作描述被动行为·认识系统的并发行为在分析阶段根据,根据系统的需求和事物的主动性来认识系统的并发行为。在设计阶段,根据具体的实现条件确定系统中需要设计哪些控制流。
88(9)行为分析88部署图(DeploymentDiagram)1、什么是面向对象,它的基本思想和主要特点。一般类与特殊类又称父类与子类。协作图collaborationdiagram给出各种图中建模元素的可视化表示法强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装、关联等等。如果一个对象操作的执行需要另一个对象为它提供服务,则在模型中表现为前者向后者发送消息。分析模型难以与设计模型及源程序对应。附加到其他模型元素之上以,将原有的建模元素特化成一种语义较特殊的新变种,或者表示出它们的某些细节。多态是指同一个命名可具有不同的语义。充分运用面向对象方法的基本概念,限制扩充概念(classifier)·属性是事物静态特征的抽象,抽象是形成概念的基本手段。用况图usecasediagram直接映射了问题域中的实际事物;70年代CLU、并发Pascal、Ada和Modula-2等语言对抽象数据类型理论的发展起到重要作用(支持数据与操作的封装)。什么叫抽象?(回顾定义)它是第一个完善的、能够实际应用的面向对象语言。OOD中的“D”——指的是Design或Development因为,所谓“模型”是指某一级别上的系统抽象描述,构成这种描述的任何资料都是模型的一部分。服务名用动词或动名词。稍稍适合人类的形象思维,但仍然相差很远。支持用户从不同的视角进行系统建模领域工程(domainengineering)它是第一个完善的、能够实际应用的面向对象语言。协作图collaborationdiagram用况驱动的观点言之有过对象图objectdiagram至少有一个操作不需要接收消息就能主动执行的对象。4.3模型及其规约在分析阶段和设计阶段建立的系统模型分别称为OOA模型和OOD模型
正规理解:一个系统模型,应包括建模过程中产生的图形、文字等各种形式的文档。因为,所谓“模型”是指某一级别上的系统抽象描述,构成这种描述的任何资料都是模型的一部分。习惯说法:目前大部分OOA/OOD著作谈到“模型”,一般是指OOA或OOD过程中产生的图形文档。本书采用习惯说法——将模型和模型规约分别讨论OOA和OOD模型包括需求模型、基本模型和辅助模型,通过模型规约做详细说明89部署图(DeploymentDiagram)4.3模型及基本模型——类图面向对象的建模中最重要、最基本的模型图集中而完整地体现了面向对象的概念为面向对象的编程提供了直接、可靠的依据
可以从三个层次来看对象层特征层关系层需求模型——用况图每个用况是一项系统功能使用情况的说明,把每一类参与者对每一项系统功能的使用情况确切地描述出来,便全面地定义了系统的功能需求辅助模型——其他各种图对类图起到辅助作用,提供更详细的建模信息,或者从不同的视角来描述系统。例如包图、顺序图、活动图等模型规约对上述各种模型图及其模型元素的详细而确切的定义和解释。90基本模型——类图对象层特征层关系层需求模型——用况图辅助OOA模型框架基本模型:类图模型规约需求模型:用况图辅助模型:包图顺序图活动图……对象层特征层关系层91OOA模型框架基本模型:类图模型规约需求模型:辅助模型OOD模型框架——从两个侧面来描述人机交互部分数据接口部分控制驱动部分问题域部分从一个侧面看:OOD模型包括几个主要部分?一个核心加三个外围需求模型辅助模型类图模型规约从另一侧面看:OOD模型每个部分如何用OO概念表达?采用与OOA相同的概念及模型组织方式92OOD模型框架人机交互部分数据接口部分控制驱动部分问题域从一确定系统边界发现参与者定义用况发现对象定义对象的特征定义对象间的关系原型开发建立模型规约建立需求模型建立基本模型建立包图建立辅助模型建立活动图建立其他图建立顺序图4.4建模过程OOA过程93确定系统边界发现参与者定义用况发现对象定义对象定义对象原型开问题域部分设计输入OOA模型人机交互部分设计控制驱动部分设计数据接口部分设计构件化与系统部署向OOP输出OOD模型OOD过程94问题域部分设计输入OOA模型人机交互部分设计控制驱动部分设计4.5OOA与OOD的关系一致的概念与表示法OOA和OOD采用一致的概念和表示法,从而不存在分析与设计之间的鸿沟。不同的内容、目标和抽象层次OOA:研究问题域和用户需求,运用面向对象的观点发现问题域中与系统责任有关的对象,以及对象的特征和相互关系。目标是建立一个直接映射问题域,符合用户需求的OOA模型。OOD:在OOA模型基础上,针对选定的实现平台进行系统设计,按照实现的要求进行具体的设计,目标是产生一个能够在选定的软硬件平台上实现的OOD模型。OOA模型:抽象层次较高,忽略了与实现有关的因素OOD模型:抽象层次较低,包含了与实现平台有关的细节954.5OOA与OOD的关系一致的概念与表示法95在软件生存周期中的位置——可适应不同的生存周期模型分析(OOA)设计(OOD)编程(OOP)测试维护瀑布模型强调严格的阶段划分和前后次序先做完OOA再进行OOD演化集成测试编程(OOP)设计(OOD)分析(OOA)喷泉模型各个阶段之间没有严格的界限,其活动可以交叠和回溯有些工作既可在OOA中进行,也可在OOD中进行各阶段概念和表示法的一致为采用这种模型提供了条件96在软件生存周期中的位置分析设计编程测试维护瀑布模型强调严格的OOA与OOD的分工——两种不同的观点第二种观点的理由:(1)过分强调“分析不考虑怎么做”将使某些必须在OOA考虑的问题得不到完整的认识。(2)把仅与问题域和系统责任有关的对象的描述在分析阶段一次完成,避免设计阶段重复地认识同一事物,减少了工作量总和。(3)对那些与问题域和系统责任紧密相关的对象细节,分析人员比设计人员更有发言权。(4)由于OOA和OOD概念和表示法的一致,不存在把细化工作留给设计人员的必然理由。(5)OOA阶段建立平台无关的模型(PIM),OOD阶段针对不同的平台建立平台专用模型(PSM)可在最大程度上实现对OOA结果的复用。关键问题:对象的特征细节(如属性的数据类型和操作流程图),是在分析时定义还是在设计时定义?做什么怎么做分析设计第一种观点问题域与系统责任与实现有关的因素分析设计第二种观点97OOA与OOD的分工——两种不同的观点第二种观点的理由:关键面向对象的分析与设计课件基础篇98面向对象的分析与设计课件基础篇1第一部分:基础篇面向对象的分析与设计第一部分:基础篇面向对象的分析与设计99主要知识点1、什么是面向对象,它的基本思想和主要特点。2、从认识论个角度,看面向对象方法的形成和主要优势。3、面向对象方法中的对象、类、属性、操作、继承、封装、聚合、关联、消息、多态性等基本概念的确切含义,以及它们在系统构造中所起的作用。4、面向对象方法的发展历史。第1章面向对象方法概论100主要知识点第1章面向对象方法概论3从程序设计方法的角度看,面向对象是一种新的程序设计范型(paradigm),其基本思想是使用对象、类、继承、封装、聚合、关联、消息、多态性等基本概念来进行程序设计。自20世纪80年代以来,面向对象方法已深入到计算机软件领域的几乎所有分支。它不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行问题求解,以及如何进行系统构造的软件方法学。从这个意义上讲:面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。1.1什么是面向对象第1章面向对象方法概论101从程序设计方法的角度看,面向对象是一种新的程序设计范型(pa面向对象方法的基本思想一、从现实世界中客观存在的事物出发来构造系统强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象为系统中的对象,作为系统的基本构成单位。这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌。二、充分运用人类日常的思维方法强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装、关联等等。这使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表达出来。102面向对象方法的基本思想一、从现实世界中客观存在的事物出发来构主要特点:用类和对象作为系统的基本构成单位。对象对应问题域中的事物,其属性和操作刻画了事物的静态特征和动态特征,它们之间的继承关系、聚合关系、关联和消息如实地表达了问题域中事物之间实际存在的各种关系。因此,无论系统的构成成分,还是通过这些成分之间的关系而体现的系统结构,都可直接地映射问题域。103主要特点:用类和对象作为系统的基本构成单位。对象对应问题域中对问题域的认识(人)客观世界(问题域)计算机自然语言语言的鸿沟编程语言语言的过渡(人)编程(人)程序的理解和执行(机器)软件开发:对事物的认识和描述问题——语言的鸿沟1.2从认识论看面向对象方法的形成104对问题域的认识(人)客观世界计算机自然语言语编程语言语言的过计算机机器语言自然语言客观世界(问题域)语言的鸿沟语言的发展——鸿沟变窄程序的指令、数据、地址,都是由二进制的“0”和“1”构成的。离机器最近,能够直接地执行,然而没有丝毫形象的意义,离人类的思维最远。汇编语言以易理解的符号表示指令、数据以及寄存器、地址等物理概念。稍稍适合人类的形象思维,但仍然相差很远。因为抽象层次太低,仍需考虑大量的机器细节。高级语言隐蔽了机器细节,使用有形象意义的命名和表达式,可以联系到程序所描述的具体事物。特别是结构化编程语言更便于体现客观事物的结构和逻辑涵义,与人类的自然语言更接近,但仍有不少差距。面向对象语言能比较直接地反映客观世界的本来面目,并使软件开发人员能够运用人类认识事物所采用的一般思维方法来进行软件开发。105计算机机器语言自然语言客观世界语言的鸿沟语言的发展——鸿沟变问题域测试编程计算机编程语言自然语言需求分析总体设计详细设计软件工程学的作用——传统的软件工程方法分析与设计的鸿沟分析与设计概念及表示法的不一致106问题域测试编程计算机编程语言自然语言需求总体详细软件工程学的问题域OOA计算机自然语言面向对象编程语言OODOOPOOT软件工程学的作用——面向对象的软件工程方法107问题域OOA计算机自然语言面向对象OODOOPOOT软件工程1.3面向对象方法的基本概念与原则对象,类属性,操作封装继承,一般-特殊结构聚合,整体-部分结构关联消息多态持久对象,主动对象……1081.3面向对象方法的基本概念与原则对象,类11对象是现实世界中某个实际存在的事物,它可以是有形的,比如一辆汽车,也可以是无形的,比如一项计划。对象是构成世界的一个独立单位。它具有自己的静态特征和动态特征。属性是用来描述对象静态特征的一个数据项。操作是用来描述对象动态特征的一个动作序列。对象标识就是对象的名字,有“外部标识”和“内部标识”之分。对象,属性,操作对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。对象由一组属性和施加于这些属性一组操作构成。对象对象标识属性操作109对象是现实世界中某个实际存在的事物,它可以是有形的,比如一辆对象(属性,操作,对象标识)要点:1、对象标识符2、属性3、服务注意点:1.一体性对象标识符、属性和服务2.区别三者的区别3.属性是对对象的静态描述.4.服务是对对象的动态
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 输血入职培训
- 输液反应的不良事件培训
- 2026年及未来5年市场数据中国绿色墙体保温材料行业市场调研分析及投资前景预测报告
- 轻烃工培训课件
- 宾馆公司安全生产管理制度
- 氨合成基础知识
- 任务3 雕细节,显亮点 2026高考语文 一轮复习 课件
- 路桥新入职员工培训
- 软件系统培训手册
- 软件开发流程培训
- 白蚁防治工创新应用知识考核试卷含答案
- 高级消防设施操作员模拟试题及答案(新版)9
- 广东省广州市荔湾区2025-2026学年第一学期四年级数学期末试卷(无答案)
- GB/T 41914.3-2025微细气泡技术微细气泡使用和测量通则第3部分:微细气泡发生方法
- 2025年福建省三明市中考一模英语试题(含答案与解析)
- 中国临床肿瘤学会(csco)胰腺癌诊疗指南
- 配送员派单劳务合同范本
- 《中国人身保险业经验生命表(2025)》
- 《火力发电厂锅炉技术监督导则》
- 渣土收纳场施工方案
- TGDC251-2023科技成果技术成熟度评价规范
评论
0/150
提交评论