《UML建模语言及工具PPT课件第2章 对象技术与可视化建模基础》由会员分享,可在线阅读,更多相关《UML建模语言及工具PPT课件第2章 对象技术与可视化建模基础(82页珍藏版)》请在金锄头文库上搜索。
1、UMLUML建模语言及工具建模语言及工具第第 2 章章对象技术与可视化建模基础对象技术与可视化建模基础An Overview of Object Technology and Visual ModelingReview: An Approach to the Object-Orientedn上升到面向对象上升到面向对象n面向对象技术概述面向对象技术概述n定义、利益、研究内容定义、利益、研究内容n面向对象技术发展面向对象技术发展n历史(里程碑)、现状、未来历史(里程碑)、现状、未来n面向对象与结构化面向对象与结构化n扬弃而非否定扬弃而非否定n上升到面向对象上升到面向对象n利用面向对象的观点认识客
2、观问题利用面向对象的观点认识客观问题3学习线路图学习线路图OOUMLOOAOODDP Case-Study 学学 习习 线线 路路 图图4Agenda 1n nObject and ClassnFour Principles of OOnGeneralization and PolymorphismnPrinciples of Visual ModelingnThe UMLnProcess and visual modeling5ObjectnInformally, an object represents an entity, either physical, conceptual, or
3、softwarenPhysical entitynConceptual entitynSoftware entity化学过程化学过程 链表链表 6Object-Formal DefinitionnAn object is an entity with a well-defined boundary and identity that encapsulates state and behavior.nState is represented by attributesattributes and relationshipsrelationships.nBehavior is represente
4、d by operations, methods, and state machines.7对象的标识对象的标识n每一个对象都有一个每一个对象都有一个唯一的标识唯一的标识, 即使其即使其状态有可能与其它对象一样状态有可能与其它对象一样班机班机 747 on 11/10班机班机 747 on 11/11班机班机 747 on 11/128对象的状态对象的状态n一个对象的状态是它反映于现实世界的一个对象的状态是它反映于现实世界的一系列属性:一系列属性:n参数的数值参数的数值 (也就是也就是,与对象有关系的数据与对象有关系的数据)n它与其它对象的关系它与其它对象的关系可能的状态:可能的状态:停泊停泊
5、 运营运营着陆着陆 终止终止班机班机 7477479对象的行为对象的行为n定义当其它对象发出请求时,该对象如定义当其它对象发出请求时,该对象如何反应何反应n由为对象定义的一系列操作决定由为对象定义的一系列操作决定班机班机 747核对出发时间核对出发时间(返回返回 9:27)机票代理机票代理10Sample-An Object11Representing Objects in the UMLnAn object is represented as a rectangle with an underlined name.Named ObjectNamed ObjectAnonymous Objec
6、tAnonymous Object12ClassnA class is a description of a set of objects that share the same attributes, operations, relationships, and semantics.nAn object is an instance of a class.nA class is an abstraction in that it nEmphasizes relevant characteristics. nSuppresses other characteristics.13Sample-A
7、 ClassClassEmployeePropertiesNameAddressPositionSalaryStart DateEnd DateBehaviorHireFirePromoteIncrease SalaryRetire14Representing Classes in the UMLnA class is represented using a rectangle with compartments.属性属性操作操作15具有相同特征和操作的对象可以放到类中。具有相同特征和操作的对象可以放到类中。在下面这副图中您看到了什么类在下面这副图中您看到了什么类? ?类类对象的类对象的类您看
8、到了几个类您看到了几个类? ?属性属性n属性是属性是类的特征类的特征或特性或特性n属性的值是某一特定对象的属性的值是某一特定对象的属性值属性值n在类中属性名必须是在类中属性名必须是唯一的唯一的n每一个类的实例都有为这个类定义的所有属每一个类的实例都有为这个类定义的所有属性的值性的值银行帐户类属性银行帐户类属性帐号帐号银行名称银行名称拥有者拥有者金额金额Mary的银行帐户属性值的银行帐户属性值12345678First National BankMary Smith$1024.4818属性取决于视点属性取决于视点n 从从销售人员销售人员的角度的角度 n 型号型号n 价格价格n 颜色颜色n 里程数
9、里程数一辆汽车具有的一辆汽车具有的属性属性: :n 从从维修人员维修人员的角度的角度 n 马达类型马达类型n 传动类型传动类型n 维修记录维修记录19操作操作n对象的行为是由为此对象定义的一系列对象的行为是由为此对象定义的一系列操作决定的操作决定的n操作访问或修改对象的属性值操作访问或修改对象的属性值n一个类可能同时存在多个实例,也可能一个类可能同时存在多个实例,也可能在某一时刻没有实例在某一时刻没有实例n一个类的所有实例都可以使用在这个类一个类的所有实例都可以使用在这个类中定义的操作中定义的操作20类和对象类和对象对象对象实体实体类类抽象数据类型抽象数据类型计算机世界计算机世界计算机世界计算
10、机世界实实实实例例例例化化化化抽抽抽抽象象象象映映映映 射射射射映映映映 射射射射现实世界现实世界现实世界现实世界21类是生成对象的模板类是生成对象的模板n类是生成对象的模板类是生成对象的模板n类的定义中包含有产生和删除对象的操作类的定义中包含有产生和删除对象的操作n一个类定义了使用哪种数据表示法来描述属性一个类定义了使用哪种数据表示法来描述属性n每一个实例都采用有属性值的数据表示法每一个实例都采用有属性值的数据表示法n一个类通过一系列操作来定义行为一个类通过一系列操作来定义行为n这种操作能在每个实例中激活这种操作能在每个实例中激活班机班机Flight 187Flight 121Flight
11、74722类和对象的关系类和对象的关系n每一个对象都是某一个类的实例每一个对象都是某一个类的实例n每一个类在某一时刻都有零个或更多的每一个类在某一时刻都有零个或更多的实例实例n类是静态的;它们的存在、语义和关系类是静态的;它们的存在、语义和关系在执行前就已经定义好了在执行前就已经定义好了n对象是动态的;对象是动态的; 它们在程序执行时可以它们在程序执行时可以被创建和删除被创建和删除23Sample-Object and Class现实世界中的学生对象和对现实世界中的学生对象和对Student类的建模类的建模BobJohnKateBeverlyStudent属性属性方法方法一些学生对象一些学生对
12、象Student类类24Agenda-2nObject and Classn nFour Principles of OOnGeneralization and PolymorphismnPrinciples of Visual ModelingnThe UMLnProcess and visual modeling25Basic Principles of Object OrientationObject OrientationObject OrientationA Ab bs st tr ra ac ct ti io on nE En nc ca ap ps su ul la at ti
13、io on nMMo od du ul la ar ri it ty yHHi ie er ra ar rc ch hy y26抽象抽象 抽象(abstraction)就是过滤掉对象的一部分特性和操作,直到只剩下所需要的属性和操作。 一些权威认为抽象对于建模者来说是最重要的技术,也就是说要搞清楚什么应该纳入模型中,什么应该舍去。抽取共同性抽取共同性例如,准备编制游戏软件,其中需要实现不同人物使用魔法的功能。每个人物具有不同的魔法,并具备使用魔法的行为,抽象得到的人物类图如:27Example: Abstraction一个项目的抽象依赖于定义抽象的上下文一个项目的抽象依赖于定义抽象的上下文一个项
14、目的抽象依赖于定义抽象的上下文一个项目的抽象依赖于定义抽象的上下文28封装性封装性-EncapsulationnHides implementation from clients.nClients depend on interface.29封装性封装性n封装(封装(encapsulation)是软件模块化)是软件模块化思想的体现,也是面向对象的根本之一思想的体现,也是面向对象的根本之一n封装实现信息隐藏和数据抽象封装实现信息隐藏和数据抽象n信息隐藏的出发点信息隐藏的出发点:对象的私有数据不能被:对象的私有数据不能被外界存取,只能以合法的手段访问外界存取,只能以合法的手段访问n将数据抽象为一组
15、行为将数据抽象为一组行为,而不是内部的具体,而不是内部的具体数据结构,把用户隔离在细节之外,从而使数据结构,把用户隔离在细节之外,从而使得软件各个部分依赖于抽象层,各模块获得得软件各个部分依赖于抽象层,各模块获得自由,可以变化细节,可以自由,可以变化细节,可以替换替换30为什么要封装为什么要封装结构化程序设计:程序结构化程序设计:程序 = 算法算法 + 数据结构数据结构全局数据全局数据全局数据全局数据算法算法算算法法算法算法算法算法一个大问题:如何保证数据的一个大问题:如何保证数据的一致性?一致性?31范例:数据一致性范例:数据一致性class class ShippingAddressShi
16、ppingAddress publicpublic long long cityCodecityCode; ; publicpublic String address; String address; 城市代码城市代码城市代码城市代码例如:北京为例如:北京为例如:北京为例如:北京为0101上海为上海为上海为上海为0202邮政地址邮政地址邮政地址邮政地址“ “北京朝阳区静安北京朝阳区静安北京朝阳区静安北京朝阳区静安里里里里6 6号号号号” ”操作这个数据结构的程序员,必须严格遵守一系列业务逻辑规则,操作这个数据结构的程序员,必须严格遵守一系列业务逻辑规则,否则很容易破坏数据的一致性否则很容易破坏
17、数据的一致性结构化程序设计处理大项目时,多人协同开发时,本质上无法保结构化程序设计处理大项目时,多人协同开发时,本质上无法保证数据的一致性证数据的一致性class class ShippingAddressShippingAddress privateprivate long long cityCodecityCode; ; privateprivate string address; string address; publicpublic long long ModifyAddress(StringModifyAddress(String address) address) 32信息隐藏保
18、证数据一致性信息隐藏保证数据一致性n通过信息隐藏:通过信息隐藏:n1. 外围代码无法随意访问底层数据,只能以外围代码无法随意访问底层数据,只能以合乎规范的方式操作数据合乎规范的方式操作数据n2. 保证数据一致性的逻辑只需正确开发一次,保证数据一致性的逻辑只需正确开发一次,便可以供所有人反复使用便可以供所有人反复使用n3. 业务逻辑知识被局限起来,协同开发难度业务逻辑知识被局限起来,协同开发难度降低降低n信息隐藏是面向对象更适应大型软件开信息隐藏是面向对象更适应大型软件开发的根本原因之一发的根本原因之一33数据隐藏的实现:数据隐藏的实现:Cn文件域内的数据隐藏,粒度太粗文件域内的数据隐藏,粒度太
19、粗n/* 本文件域的私有数据本文件域的私有数据 */static static intint use_countuse_count = 0; = 0;void void func(intfunc(int argarg) ) +use_countuse_count; ; nC的结构体无数据隐藏机制:的结构体无数据隐藏机制:structstruct SimpleObject_tSimpleObject_t intint myIntegermyInteger; ;void (*void (*setInteger)(intsetInteger)(int););34数据隐藏的实现:数据隐藏的实现:C+n
20、用用private访问级别关键字定义私有数据,隐藏内部数据访问级别关键字定义私有数据,隐藏内部数据structstruct SimpleObjectSimpleObject private:private: intint myIntegermyInteger; ;public:public: void void setInteger(intsetInteger(int i); i);SimpleObject(intSimpleObject(int i = 0): i = 0): myInteger(imyInteger(i) n使用:使用:SimpleObjectSimpleObject so
21、(8); so(8);so.myIntegerso.myInteger = 16; / compile error = 16; / compile errorso.setInteger(16); / OKso.setInteger(16); / OKnC+对于对象私有数据的隐藏,完全是靠编译器保证,而由于对于对象私有数据的隐藏,完全是靠编译器保证,而由于C+过于强大的指针运算能力,编译器很容易被欺骗,所以过于强大的指针运算能力,编译器很容易被欺骗,所以35Java中的数据隐藏中的数据隐藏soSimpleObject对象实体对象实体int myInteger void setInteger(in
22、t i)虽然虽然so本身也是指针(在本身也是指针(在Java里叫做引用里叫做引用reference),但),但是是Java没有提供任何指针运算,因此无法骗过编译器,能够没有提供任何指针运算,因此无法骗过编译器,能够完全保证私有成员数据不被非法访问。完全保证私有成员数据不被非法访问。36模块性模块性-ModularitynBreaks up something complex into manageable piecesnHelps people understand complex systemsnCohesion(内聚)(内聚), Coupling(耦合)(耦合)nClass, Compon
23、ent, Package37PackagenA general purpose mechanism for organizing elements into groupsnA model element that can contain other model elements.nA package can be used: nTo organize the model under development.nAs a unit of configuration management.38A Package Can Contain ClassesnThe Package, University
24、Artifacts, contains one package and five classes39层次性层次性-HierarchynAny ranking or ordering of abstractions into a tree-like structure nTypes of Hierarchy:Inheritance, AggregationShapeShapeTwoDimensionalShapeTwoDimensionalShapeThreeDimensionalShapeThreeDimensionalShapeCircleCircleSquareSquareTriangle
25、TriangleSphereSphereCubeCubeTetrahedronTetrahedronIncreasingIncreasingabstractionabstractionDecreasingDecreasingabstractionabstractionElements at the same level of the hierarchy Elements at the same level of the hierarchy should be at the same level of abstractionshould be at the same level of abstr
26、action40Agenda-4nObject and ClassnFour Principles of OOn nGeneralization and PolymorphismnPrinciples of Visual ModelingnThe UMLnProcess and visual modeling41GeneralizationnA relationshiprelationship among classes where one class shares the structure and/or behavior of one or more classesnDefines a h
27、ierarchy of abstractions in which a subclasssubclass inherits from one or more superclassessuperclassesnSingle inheritancenMultiple inheritancenIs an “is a kind of” relationship.42范例:单一继承范例:单一继承nOne class inherits from another43范例:多重继承范例:多重继承nA class can inherit from several other classesUse multipl
28、e inheritance only when needed and Use multiple inheritance only when needed and always with caution!always with caution!44What Is Inherited?nA subclass inherits its parents attributesattributes, operationsoperations, and relationshipsrelationshipsnA subclass may:nAdd additional attributes, operatio
29、ns, relationshipsnRedefine inherited operations (Use caution!)nCommon attributes, operations, and/or relationships are shown at the highest applicable level in the hierarchy45范例:继承什么?范例:继承什么?class Student protected string name;public string getName() public Account theAccount;class GraduateStudent e
30、xtends Student n派生类(子类)从基类(超类、父类)中派生,继承了基派生类(子类)从基类(超类、父类)中派生,继承了基类中全部的类中全部的public和和protected数据成员和方法。所以即数据成员和方法。所以即使使GraduateStudent中没有定义中没有定义getName(),也会从,也会从Student中得到中得到getName()方法的全部实现方法的全部实现n派生类也会继承基类中的关系,因此派生类也会继承基类中的关系,因此GraduateStudent与与Account也有聚合关系也有聚合关系46继承的原始目的继承的原始目的n在面向对象思想发展的初期,通过继承在面
31、向对象思想发展的初期,通过继承复用代码曾经被认为是面向对象最重要复用代码曾经被认为是面向对象最重要的目标之一的目标之一n当时人们的想法是:从基类获得大部分当时人们的想法是:从基类获得大部分成熟的代码,实现主要的功能,而修改成熟的代码,实现主要的功能,而修改必要的部分,实现特色功能必要的部分,实现特色功能n很遗憾,实践中人们发现无法达成事先很遗憾,实践中人们发现无法达成事先预期的效果预期的效果47继承并非代码复用的最佳机制继承并非代码复用的最佳机制n继承在代码复用方面不如其它方式灵活有效继承在代码复用方面不如其它方式灵活有效比如函数库比如函数库n代码复用在今天的意义不象先前预期的那么大,代码复用
32、在今天的意义不象先前预期的那么大,原因是:代码只是细节,系统由接口定义。另原因是:代码只是细节,系统由接口定义。另外软件开发的人力资源越来越丰富,开发难度外软件开发的人力资源越来越丰富,开发难度大幅降低大幅降低n但是继承所提供的代码复用仍然是一项重要的但是继承所提供的代码复用仍然是一项重要的“福利福利”,应当善加利用,应当善加利用n今天继承的主要意义在于为实现今天继承的主要意义在于为实现多态多态铺平了道铺平了道路路48What Is Polymorphism?nThe ability to hide many different implementations behind a single
33、interface49范例:多态范例:多态 abstract class Shape public abstract void draw();class Rectangle extends Shape / 覆盖覆盖(override)基类方法基类方法 public void draw() . /* 绘制矩形绘制矩形 */ class Circle extends Shape / 覆盖覆盖(override)基类方法基类方法 public void draw() /* 绘制圆形绘制圆形 */ 50虚函数虚函数多态多态class Shape public:virtual void Draw (vo
34、id) ;class Circle : public Shapepublic:virtual void Draw (void) ;class Sphere : public Shapepublic:virtual void Draw (void) ;void DrawShape(Shape *aShape)aShape-Draw();main()Shape aShape;Circle aCircle;Sphere aSphere; DrawShape(&aShape);DrawShape(&aCircle);DrawShape(&aSphere);51应用多态性应用多态性n假设我们有一个数组假
35、设我们有一个数组sharr,里面放着一排,里面放着一排Shape,但是不知道哪些是,但是不知道哪些是Rectangle,哪些,哪些是是Circle。利用多态性,我们可以:。利用多态性,我们可以:for (int i = 0; i sharr.length; +i) Shape shape = (Shape)sharri; shape.draw();n遍历整个数组的过程中,各个遍历整个数组的过程中,各个Shape自己知道自己知道应当如何在画布上绘制自己。应当如何在画布上绘制自己。shape.draw()这同一行代码在这同一行代码在shape指向不同的对象时表现指向不同的对象时表现出不同的行为,这
36、就是所谓多态性出不同的行为,这就是所谓多态性52Agenda-6nObject and ClassnFour Principles of OOnGeneralization and Polymorphismn nPrinciples of Visual ModelingnThe UMLnProcess and visual modeling53What Is a Model?nA model is a simplification(简化)(简化) of reality54Why Model?nModeling achieves four aims:nHelps you to visualize
37、visualize a system as you want it to be.nPermits you to specifyspecify the structure or behavior of a system.nGives you a template that guides you in constructingconstructing a system.n nDocumentsDocuments the decisions you have made.nYou build models of complex systems because you cannot comprehend
38、 such a system in its entiretynYou build models to better understand the system you are developing55建模的意义建模的意义n模型是对现实的简化,建模是为了更好地模型是对现实的简化,建模是为了更好地理解系统。理解系统。n模型帮助我们按照实际情况或需求对系统可视模型帮助我们按照实际情况或需求对系统可视化;化;(掌握不了文字,画幅画代替掌握不了文字,画幅画代替)n模型允许我们详细说明系统的结构、行为;模型允许我们详细说明系统的结构、行为;n模型给出了一个构造系统的模板;模型给出了一个构造系统的模板;n模
39、型对我们作出的决策进行文档化。(先有文模型对我们作出的决策进行文档化。(先有文档,再有代码)档,再有代码)56The Importance of ModelingPaper AirplanePaper AirplaneFighter JetFighter JetLess ImportantLess ImportantMore ImportantMore Important57Principle 1: The Choice of Model Is ImportantnThe models you create profoundly influence how a problem is attac
40、ked and how a solution is shapednIn software, the models you choose greatly affect your world viewnEach world view leads to a different kind of system58Principle 2: Levels of Precision May DiffernEvery model may be expressed at different levels of precision(精度)(精度) nThe best kinds of models let you
41、choose your degree of detail, depending on:nWho is viewing the modelnWhy they need to view it59Principle 3: The Best Models Are Connected to RealitynAll models simplify realitynA good model reflects potentially fatal characteristicsnThe trick is to be sure that your simplifications dont mask any imp
42、ortant details. A good model reveals any potentially fatal flaws in design60Principle 4:No Single Model Is SufficientnNo single model is sufficient. Every non-trivial system is best approached through a small set of nearly independent models. nCreate models that can be built and studied separately,
43、but are still interrelated61建模的原理建模的原理n选择创建什么模型对如何动手解决问题和如何形选择创建什么模型对如何动手解决问题和如何形成解决方案有意义深远的影响。成解决方案有意义深远的影响。n三只小猪盖房子三只小猪盖房子 摩天大厦摩天大厦n每一种模型可以在不同的精度级别上表示。每一种模型可以在不同的精度级别上表示。n最好的模型可以让你根据观察的角色及原因选择最好的模型可以让你根据观察的角色及原因选择它的详细程度。它的详细程度。n对每个系统最好用一组几乎独立的模型去处理。对每个系统最好用一组几乎独立的模型去处理。n飞机模型飞机模型62Agenda-7nObject T
44、echnologynObject and ClassnFour Principles of OOnGeneralization and PolymorphismnPrinciples of Visual Modelingn nThe UMLnProcess and visual modeling63The UMLnUMLYou Must LearnnUMLUnified Modeling LanguagenUML是一种标准的图形化建模语言,它是面向是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示,它:对象分析与设计的一种标准表示,它:n不是一种可视化的程序设计语言,而是一种可视
45、化不是一种可视化的程序设计语言,而是一种可视化的的建模语言建模语言建模语言建模语言n不是工具或知识库的规格说明,而是一种建模语言不是工具或知识库的规格说明,而是一种建模语言规格说明,是一种表示的规格说明,是一种表示的标准标准标准标准n不是过程,也不是方法,但允许任何一种过程和方不是过程,也不是方法,但允许任何一种过程和方法使用它法使用它64What Is the UML?nThe UML is a language fornVisualizingnSpecifyingnConstructingnDocumenting the artifacts of a software-intensive
46、systemUnified Modeling LanguageUnified Modeling Language(统一建模语言)是对象管(统一建模语言)是对象管(统一建模语言)是对象管(统一建模语言)是对象管理组织理组织理组织理组织(OMGOMG)制定的一个制定的一个制定的一个制定的一个通用通用通用通用的、的、的、的、可视化可视化可视化可视化的的建模语言建模语言建模语言建模语言标标标标准,可以用来准,可以用来准,可以用来准,可以用来可视化可视化可视化可视化(visualizevisualize) 、描述描述描述描述(specifyspecify)、)、)、)、构造构造构造构造(construc
47、tconstruct)和)和)和)和文档化文档化文档化文档化(documentdocument)软件密集型系)软件密集型系)软件密集型系)软件密集型系统的各种工件(统的各种工件(统的各种工件(统的各种工件(artifactsartifacts,又译制品),又译制品),又译制品),又译制品) 65UML是标准的符号是标准的符号 1. 1. 用用用用UMLUML画图很容易画图很容易画图很容易画图很容易摆脱符号烦恼摆脱符号烦恼摆脱符号烦恼摆脱符号烦恼全心面对问题全心面对问题全心面对问题全心面对问题2 2. . UMLUML仅仅是一种表达形式仅仅是一种表达形式仅仅是一种表达形式仅仅是一种表达形式用好用
48、好用好用好UMLUML首先需要掌握首先需要掌握首先需要掌握首先需要掌握OOADOOAD的基本原则和的基本原则和的基本原则和的基本原则和方法方法方法方法,并在一定的,并在一定的,并在一定的,并在一定的软件开发过程软件开发过程软件开发过程软件开发过程(如统一过程(如统一过程(如统一过程(如统一过程UP/USDP/RUPUP/USDP/RUP、XPXP等)的指导下进行有取等)的指导下进行有取等)的指导下进行有取等)的指导下进行有取舍的运用舍的运用舍的运用舍的运用但知道要画什么是困难的!但知道要画什么是困难的!但知道要画什么是困难的!但知道要画什么是困难的!66选择选择UML-1nMartin Flo
49、wer:如果你正在使用其它:如果你正在使用其它的旧技术,我强列建议您马上转用的旧技术,我强列建议您马上转用UML,因为它明显地将成为符号系统的统一,因为它明显地将成为符号系统的统一标准。如果你正在考虑开始使用设计符标准。如果你正在考虑开始使用设计符号来工作,号来工作,UML是一个好的选择,因为是一个好的选择,因为它已经统治业界了它已经统治业界了 67选择选择UML-2nUML不是万能的,很多场合并不适合使用不是万能的,很多场合并不适合使用n1)传统的做法已)传统的做法已完全适用完全适用完全适用完全适用,对,对OOAD的要求也不的要求也不高,项目非常成功,无任何改进的必要高,项目非常成功,无任何
50、改进的必要n2)开发的)开发的系统比较简单系统比较简单系统比较简单系统比较简单,直接用源码配上少量的,直接用源码配上少量的文字就能解决问题,软件开发文档也无需添加图形文字就能解决问题,软件开发文档也无需添加图形来辅助说明来辅助说明n3)开发人员更)开发人员更习惯于习惯于习惯于习惯于直接阅读源码,用源码交流,直接阅读源码,用源码交流,这样做不影响工作效率和质量这样做不影响工作效率和质量n4)开发的系统本身)开发的系统本身不属于不属于不属于不属于OO方法、方法、UML适用范围适用范围68选择选择UML-3n很多情况下,推荐使用很多情况下,推荐使用UML: n1)OOOO方法方法方法方法是项目决定采
51、用的方法论,是整个项目或产品成是项目决定采用的方法论,是整个项目或产品成功的关键功的关键n2)开发人员感觉用源码说明不了真正的问题,希望利用可视)开发人员感觉用源码说明不了真正的问题,希望利用可视化建模语言化建模语言简化文档简化文档简化文档简化文档,提高交流效率,准确抓住问题本质,提高交流效率,准确抓住问题本质n3)系统的规模和设计都)系统的规模和设计都比较复杂比较复杂比较复杂比较复杂,需要用图形抽象地表达复,需要用图形抽象地表达复杂的概念,增强设计的灵活性、可读性和可理解性,以便暴杂的概念,增强设计的灵活性、可读性和可理解性,以便暴露深层次的设计问题,降低开发风险露深层次的设计问题,降低开发
52、风险n4)组织希望)组织希望记录记录记录记录已成功项目、产品的公共设计方案,在开发已成功项目、产品的公共设计方案,在开发新项目时可以参考、重用过去的设计,以节省投入,提高开新项目时可以参考、重用过去的设计,以节省投入,提高开发效率和整体成功率发效率和整体成功率n5)有必要采用一套)有必要采用一套通用通用通用通用的图形语言和符号体系描述组织的业的图形语言和符号体系描述组织的业务流程和软件需求,促进业务人员、软件开发人员之间一致、务流程和软件需求,促进业务人员、软件开发人员之间一致、高效的交流高效的交流69UML发展背景发展背景n面向对象建模语言产生于面向对象建模语言产生于1970年代中期年代中期
53、n1990年代初,建模语言数量达到年代初,建模语言数量达到50多种多种n众多语言各有千秋,缺乏通用性众多语言各有千秋,缺乏通用性n语言之间的细小差别妨碍了用户的交流语言之间的细小差别妨碍了用户的交流n1990年代中期,三位主要的年代中期,三位主要的OO建模大建模大师:师:Booch,Rumbaugh,Jacoson开始开始致力于建立统一建模语言的工作致力于建立统一建模语言的工作70三位面向对象大师三位面向对象大师71UML诞生诞生公公众众反反馈馈OOPSLA95 Unified Method 0.8工工 业业化化标标 准准化化统统 一一化化分分 散散的的各各 部部分分 Booch93 OMT-
54、21996.6和和1996.10 UML 0.9&0.911997.9公布公布 UML 1.1 1997.1公布公布 UML 1.0合作伙伴合作伙伴意见意见1997.11.171997.11.17 UML 1.1UML 1.1被被被被OMG OMG 接纳为标准接纳为标准接纳为标准接纳为标准 Booch91 OMT-1 其他方法其他方法 OOSE72UML统一统一UML类类(class)关联关联(association)泛化泛化(generalization)聚集聚集(aggregation)Booch类类(class)使用使用(use)继承继承(inherit)组成组成(containing)
55、Coad类与对象类与对象(class&object)实例连接实例连接(instance connection)泛化说明泛化说明(Gen-Spec)部分与整体部分与整体(part-whole)Jacobson对象对象(object)认知关联认知关联(acquaintance association)继承继承(inherit)组成组成(consists of)Odell对象类型对象类型(object type)关系关系(relationship)子类型子类型(subtype)组成组成(composition)Rumbaugh类类(class)关联关联(association)泛化泛化(genera
56、lization)聚集聚集(aggregation)Shlaer/Mellor对象对象(object)关系关系(relationship)子类型子类型(subtype)无无73UML统一统一74Agenda-8nObject and ClassnFour Principles of OOnGeneralization and PolymorphismnPrinciples of Visual ModelingnThe UMLn nProcess and visual modeling75How much you can depend on UML?nThe UML is notna proce
57、ss or methodologynobject-oriented analysis and designnGuidelines(指导、准则指导、准则) for designnMuch more important: Skill in designing with objects.76A Language Is Not Enough to Build a System77What Is a Process?nDefines Who is doing What, When to do it, and How to reach a certain goal.New or changedrequir
58、ementsNew or changed systemSoftware EngineeringProcess78开发过程概述开发过程概述n传统开发过程传统开发过程瀑布模型瀑布模型n统一软件开发过程(统一软件开发过程(RUP)79传统开发过程传统开发过程n瀑布模型瀑布模型RequirementsAnalysisDesignImplementationTestTime80OOAD的开发过程的开发过程n大大项目分解为一些子项目项目分解为一些子项目n使用使用UML工具工具n统一软件开发过程统一软件开发过程(RUP)是一个迭代、是一个迭代、递增的开发过程递增的开发过程81RUP的软件开发生命周期的软件开发生命周期82