版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*管理信息系统
ManagementInformationSystem
青岛科技大学MIS课程组*第10章面向对象系统分析与设计*本章学习目的掌握面向对象系统分析与设计的基本理论与主要概念掌握UML及其常用图:用例图、类图、顺序图熟悉设计模式的概念和S.O.L.I.D基本原则掌握MVC系统设计模式,熟悉常用的技术和框架原理第10章面向对象系统分析与设计*本章典型英文词汇面向对象ObjectOriented(OO)模型驱动开发ModelDrivenDevelopment(MDD)面向对象分析ObjectOrientedAnalysis(OOA)面向对象设计ObjectOrientedDesign(OOD)面向对象编程ObjectOrientedProgram(OOP)类Class对象Object关系Relation封装Encapsulation继承Inheritance多态Polymorphism统一建模语言UnifiedModelingLanguage(UML)对象关系映射Object/RelationalMapper(ORM)*第10章面向对象系统分析与设计
面向对象理念10.1类与对象10.2面向对象特征10.31.4统一建模语言(UML)10.4设计模式10.5*面向对象理念采用面向对象技术开发信息系统,其核心强调以数据为中心描述系统,而数据相对于功能而言,具有更强的稳定性,因此采用面向对象技术设计出的系统模型往往能较好地映射现实域模型。面向对象技术引入的对象、类、继承、多态、动态等重要概念,也为提高软件可重用性和降低软件开发复杂性提供了有效途径。总之,由于面向对象技术所具有的易于维护、可扩展性、代码重用等种种优点,它逐渐成为当前系统分析与设计的主流技术。10.1面向对象理念*从系统的功能入手,将系统按照工程标准和严格规范分解为若干功能模块,然后以这些模块为中心,采用模块化、自顶向下、逐步求精设计过程开发成型,系统实质是实现模块功能的函数和过程的集合。从系统处理的数据和针对数据的操作(即对象)入手,按照现实世界的人类思维将问题域分解为对象以及对象和对象之间的关系,通过对象的属性和行为设计开发成型,系统实际所关注的是执行操作的对象和对象之间的交互协作关系。面向对象的系统开发策略10.1.1从结构化分析设计到面向对象分析设计结构化的系统开发策略*结构化方法面向对象方法√面向对象方法则是用符合人类认识世界的思维方式来分析、解决问题,为需求分析人员提供系统构成视点、静态结构观点和动态结构视点,可以对软件开发过程所有阶段进行综合考虑;支持全面的问题分析和描述,建造起完整、清晰的需求模型,使软件生存期各阶段O结构化方法主要存在三方面问题:软件重用性差;软件可维护性差;开发出的软件不能满足用户的动态需要。10.1.1从结构化分析设计到面向对象分析设计*10.1.2模型驱动开发(MDD)需求三者相互关联,贯穿开发生命周期的各个阶段,有机地推动开发过程向前发展。模型测试*(1)个体特征分析(2)静态分析(3)动态分析面向对象分析10.1.3面向对象分析(OOA)与面向对象设计(OOD)IT行业神话戈登.摩尔“做什么”*(1)问题域部分的设计,即对OOA结果进行改进和精化,并将其由问题域转化到解域。面向对象设计(OOD)(2)人机交互与应用控制部分的设计10.1.3面向对象分析(OOA)与面向对象设计(OOD)*OOP的起源可追溯到1967年的Simula-67语言,该语言引入了数据抽象和类的概念,用于仿真实际问题。第一个真正意义上的面向对象语言是80年代初产生的Smalltalk,该语言规定一切都是对象,程序设计以尽可能自动化的单元来进行,并且有了图形设计界面的雏形。Smalltalk语言的广泛使用掀起了一场“面向对象运动”,随之诞生了ObjectiveC、C++、VB、Java和C#等语言。面向对象编程的产生与发展10.1.4面向对象编程(OOP)以太网技术的发明者迈特.卡夫*第10章面向对象系统分析与设计
信息技术基础设施10.1类与对象10.2面向对象特征10.31.4统一建模语言(UML)10.4设计模式10.5*
对象对象是存在于时间和空间中的具体实体
类
共同点类仅代表一种抽象,即一个对象的本质。类是一组对象,它们拥有共同的结构、共同的行为和共同的语义。10.2类与对象我们使用面向对象的方法来分析和设计复杂的软件系统,基本构建块是类和对象。*类(class):对象(object):具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。类也称作对象类,类是用来创造对象的模板。对象是一些属性及专用服务的封装体,它是问题空间中一些事物的抽象。指向对象发出的服务请求,包括扩:提供服务的对象标识、服务类型、输入信息和回答信息。成员:类和对象的成员包括名词特征和动词行为两种,其名词性的特征的正规称谓是成员变量、成员字段或成员属性;其动词性的行为的正规称谓是成员函数、成员方法或成员行为。
10.2.1基本概念消息:*事件:对象(object):事件驱动编程是一种编程范式,这里程序的执行流由外部事件来决定。OO方法论中的关系(relation)关注的是类之间和对象之间的联系。如果把继承(泛化)的关系看做纵向关系,则对象之间的关系就是横向关系,横向关系较为微妙,有两大种:关联关系、依赖关系。关联关系的深化是聚合关系,聚合关系又包括两种:共享关系和复合关系。
10.2.1基本概念*1.入2.理3.出构造方法名必须与类名相同,包括大小写都要相同。对构造方法不声明返回类型。构造方法也不能随便被修饰。在多数情况下,初始化一个对象的最终步骤是去调用这个对象的构造方法。为了与一般方法相区别,构造方法应满足以下语法规则:10.2.2延伸概念1.构造方法*2.实例与静态3.重载与重写4.接口与抽象类类的成员有两种:一种是被static关键字修饰的成员,叫类成员或静态成员。另一种是没有被static关键字修饰的成员,叫实例成员或对象成员。静态成员和实例成员的区别在于:类的静态成员在内存中只存一份。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。从使用者的角度出发,整个软件系统就是一个服务提供者。
10.2.2延伸概念*第10章面向对象系统分析与设计
信息技术基础设施10.1类与对象10.2
面向对象特征10.31.4统一建模语言(UML)10.4设计模式10.5*封装:就是把一些属性和方法封装到一个类里。继承:就如子类继承父类的一些属性和方法。多态:就如一个父类有多个不同特色的子类。面向对象的三大特征10.3面向对象特征*10.3.1封装A封装(encapsulation)是面向对象编程语言用于加强信息隐藏的重要机制,封装即隐藏了对象的属性和实现细节,仅对外公开接口,控制在对象中属性和方法的读写访问级别。封装使对象与对象之间产生了区别,构成封装的基本单位其实就是类。BCD一是便于使用者正确、方便地理解和使用系统,防止使用者错误修改系统的属性。二是有助于建立各个系统之间的松藕合关系,提高系统的独立性。三是提高软件的可重用性,每个系统都是一个相对独立的整体,可以在多种环境中得到重用。四是降低了构建大型系统的风险,即使整个系统不成功,个别的独立子系统有可能依然是有价值的。优点:*10.3.2继承
继承(inheritance)是OO的关键特征之一,它是指特殊类的对象拥有其一般类的全部属性和服务继承带来的最大好处是代码重用,只要没有特别的访问权限控制,扩充类可以任意使用基类中已定义好的属性和方法。从每个对象都是服务提供者的角度来理解,子类会提供和父类相同的服务。继承与扩展同时提高了系统的可重用性和扩展性。继承与扩展导致面向对象的软件开发领域中架构类软件系统的发展。*重写或覆盖(override),即扩充类对基类的方法进行重写,或实现类对接口的方法进行实现多态在成员方法的层面实现方式一重载(overload),即在一个类中定义多个名称相同、参数类型不同的方法多态在成员方法的层面实现方式二10.3.3多态多态(polymorphism)是指相同的操作(函数或方法)可作用于多种类型的对象并获得不同的结果。*第10章面向对象系统分析与设计
信息技术基础设施10.1类与对象10.2面向对象特征10.31.4
统一建模语言(UML)10.4设计模式10.5*UML是统一建模语言(UnifiedModelingLanguage)的简拼UML是使用面向对象概念进行系统建模的一组表示法UML是面向对象建模领域的主导性的行业标准。10.4
统一建模语言(UML)*1994年~1995年当时GradyBooch、JimRumbaugh和IvarJacobson三人将各自开创的、且当时比较流行的建模技术——Booch、OMT(ObjectModelingTechnique)和OOSE(Object-OrientedSoftwareEngineering)进行了合并,这就是UML的雏形1997年,UML作为国际建模语言和表示法的候选标准被OMG(ObjectManagementGroup,对象管理组,一个行业标准化组织)采纳,并获得了工业界的普遍认同。许多软件开发组织和CASE(Computer-AidedSoftwareEngineering,计算机辅助软件工程)工具的开发赞助商都采纳了UML,UML迅速发展为广大开发人员、专业图书作者以及CASE工具商使用的世界标准。
UML的发展以太网技术的发明者迈特.卡夫10.4.1UML基础*10.4.1UML基础当然,并不是所有的图都经常会被用到,常用的图主要是3种:用例图、类图、顺序图。*用例图(UseCaseDiagram)属于行为图类,是UML最常用的模型图之一,图自身通俗易懂,用例图主要站在外部观察者的角度描述系统的原理。解决的问题是“系统是什么”而不是“系统如何开发”用例图与系统描述的情境(scenario)密切相关。用例(UseCase)用于描述情境中一项任务的概况,在UML中使用椭圆符号表示。用例图(UseCaseDiagram)10.4.2用例图10.4.2用例图
*
如图所示,是一张图书馆运作用例图*类图(ClassDiagram)通过显示类及类与类之间的关系给出系统的概况。类图显示了系统的静态特征,它能够显示出类与类之间的关联,但不能显示出关联的互动特征。类图在类图中,类用矩形表示,该矩形包括三部分:上部是类名,中部是类具有的属性(attribute),下部是类具有的操作(operation)。抽象类的类名用斜体。10.4.3类图*主要体现为两个类的实例之间的关系一种特殊的关联,主要用于表示一个类属于一个集合的关系主要体现类或接口的继承或实现关系关联泛化聚合类与类之间的关系主要有三种:10.4.3类图*每个关联都有两端,每端都有一个角色名(rolename)用于说明关联的性质。关联的每一端还要带有多重值(multiplicity),表示关联一端的实例对应另一端实例的可能数量。关联还能够带有导向箭头,箭头指向哪一端,表明哪端要被遍历(traverse)或查询(query)关联10.4.3类图*10.4.4顺序图优点画法在顺序图中,每一条垂直的虚线代表一条生命线,表示对象可以存活的时间;每一条带箭头的横线代表一个消息调用;在对象生命线上的每一个矩形长条代表一条消息的往返持续期,处于该期间的对象称为激活(activation)类图、包图和对象图都属于仅描述系统静态特征的结构图类,他们无法反映系统运行状态时的特征,交互图类则可以做到这一点,他们主要描述对象之间的交互关系。*第10章面向对象系统分析与设计
信息技术基础设施10.1类与对象10.2面向对象特征10.31.4统一建模语言(UML)10.4
设计模式10.5*设计模式虽然是在面向对象技术基础上诞生的,但其应用面却不局限于此,结构化的程序设计语言同样能够很好的使用设计模式。1977年1992年建筑大师克里斯托弗·亚历山大(ChristopherAlexander)凭借其“模式三步曲”—《建筑的永恒之道》、《建筑模式语言》和《俄勒冈实验》—构筑了完整而严谨的“模式语言”理论体系。詹姆斯·科普林在《高级C++——编程风格和习惯》一书中最早将“模式”的概念引入了软件工程领域。肯特·贝克则是最早倡导在软件界学习克里斯托弗·亚历山大及其工作成果的先驱之一。1995年艾里奇·伽马、理查德·赫尔姆、拉尔夫·约翰逊、约翰·维利赛德四人合作编撰了著名的《设计模式——可复用面向对象软件的基础》,该书奠定了面向对象领域里设计模式理论的基础,讨论了23种基本设计模式的结构和使用方法。10.5.1设计模式简介现在人们己经针对不同的平台、不同的开发环境、不同的应用领域、不同的软件规模总结出了许多行之有效的模式*模式就是人们根据以往的经验总结出来的,可以重复使用的设计方案。实践是学习设计模式的必经阶段,只有经过实践,我们才能悟出设计模式的主旨和内涵,发现隐藏在设计模式背后的面向对象设计原则和设计理念。。到底什么是模式呢?以太网技术的发明者迈特.卡夫10.5.1设计模式简介*开闭原则里氏替换原则接口隔离原则依赖反转原则
“软件组件应该对扩展开放,但对修改关闭”。
“衍生类可以完全替换其基类”。
“客户端不应该被强迫去实现其不需要使用的方法”。
“依赖抽象,而不是依赖具体”。10.5.2设计模式5大原则(S.O.L.I.D)单一责任原则
“一个类有且仅有一个职责”。*利于组件重用,MVC的各层都可独立成一个能用的组件,供以后的项目使用。优点有利于项目分工,MVC模式把系统按层划分开发,网页设计人员专门进行开发视图层,对业务熟悉的开发人员开发模型层,其他开发人员则可选择开发控制层。三层各施其职,互不干涉,便于系统维护,哪一层的需求发生了变化,只需要更改相应层中的代码即可。10.5.4模型-视图-控制器(MVC)MVC模式的目的:实现多用户并发处理系统(比如网络软件系统,ERP等大型管理信息系统都属于此范畴)的职能分工。*需求分析阶段:分析和设计阶段:实现阶段:需求分析阶段用户模型视图(用例)用来描述用户需求。静态结构视图和行为模型视图用来描述系统的静态结构和动态行为。测试阶段:UML各类模型可自动转换为基于面向对象语言的代码。UML模型亦可作为软件测试的依据。为了彻底掌握上述UML各图的使用原理,还需要进一步明确下述面向对象设计概念。10.5.5设计类UML适用于系统开发过程中从需求分析到实施、测试和更新的各个阶段*1.包和命名空间2.类的属性和方法类是构成面向对象系统的基本组成,但是对于拥有上百个类的大型系统而言,还需要更高一层组织方式对类进行更有条理的管理——包(package)。包与命名空间(namespace)是对等的两个概念(一般,在Java里被称为包,而在.Net里被称为命名空间)。类(class)是封装数据的基本单位,是一组具有相同数据结构和相同操作的对象的集合,用来定义对象可执行的操作(如方法(method)、属性(attribute)等)。
10.5.5设计类为了彻底掌握上述UML各图的使用原理,还需要进一步明确下述面向对象设计概念:*3.接口和类4.界面原型接口(interface)与类(class),从广义层面上,二者是一回事,接口是一种特别的类;而从狭义层面上,二者是不一样的,类是对某类事物的抽象,而接口则是对某类行为或功能的抽象。界面,专业称作用户接口(UserInterface,UI),从广义
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版环保物流绿色包装运输合同规范3篇
- 二零二五版个人房产抵押贷款债权转让合同3篇
- 二零二五版财务会计岗位聘用合同9篇
- 二零二五版智能家居股份制合作合同范本3篇
- 二零二五年度钢结构工程钢筋加工与配送合同范本3篇
- 二零二五版工业4.0工厂生产承包服务合同模板3篇
- 二零二五年房产共有权份额转让产权买卖合同范本含份额调整方案3篇
- 二零二五版个人承包公司物流运输合作合同书6篇
- 二零二五版安徽省劳动合同解除争议调解服务合同2篇
- 二零二五年度能源股权转让居间服务合同范本2篇
- 大型活动联合承办协议
- 工程项目采购与供应链管理研究
- 2024年吉林高考语文试题及答案 (2) - 副本
- 拆除电缆线施工方案
- 搭竹架合同范本
- Neo4j介绍及实现原理
- 焊接材料-DIN-8555-标准
- 工程索赔真实案例范本
- 重症医学科运用PDCA循环降低ICU失禁性皮炎发生率品管圈QCC持续质量改进成果汇报
- 个人股权证明书
- 医院运送工作介绍
评论
0/150
提交评论