资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,面向对象技术与应用,王少锋,Email:,wangsf,2003年,9,月,18,日,助教,刘敬,liuj02,陈勇,y-chen02,2,主要内容,教学计划,面向对象技术概述,UML,概述,3,讲课计划,9,月,18,日,,25,日,10,月9日,16日,23日,30日,11,月6日,13日,20日,27日,12,月4日,11日,18日,25日 (共1,4,次),一课程简介,面向对象技术概述,,UML(Unified Modeling Language),简介 (,1-2,次),二,Use Case,图,顺序图,协作图 (,3,次),三类图,,,对象图,包,状态图,活动图,构件图,配置图 (3次),4,四,Web,建模 (1次),五,Rose,开发工具的使用 (1次),Add-In, Script, Stereotype,Rose,等开发工具的简单使用穿插于各章节讲,六,UML,与设计模式 (1次),七,UML,和,Rose,常见问题分析 (1次),*八,OO,程序设计语言、代码生成 (1次),九,RUP (Rational Unified Process) (1,次),十实例应用分析(穿插于各章节讲 ),十一复习及答疑,(1,次),5,一. 为什么学习这门课?,从程序员(,programmer),到系统分析员(,system analyst),从建筑工人(,worker),到建筑师(,architect),6,二、课程要求:,清晰、准确、熟练地掌握面向对象方法的主要思想、基本概念与原则。,针对具体问题会应用面向对象技术进行系统分析和设计,掌握在,ROSE,环境下用,UML,进行分析和设计的技术。,学会用,Java,或其它面向对象语言实现用面向对象方法建立的系统模型。,7,三、预备知识:,了解软件工程的基本原理,会使用,Java,或其它,OOPL。,OOPL: Object-Oriented Programming Language,本课程和其它课程的关系,8,四、大作业,:,1.根据一个小型系统的需求说明,用,UML,建立系统的分析与设计模型。(系统模型图),2. 用,Java (JSP),或其它,OOPL,实现作业,1中的模型,完成编程和调试。,要求:独立、按时完成,五、考核方式,作业1:30% (分析和设计),作业2:20% (实现 + 设计报告),期终考试:50%,9,参考书,主要参考书:,1.,上学期的讲义,,,2003,年春季学期软件学院研究生课程,面向对象技术与应用,电子版已放在,ftp:/166.111.102.2,,用户名,ss,,密码,ss,。,2.,The Unified Modeling Language User Guide, Grady,Booch, James,Rumbaugh,Ivar,Jacobson, Addison-Wesley, 1999 (,有中译本“,UML,用户指南,”,邵维忠等译,机械工业出版社),英文电子版已放在,ftp,上。,英文版:,The must-have guide to UML.,10,3.,The Unified Modeling Language Reference Manual, J.,Rumbaugh, I. Jacobson, G.,Booch, Addison-Wesley, 1999 (,有中译本),英文版:,The authoritative reference manual on UML, a must-have for anyone serious about advanced usage of UML.,英文和中文电子版已放在,ftp,上。,4.,Mastering UML with Rational Rose 2002,,,Wendy Boggs and Michael Boggs,,,SYBEX,,,2002,中译本为,“,UML,与,Rational Rose 2002,从入门到精通”,,,邱仲潘等译,电子工业出版社,2002年,中译本注意和旧版本的区别,“,UML with Rational Rose,从入门到精通,”,,,Wendy Boggs,,,Michael Boggs,著,邱仲潘等译,电子工业出版社,,2000,年,(是介绍,Rose 98i,),英文电子版已放在,ftp,上。,11,其它参考书:,5.,UML Distilled,(2nd Edition),Martin Fowler, Kendall Scott,著,(,有中译本,UML,精粹,徐家福译,清华大学出版社),英文电子版已放在,ftp,上。,英文版:,A quick and simple introduction to UML.,6.,面向对象的系统分析,,邵维忠,杨芙清著,清华大学出版社,广西科学技术出版社,1998,7.,面向对象的系统设计,,邵维忠,杨芙清著,清华大学出版社,,2003,8.,UML,和模式应用:面向对象分析与设计导论,,,Craig,Larman,著,1998 (姚淑珍,李虎等译,机械工业出版社,2002),英文版:,Applying UML and patterns: an introduction to object-oriented analysis and design,,英文第一版北图可借到,英文第二版电子版已放在,ftp,上。,12,9.,Building Web Applications with UML, Jim,Conallen, Addison-Wesley, 2000,(国内能买到第一版影印版,,上有,2002,年,10,月出版的该书的第二版),10.,Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John,Vlissides,,,Addison-Wesley, 1994 (,有影印版和中译本),英文和中文电子版已放在,ftp,上。,11. RUP 2003,在,Rational Suite Enterprise,中,13,讲义、参考书与课程内容的关系,一,OO,技术概述,,UML,简介 二、三,UML,的构成,四,Web,建模,五,Rose,开发工具的使用,(,Add-In, Script, Stereotype,)六,UML,与设计模式,七,UML,和,Rose,常见问题分析,*八,OO,实现技术,九,RUP,十实例应用分析,十一复习及答疑,2. UML,用户指南,3. UML,参考手册,4. UML,与,Rational Rose 2002,从入门到精通,5. UML Distilled,6.,面向对象的系统分析,7.,面向对象的系统设计,8. UML,和模式应用,9. Building Web Applications with UML,10.,设计模式,11. RUP 2003,1.,讲义,一 十一,14,进一步读物,国际上和面向对象技术有关的刊物, 如:,IEEE Software,JSS (Journal of Systems and Software),UML98,UML99,UML2000,UML2001 (,会议论文集,清华图书馆能借到),UML2002 (,会议录编目中,),UML2003,,,2003,年,10,月,20,日,- 24,日,http:/,http:/,http:/,www.uml.org,http:/,www.omg.org/technology/uml/index.htm,(OMG: Object Management Group),15,http:/www.cetus-links.org,18,193 Links on Objects & Components,16,http:/,/,(IT,之源,),17,学习本课程的建议,课前预习,多学习面向对象分析和设计的例子,尽快学会使用支持,UML,的工具(如,Rose 2003)。,18,Questions,?,19,主要内容,教学计划,面向对象技术概述,UML,概述,20,关于软件工程的补充知识,软件工程的目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统。,(高质量不只是指错误率低,还包括好用、易用、可移植、易维护等。),软件的固有复杂性:,著名的计算机专家、被称之为,IBM 360,系列计算机之父的,F. Brooks,认为软件的复杂性是固有的,软件可能是人类所能制造出来的最复杂的实体,。,(F. Brooks,No Silver Bullet: Essence and Accidents of Software Engineering, Computer, April 1987, pp.10-19 ),21,软件固有复杂性的影响,软件固有复杂性使得开发成员之间的通讯变得困难,,开发费用超支,、,开发时间延期等,;也导致,产品有缺陷,、,不易理解,、,不可靠,、,难以使用,、,功能难以扩充,等。,软件的复杂性是固有的,即不能采用某种方法彻底消除软件的复杂性,因此软件危机只能是通过控制复杂性的方法解决。,22,控制软件复杂性的基本方法,分解,对复杂系统采用“各个击破”的策略,抽象,抽取系统中的基本特性而忽略非基本的部分,模块化,高内聚,(cohesion),,低耦合,(coupling),高内聚指的是在一个模块中应尽量多地汇集逻辑上相关的计算资源;低耦合指的是模块之间的相互作用应尽量少。,信息隐蔽,也称封装。,模块内部的实现细节与外界隔离。,23,面向对象(,Object-oriented),技术,面向对象技术充分体现了,分解,抽象,模块化,信息隐蔽,等思想,可以有效地,提高软件生产率,缩短软件开发时间,提高质量,24,A Brief History of OO Technology,1967:,Simula,programming language,1970s: Smalltalk programming language,1980s: Theoretical foundations, C+, Objective-C, etc.,1990s: Object-oriented analysis and design methodologies (,Booch, OMT, OOSE, etc.), Java,1997: The Unified Modeling Language (UML) standardized by the Object Management Group (OMG),25,面向对象技术的优势,稳定,:,较小的需求变化不会导致系统结构大的改变。,易于理解:,面向对象的模型更加贴切地反映了现实世界,尤其对于使用者。,面向对象的方法,Functions,功能分解法,26,面向对象的方法有助于开发,大型软件系统,。,具有更高的,可靠性,和,灵活性,。,问题:和传统方法相比,,OO,方法为什么会具有这些优势?,27,面向对象领域中的一些常用术语,Object,对象,( Instance,实例),Class,类,Attribute,属性,Operation,操作,(,Method,方法),Encapsulation,封装,Inheritance,继承,Polymorphism,多态,Message,消息,OOA,面向对象分析,OOD,面向对象设计,28,对象(,Object),对象,是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组方法组成。,29,说明:,对象只描述客观事物本质的、与系统目标有关的特征,而不考虑那些非本质的、与系统目标无关的特征。,在软件生命周期的不同阶段,对象可以有不同的表现形式。,如在,OOA/OOD,阶段对象是用某种表示法给出的比较粗略的定义,而在,OOP,阶段对象是比较详细的源程序代码。,对象之间通过消息通信。,一个对象通过向另一个对象发送消息激活某一个功能。,在不是纯面向对象语言中允许有不属于任何对象的成分存在,例如,C+,程序中的,main,函数。,“,实例,”,(,instance),和,“,对象,”,的关系,30,类(,Class),类,是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和方法两个主要部分。,31,说明,同类对象具有相同的属性和方法,是指它们的定义形式相同,而不是说每个对象的属性值都相同。,类是,静态,的;类的存在、语义和关系在程序执行前就已经定义好了。,对象是,动态,的; 对象在程序执行时可以被创建和删除。,32,类的示例,类:,Employee,类名,属性,方法,33,封装(,Encapsulation),封装,就是把对象的属性和方法结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。,34,说明:,封装就是使一个对象形成两个部分:,接口,和,实现,,对于用户来说,接口是可见的,实现是不可见的。,封装提供两种保护,1.,保护对象,:防止被用户误用。,2.,保护客户端,:封装能减小实现过程改变的副作用,即实现过程的的改变不会影响到相应客户端的改变。,35,继承(,Inheritance),特殊类的对象拥有其一般类的全部属性与方法,称作特殊类对一般类的,继承,。,(一般类,/,特殊类;父类/子类;超类/子类;基类/派生类等是相同的概念。),36,说明:,继承保证类之间的一致性,父类可以为所有子类定制规则;,(,许多,OOP,语言提供了这种实现机制,如,C+,中的虚函数,,Java,中的接口等)。,利用继承可以开发更贴近现实的模型,继承增加软件重用的机会,降低开发和维护费用,问题:,面向对象技术和软件重用的关系?,继承的目的?是否只为重用?,37,子类可以继承父类的属性,也可以增加或重新定义继承的属性。,子类可以继承父类的操作,也可以增加或重新定义继承的操作。(重新定义称为,override),override(,覆盖)和,overload(,重载)的区别。,38,override,的例子,public class A ,String name;,public String,getValues,() ,return “Value is: ” + name;,public class B extends A ,String address;,public String,getValues,() ,return “Value is: ” + address;,39,overload,的例子,public class A ,int,age;,String name;,public void,setValue,(,int,i),age = i;,public void,setValue,(String s),name = s;,40,继承可分为,单继承,和,多继承,单继承:子类只从一个父类继承,多继承:子类从多于一个的父类继承,41,单继承例子,例:交通工具是一个父类,地面交通工具和空中交通工具是子类,42,多继承例子,一个两栖交通工具同时继承地面交通工具和水上交通工具。,43,多继承可能引起的问题:“命名冲突”问题,C+,中采用成员名限定解决,Eiffel,中采用方法再命名机制,Java,中不支持多继承,44,多态(,Polymorphism),多态,是指在一般类中定义的属性或方法被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。,45,多态的例子,46,说明:,跟多态相关的概念:,覆盖(,override),,动态绑定(,dynamic binding),多态属于运行时问题,而重载(,overload),是编译时问题。,47,消息(,Message),消息,就是向对象发出的服务请求,它包含下述信息:提供服务的对象标识、服务(方法)标识、输入信息和回答信息。,48,说明:,通过消息进行对象之间的通信,是,OO,方法的一个原则。,采用,消息,这个术语的好处(而不是,函数调用,):,第一,更接近人们日常思维所采用的术语;,第二,其涵义更具有一般性,不限制采用何种实现技术。,如在分布式环境中,对象可以在不同的网络结点上实现并且相互提供服务,在这种情况下,消息术语具有更强的适应性。,49,面向对象分析,OOA,简单地说,,OOA,(Object,-Oriented Analysis),面向对象的分析,就是运用面向对象的方法进行需求分析。,50,面向对象设计,OOD,定义:,OOD,(Object-Oriented Design),面向对象的设计,就是在,OOA,模型的基础上运用面向对象方法进行系统设计,目标是产生一个符合具体实现条件的,OOD,模型。,51,OOA,和,OOD,的关系,OOA,和,OOD,采用一致的概念和表示法,,二者之间不存在鸿沟。,OOA,OOD,分析,设计,数据流图,DFD,模块结构图,MSD,实体-关系图,ERD,传统方法的分析和设计之间存在鸿沟,OO,方法的分析与设计之间不存在鸿沟,类图,类图,52,OOA/OOD,和结构化分析/设计,OOA/OOD,中的思维过程,发现过程,以及用户、分析员、设计人员之间的交流与结构化分析/设计是本质不同的。,一些适合于早期方法的概念,如内聚、耦合、抽象、有意识地推迟设计决策等同样适用于,OOA/OOD。,OOA/OOD,对结构化方法是“,revolution”,还是“,evolution”?,53,主要内容,教学计划,面向对象技术概述,UML,概述,54,What is the UML?,UML stands for,Unified Modeling Language,.,The UML is a language for,visualizing (,可视化),specifying (,详述),constructing (,构造),documenting (,文档化),the artifacts of a software-intensive system.,55,说明:,UML can be used with all processes, throughout the development life cycle, and across different implementation technologies.,56,Why Build Models?,更好地理解问题,(To understand the problem better),人员之间的沟通,(To communicate with other persons),发现错误或疏漏的地方,(To find errors or omissions),获取设计结果,(To plan out the design),生成代码,(To generate code),57,UML 1.3,June 99,UML 1.4,Sep., 2001,UML 1.5,March, 2003,UML 2.0,History of the UML,Industrialization,Standardization,Unification,Fragmentation,即将正式发布,58,2001,年,,OMG,开始,UML 2.0,的工作,,UML 2.0,是一个比较大的升级工作。,UML 2.0,规范说明分为四大部分,(1) UML 2.0 Infrastructure,(2) UML 2.0 Superstructure,(3) UML 2.0 Object Constraint Language,(4) UML 2.0 Diagram Interchange,其中,(1),、,(3),已被,OMG,接受,,(2),、,(4),的最后修订版本已被,OMG,接受,正处于,finalization,阶段。,正式发布时,有些部分可能会合并。,59,UML,是由世界著名的面向对象技术专家,G.,Booch,J,.,Rumbaugh,和,I. Jacobson,发起,在,Booch,方法,,OMT,方法和,OOSE,方法的基础上,广泛征求意见,集众家之长,几经修改而完成的。,Three amigos,Booch,Rumbaugh,Jacobson,60,说明:,标准建模语言,UML,是软件工程领域中具有划时代意义的研究成果。,UML,吸取了面向对象技术领域中其它流派的长处。,随着,UML,被,OMG,采纳为标准,面向对象领域的方法学大战(,method wars),也告结束。,UML,得到了诸多大公司的支持,如,IBM,HP,Oracle,Microsoft,等。,预计:,UML,将成为面向对象技术领域内占主导地位的标准建模语言。,61,一些主要的,OO,建模技术(,UML,之前),Object-oriented systems analysis, by,Shlaer,/Mellor in 1988,OOA/OOD, by Peter,Coad,and Edward Yourdon in 1991,Responsibility-driven, CRC-cards,by Rebecca,Wirfs,-Brock (in 1990),Booch,Method, by Grady,Booch,in 1991,OMT (Object,Modelling,Technique), by James,Rumbaugh, etc. in 1991,OOSE (Object-oriented software engineering), by,Ivar,Jacobson in 1992,其它还有很多,62,HP Fusion,Operation descriptions and,message numbering,Embley,Singleton classes and,high-level view,Meyer,Before and after,conditions,Harel,Statecharts,Gamma, et al,Frameworks and patterns,Wirfs,-Brock,Responsibilities,Odell,Classification,Shlaer,- Mellor,Object lifecycles,Rumbaugh,OMT,Booch,Booch,method,Jacobson,OOSE,Contributions to the UML,63,各种,OOA/D,方法的比较:,Object-oriented methods: principles & practice, third edition, Ian Graham, Addison Wesley, 2001,中的附录,B:,“,Seminal OOA/D methods”,有对各种,OOA/OOD,方法的综述。(50种左右),64,UML,的特点,UML,的主要特点可归纳为以下几点:,统一标准:已成为面向对象的标准化的统一的建模语言。,面向对象,可视化、表示能力强大,独立于过程,概念明确,建模表示法简洁,图形结构清晰,容易掌握使用。,65,UML,和程序设计语言的关系,用,Java,C+,等,programming language,是用编码实现一个系统。,用,UML,是对一个系统建立模型。,一些,CASE,工具可以根据,UML,所建立的系统模型来产生,Java,C+,或其它程序设计语言代码框架。,66,关于,UML,的一些认识,UML,不是一个独立的软件工程方法,而是面向对象软件工程方法中的一个部分。,一个比喻:,UML,中所提供标准的图符,相当于音乐五线谱里的乐符,学会看乐符才能看得懂乐谱,才能进一步创造音乐。同样,懂得,UML,中的图符才能进行系统分析和设计。,OOA/OOD,教您活用,UML,的图符,以及活用时所必须遵循的原则及步骤。,67,贝多芬作曲时使用五线谱,您设计软件时使用,UML,一个比喻,68,UML,的构成,Three major elements:,basic building blocks (,基本构造块),rules (,规则),common mechanisms (,公共机制),69,Building Blocks of the UML,UML encompasses three kinds of building blocks:,things (,事物),relationships (,关系),diagrams (,图),70,There are four kinds of things in the UML,structural things (,结构事物),class, interface, collaboration, use case, active class, component, node,behavioral things (,行为事物),interaction, state machine,grouping things (,分组事物),package,annotational,things (,注释事物),note,71,There are four kinds of relationships in the UML,dependency (,依赖),association (,关联),generalization (,泛化),realization (,实现),72,There are nine kinds of diagrams in the UML,class diagram (,类图),object diagram (,对象图),use case diagram (,用例图),sequence diagram (,顺序图),collaboration diagram (,协作图),statechart,diagram (,状态图),activity diagram (,活动图),component diagram (,构件图),deployment diagram (,配置图),73,Rules of the UML,The UML has semantic rules for,names (,命名),scope (,范围),visibility (,可见性),integrity (,完整性),execution (,执行),74,Common Mechanisms in the UML,Four common mechanisms in the UML,specifications (,详述,规范说明),adornments (,修饰),common divisions (,通用划分),extensibility mechanisms (,扩展机制),stereotypes (,版型, 构造型),tagged values (,标记值),constraints (,约束),75,UML,的构成,basic building blocks,rules,common mechanisms,things,structural things: (,共7种),behavioral things: (,交互, 状态机),grouping things: (package),annotational,things: (note),relationships,diagrams,dependency,association,generalization,realization,类图, 对象图, 用例图, 顺序图, 协作图, 状态图, 活动图, 构件图, 配置图,names,scope,visibility,integrity,execution,specifications,adornments,common divisions,extensibility mechanisms(,版型, 标记值,约束),76,UML,中的视图,UML,中的视图包括:,用例视图,(,Use Case View)、,逻辑视图,(,Logical View)、,实现视图,(,Implementation View)、,进程视图,(,Process View)、,部署视图,(,Deploymnet,View),等。,Physical,Logical View,Implementation View,Process View,Deployment View,Use Case View,77,UML,的应用领域,UML,被用来为系统建模,具有很宽的应用领域,其中最常用的是为软件系统创建模型,但,UML,也可用来描述其它非计算机软件的系统,如一个企业的机构或过程等。,Enterprise information systems,Banking and financial services,Telecommunications,Transportation,Defense/aerospace,Retail,Medical electronics,Scientific,Distributed Web-based services,.,78,在,分析阶段,,用户的需求用,UML,模型来描述。,在,设计阶段,,引入定义软件系统中技术细节的类(如处理用户接口、数据库、通信和并行性等问题的类)。,在,实现阶段,,用面向对象程序设计语言将来自设计阶段的类转换成实际的代码。,UML,模型还是,测试阶段,的依据。,单元测试使用类图和类规格说明,集成测试使用构件图和协作图,系统测试使用用例图来验证系统的行为,UML,在系统开发各阶段的应用,79,一个,UML,的例子 (,HelloWorld,),在,Web,浏览器中,显示“,Hello, World!,”的,Java applet,程序:,import,java.awt.Graphics,;,public class,HelloWorld,extends java.applet.Applet ,public void paint (Graphics g) ,g.drawString(Hello, World!, 10,10);,80,在,UML,中,对这个,applet,的建模如下图所示,类,HelloWorld,用一个矩形表示。类,HelloWorld,中给出了,paint,操作,在一个附属的,note,中说明了该操作的实现。,81,前面这个类图反映出了“,Hello World!,”这个,applet,基本部分,并没考虑别的事物。按照代码,这个,applet,还涉及另外两个类,即,Applet,类和,Graphics,类。,Applet,类是,HelloWorld,类的父类,,Graphics,类则在,HelloWorld,类的,paint,操作的特征标记,(,signature),和实现中被使用。在,UML,中,可用下图表示这两个类及与,HelloWorld,类的关系。,82,说明:,JBuilder,9.0,中的所得到的类图:,83,如果考虑类库及,Applet,上的继承关系,可以得到另一个类图,如下图所示:,84,为了管理大规模的类层次图,可以用包来组织类,如下图所示:,85,对象间的协同工作,HelloWorld,的一个,Sequence,图,86,HelloWorld,的构件图,“,HelloWorld,!,”是一个,applet,,不能单独运行,通常是嵌入在,Web,页中。下面是,HelloWorld,的构件图:,问题:如何在,Rose,中画上述图?,87,支持,UML,的工具,Rational Rose 2003,Together 6.1,ArgoUML,v0.14 ,可获得源代码,其它工具,88,Rational Rose,开发工具,Rose,是,Rational,公司开发的支持,UML,的,用于分析和设计面向对象软件系统的工具。,IBM.Rational.Suite.V2003.06.00.Multilanguage,89,Rational,产品的安装,90,总结,面向对象技术的基本概念,UML,的产生背景,特点,构成,对,UML,的一些认识等,Rose,开发工具,91,思考题,UML,为什么会在方法学大战中取胜,除了,UML,本身的优势外,是否还存在别的因素?,92,
展开阅读全文