版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UML面向对象设计与分析教程(第二版)(微课版)第1章面向对象方法概论本章的学习目标:理解面向对象的含义理解软件工程过程框架掌握类和对象的关系掌握封装、继承、多态掌握UML的含义和特点计算机是一种复杂的设备,通常包含的要素有:硬件、软件、人员、数据库、文档和过程。其中,硬件是提供计算能力的电子设备;软件是程序、数据和相关文档的集合,用于实现所需要的逻辑方法、过程或控制;人员是硬件和软件的用户和操作者;数据库是通过软件访问的大型的、有组织的信息集合;文档是描述系统使用方法的手册、表格、图形及其他描述性信息;过程是一系列步骤,它们定义了每个系统元素的特定使用方法或系统驻留的过程性语境。软件是用户与硬件之间的接口。用户主要通过软件与计算机进行交流。1.1什么是面向对象从程序设计方法的角度看,面向对象是一种新的程序设计范型(paradigm),其基本思想是使用对象、类、继承、封装、聚合、关联、消息、多态性等基本概念来进行程序设计。自20世纪80年代以来,面向对象方法已深入到计算机软件领域的几乎所有分支。它不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行问题求解,以及如何进行系统构造的软件方法学。从这个意义上讲:面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。1.1什么是面向对象软件工程是研究如何以系统性的、规范化的、可定量的过程化方法开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。1.1什么是面向对象问题域测试编程计算机编程语言自然语言需求分析总体设计详细设计软件工程学的作用——传统的软件工程方法分析与设计的鸿沟分析与设计概念及表示法的不一致问题域OOA计算机自然语言面向对象编程语言OODOOPOOT软件工程学的作用——面向对象的软件工程方法面向对象方法的基本思想一、从现实世界中客观存在的事物出发来构造系统强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象为系统中的对象,作为系统的基本构成单位。这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌。二、充分运用人类日常的思维方法强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装、关联等等。这使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表达出来。主要特点:用类和对象作为系统的基本构成单位。对象对应问题域中的事物,其属性和操作刻画了事物的静态特征和动态特征,它们之间的继承关系、聚合关系、关联和消息如实地表达了问题域中事物之间实际存在的各种关系。因此,无论系统的构成成分,还是通过这些成分之间的关系而体现的系统结构,都可直接地映射问题域。对问题域的认识(人)客观世界(问题域)计算机自然语言语言的鸿沟编程语言语言的过渡(人)编程(人)程序的理解和执行(机器)软件开发:对事物的认识和描述问题——语言的鸿沟从认识论看面向对象方法的形成面向对象程序=(对象+对象+…)+消息面向对象程序设计的任务包括两个方面:一方面决定把哪些数据和函数封装在一起,形成对象;另一方面考虑怎样向对象传递消息,以完成所需任务。各个对象的操作完成了,系统的整体任务也就完成了。1.1什么是面向对象对象是现实世界中某个实际存在的事物,它可以是有形的,比如一辆汽车,也可以是无形的,比如一项计划。对象是构成世界的一个独立单位。它具有自己的静态特征和动态特征。属性是用来描述对象静态特征的一个数据项。操作是用来描述对象动态特征的一个动作序列。对象标识就是对象的名字,有“外部标识”和“内部标识”之分。对象,属性,操作对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。对象由一组属性和施加于这些属性一组操作构成。对象对象标识属性操作封装:把对象的属性和操作结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。售报亭属性操作报刊A报刊B…钱箱报刊零售款货清点顾客封装的重要意义:使对象能够集中而完整地描述并对应一个具体的事物。体现了事物的相对独立性,使对象外部不能随意存取对象的内部数据,避免了外部错误对它的“交叉感染”。对象的内部的修改对外部的影响很小,减少了修改引起的“波动效应”。由封装机制保证
封装带来的问题:编程的麻烦执行效率的损失解决办法:不强调严格封装,实行可见性控制。(混合型OOPL)例如:C++抽象,类,一般类,特殊类抽象与分类:忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,叫做抽象。抽象是形成概念的基本手段。把具有共同性质的事物划分为一类,叫做分类。类是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分。类的作用是用来创建对象,对象是类的一个实例。对象对象对象对象对象对象对象对象类名属性操作抽象不同程度的抽象可得到不同层次的分类较多地忽略事物之间的差别可得到较一般的类较多地注意事物之间的差别可得到较特殊的类运输工具火车汽车飞机卡车轿车轮船车辆定义1:如果类A具有类B的全部属性和全部操作,而且具有自己特有的某些属性或操作,则A叫做B的特殊类,B叫做A的一般类。一般类与特殊类又称父类与子类。定义2:如果类A的全部对象都是类B的对象,而且类B中存在不属于类A的对象,则A是B的特殊类,B是A的一般类。——可以证明,以上两种定义是等价的一般类和特殊类的定义继承:特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承。继承意味着自动地拥有,或曰隐含地复制继承简化了人们对事物的认识和描述,非常有益于软件复用,是OO技术提高软件开发效率的重要原因之一。由继承机制保证由一组具有继承关系的类所组成的结构称作一般-特殊结构。它是一个以类为结点,以继承关系为边的连通的有向图。继承关系的语义:“isakindof”军人军官士兵义务兵志愿兵例多继承:允许一个特殊类具有一个以上一般类的继承方式称作多继承人员姓名············教职工职称专业············研究生学号班级专业············在职研究生在职单位
······
······例:聚合:是两个类之间的一个二元关系,它表示一个类的对象实例以另一个类的对象实例作为其组成部分。聚合刻画了现实事物之间的构成关系或者拥有关系。部分对象部分对象整体对象嵌套对象整体对象部分对象部分对象整体对象对象指针或对象标识两种聚合,两种实现方式:紧密、固定的聚合关系——例如汽车与发动机松散、灵活的聚合关系——例如公司与法律顾问聚合关系的语义:“hasa”或“isapartof”紧密、固定的聚合方式又称为组合整体-部分结构:聚合关系又称整体-部分关系。由一组具有聚合关系的类所形成的结构称为整体-部分结构。它是一个以类为结点,以聚合关系为边的连通有向图。例公司0‥*0‥*法律顾问汽车发动机车身气缸111111‥*关联:两个或者多个类上的一个关系(即这些类的对象实例集合的笛卡儿积的一个子集合),其中的元素提供了被开发系统的应用领域中一组有意义的信息。城市**有航线
城市之间有航线教师学生*1指导论文
教师与被指导的学生例:根据Budgen(1994年)的定义,软件开发方法主要由3部分组成:表示法、过程以及技术。1.2面向对象的开发模式过程对应为从问题空间转到解空间。在这个过程中,为设计师提供了一些选项,必须做出选择或判断。表示法是系统不同涉众之间使用的公共语言。技术部分的主要目的是提供一组指导意见和启发式法,辅助开发者系统地开发必需的设计模型和实现。1.2面向对象的开发模式过程具备以下特性:具有良好管理的迭代和增量式生命周期,在不影响创新的情况下提供必要的控制。在整个软件开发生命周期(SoftwareDevelopmentLifeCycle,SDLC)内为开发者嵌入方法、规程和启发式法以完成分析、设计和实现。在迭代和增量式开发过程中,为复杂问题的解决提供指导。根据已知的或已经建模的需求识别那些不是非常明显的需求。1.2面向对象的开发模式通过抽象创建模型是人类认识世界的一项基本技能,而对于开发大型软件系统而言,这是重要的第一步。对于软件开发而言,表示法模型有助于开发者进行以下活动:捕获系统需求。使用的表示法应该可以被用户和开发者理解。通过开发合适的分析模型分析系统。使用恰当的表示法表达模型,这样开发者就可以快速、方便地从中提取信息。开发系统设计。使用恰当的表示法开发和表达设计模型,使设计师和程序员都可以理解。实现、测试和部署系统。这也需要使用合适的表示法来表示这些活动的工件,使之可以被系统设计师、程序员和系统测试人员所理解。1.2面向对象的开发模式理想的表示法应该满足以下条件:有利于团队成员和客户之间的高效沟通。能够无歧义地描述用户的需求。提供丰富的语义,以捕获所有重要的战术和战略决策。为人们提供逻辑框架,以便于对模型进行推理。有利于使用工具实现自动化,至少要实现模型构建过程的自动化。1.2面向对象的开发模式技术部分的主要目的是提供一组指导意见和启发式法,辅助开发者系统地开发必需的设计模型和实现。软件开发方法的技术部分应该包含以下内容:一组用于产生和验证设计、初始需求和规约的指南。一组设计师可用来确保设计结构和设计模型的一致性的启发式法。如果设计由一支设计团队完成的话,这一点尤为重要,因为这些设计师需要确保他们的模型是一致和连贯的。一个能够捕获设计关键特性的系统,以补充设计师的领域知识。1.2面向对象的开发模式建模在所有工程实践中都已得到广泛接受,这主要是因为建模引证了分解、抽象和层次结构的原则。为了表达一个复杂系统,必须使用多种模型。设计中的每个模型都描述了被考虑的系统的某个方面。面向对象建模是一种新的思维方式,是一种关于计算和信息结构化的新思维。在过去的几十年中,编程语言中对抽象机制的支持已经发展到一个较高的水平。这种抽象的进化从地址(机器语言)到名字(汇编语言),到表达式(第一代高级语言,如Fortran),到控制(第二代高级语言,如Cobol),到过程和函数(第二代和早期第三代高级语言,如Pascal),到模块和数据(晚期第三代高级语言,如Modula),最后到对象(基于对象和面向对象的语言)。1.2面向对象的开发模式面向对象分析:面向对象分析(OOA)建立于以前的信息建模技术的基础之上,可以定义为一种分析方法,通过从问题域词汇中发现的类和对象的概念来考查需求。OOA的结果是一系列从问题域导出的“黑箱”对象。OOA通常使用“剧情”来帮助确定基本的对象行为。剧情是发生在问题域的连续的活动序列。在对给定的问题域进行OOA时,“框架”的概念非常有用。框架是应用或应用子系统的骨架,包含一些具体或抽象的类。或者说,框架是一种特定的层次结构,包含描述某一问题域的抽象父类。当下流行的所有OOA方法的一个缺点就是都缺乏一种固定的模式。1.2面向对象的开发模式面向对象设计:在面向对象设计(OOD)阶段,注意的焦点从问题空间转移到解空间。OOD是一种包含对所设计系统的逻辑和物理的过程描述,以及系统的静态和动态模型的设计方法。1.2面向对象的开发模式在OOA和OOD中,都存在着对重用性的关注。目前,面向对象技术的研究人员正在尝试定义“设计模式”这一概念。它是一种可重用的“财富”,可以应用于不同的问题域。通常,设计模式指的是一种多次出现的设计结构或解决方案。1.2面向对象的开发模式UML(UnifiedModelingLanguage,统一建模语言)是一种建模语言,是一种用来为面向对象开发系统的产品进行可视化说明和编制文档的建模方法。在面向对象编程中,数据被封装(或绑定)到使用它们的函数中,形成整体,称为对象,对象之间通过消息相互联系。面向对象建模与设计是使用现实世界中的概念模型来思考问题的一种方法。对于理解问题、与应用领域专家交流、建模企业级应用、编写文档、设计程序和数据库来说,面向对象模型都非常有用。UML的应用领域很广泛,可以用于商业建模、软件开发建模的各个阶段,也可以用于其他类型的系统。UML是一种通用的建模语言,具有创建系统的静态结构和动态行为等多种结构模型的能力。UML语言本身并不复杂,具有可扩展性和通用性,适合为各种多变的系统建模。1.3UML一、UML概述
UML能够在尽可能简单的同时能够满足对实际开发需要,进行系统的各个方面建模。
UML拥有足够的表达能力以便可以处理现代软件开发中出现的所有概念。
UML是一个通用语言,不仅仅和一种通用程序设计语言一样,也是一个庞大的标准符号体系,提供了多种模型。
UML是用模型来描述系统的结构或静态特征以及行为或动态特征的,它从不同的视角为系统的架构建模形成系统的不同视图(view)。在UML中主要包括的视图为静态视图、用例视图、交互视图、实现视图、状态机视图、活动视图、部署视图和模型管理视图。1、视图二、常用的UML元素分析视图
静态视图是对在应用领域中的各种概念以及与系统实现相关的各种内部概念进行的建模。由于这种视图不描述与时间有关的系统行为所以我们称之为是静态的,描述与时间相关的系统行为我们在其他视图中进行描述。静态视图主要是由类与类之间的关系构成。这些关系包括:关联、泛化和依赖关系,我们又把依赖关系具体可以再分为使用和实现关系。1、视图二、常用的UML元素分析静态视图
用例视图描述了系统的参与者与系统进行交互的功能,是参与者所能观察和使用到的系统功能的模型图。一个用例是系统的一个功能单元,是系统参与者与系统之间进行的一次交互作用。1、视图二、常用的UML元素分析用例视图
交互视图描述了执行系统功能的各个角色之间相互传递消息的顺序关系,是描绘系统中各种角色或功能交互的模型。交互视图显示了跨越多个对象的系统控制流程。我们通过不同对象间的相互作用来描述系统的行为,是通过两种方式进行的,一种是以独立的对象为中心进行描述,另外一种方式是以相互作用的一组对象为中心进行描述。交互视图可运使用两种图的形式来表示:序列图和协作图。1、视图二、常用的UML元素分析交互视图
状态机视图是通过对象的各种状态来建立模型来描述对象随时间变化的动态行为。状态机视图也是通过不同对象间的相互作用来描述系统的行为的,不同的它是以独立的对象为中心进行描述。状态机视图中,每一个对象都拥有自己的状态,这些状态之间的变化是通过事件进行触发的。对象被看成为通过事件进行触发并做出相应的动作来与外界的其他对象进行通信的独立实体。事件表达了对象可以被使用操作,同时反映了对象状态的变化。1、视图二、常用的UML元素分析状态机视图
活动视图是一种特殊形式的状态机视图,是状态机的一个变体,用来描述执行算法的工作流程中涉及的活动。通常活动视图用于对计算流程和工作流程建模。活动视图中的状态表示计算过程中所处的各种状态。活动视图是在假定整个计算处理的过程中没有外部事件引起的中断的条件下进行描述的,否则普通的状态机更加适合于描述这种情况。1、视图二、常用的UML元素分析活动视图
物理视图是对应用自身的实现结构建模,例如系统的构件组织情况以及运行节点的配置等等。物理视图提供了将系统中的类映射成物理构件和节点的机制。物理视图提供了将系统中的类映射成物理构件和节点的机制。系统模型的大部分内容反映了系统的逻辑和设计方面的信息,并且独立于系统的最终实现单元。1、视图二、常用的UML元素分析物理视图使用建模语言需要相应的工具支持,工具应提供下述功能:画图(drawdiagram):工具中必须提供方便作图和为图着色的功能,也必须具有智能,能够理解图的目的,知道简单的语义和规则。这样的特点带来的便利是,当建模者不适当或错误地使用模型元素时,工具能自动告警或禁止其操作。积累(repository):工具中必须提供普通的积累功能,以便系统能够把收集到的模型信息存储下来。如果在某个图中改变某个类的名称,那么这种变化必须及时地反映到使用该类的所有其他图中。导航(navigation):工具应该支持易于在模型元素之间导航的功能,也就是使建模者能够容易地从一个图到另一个图,跟踪模型元素或扩充对模型元素的描述。多用户支持:工具应能够使多个用户可以在一个模型上工作,且彼此之间没有干扰。产生代码(generatecode):高级的工具要有产生代码的能力,该功能可以把模型中的所有信息翻译成代码框架,把代码框架作为实现阶段的基础。1.4UML建模工具使用建模语言需要相应的工具支持,工具应提供下述功能:逆转(reverse):高级的
工具一定要有阅读现成代码并依代码产生模型的能力,即模型可由代码生成。它与产生代码是互逆的两个过程。对开发者来说,可以用建模工具或编程方法建模。集成(integrate):工具一定要能与其他工具集成,也就是与开发环境(比如编辑器、编译器和调试器)和企业工具(比如配置管理和版本控制系统)等的集成。覆盖模型的所有抽象层:工具应该能够容易地从对系统最上层的抽象描述向下导航至最低的代码层。如果需要获得类中某个具体操作的代码,只需要在图中单击这个操作的名字即可。模型互换:模型或来自某个模型的个别图应该能够从一个工具输出,然后再输入到另一个工具。就像Java代码可在一个工具中产生,而后用在另一个工具中一样。模型互换功能也应该支持用明确定义的语言描述的模型之间的互换(输出/输入)。1.4UML建模工具使用建模语言需要相应的工具支持,工具应提供下述功能:逆转(reverse):高级的
工具一定要有阅读现成代码并依代码产生模型的能力,即模型可由代码生成。它与产生代码是互逆的两个过程。对开发者来说,可以用建模工具或编程方法建模。集成(integrate):工具一定要能与其他工具集成,也就是与开发环境(比如编辑器、编译器和调试器)和企业工具(比如配置管理和版本控制系统)等的集成。覆盖模型的所有抽象层:工具应该能够容易地从对系统最上层的抽象描述向下导航至最低的代码层。如果需要获得类中某个具体操作的代码,只需要在图中单击这个操作的名字即可。模型互换:模型或来自某个模型的个别图应该能够从一个工具输出,然后再输入到另一个工具。就像Java代码可在一个工具中产生,而后用在另一个工具中一样。模型互换功能也应该支持用明确定义的语言描述的模型之间的互换(输出/输入)。1.4UML建模工具常用的UML建模工具:RationalRosePowerDesignerVisio1.4UML建模工具RationalRose:RationalRose是直接伴随UML发展而诞生的设计工具,RationalRose一开始没有对数据库端建模提供支持,但是现在的版本中已经加入数据库建模功能。RationalRose对开发过程中的各种语义、模块、对象以及流程、状态等描述得比较好,主要体现在能够从各个方面和角度进行分析和设计,使软件的开发蓝图更清晰、内部结构更加明朗(但是仅仅对那些掌握UML的开发人
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版体育赛事运营权收购协议书范本(含赞助商权益)3篇
- 农业科技项目2025年度市场开发与品牌建设合同3篇
- 2025版二零二五民办学校教师职业发展规划聘用协议4篇
- 2025年度美容美发行业技师劳动合同续签条件合同4篇
- 2025年度美甲店品牌形象保护与侵权纠纷处理合同4篇
- 二零二五年度车牌租赁经营合作协议范本3篇
- 2025年高科技研发中心投资合作框架协议3篇
- 2025年度绿化工程进度跟踪与管理合同4篇
- 2025年摊位电子支付系统合作协议3篇
- 2025年智能城市基础设施建设土地买卖合同范例3篇
- 2025贵州贵阳市属事业单位招聘笔试和高频重点提升(共500题)附带答案详解
- 2024年住院医师规范化培训师资培训理论考试试题
- 期末综合测试卷(试题)-2024-2025学年五年级上册数学人教版
- 2024年广东省公务员录用考试《行测》试题及答案解析
- 结构力学本构模型:断裂力学模型:断裂力学实验技术教程
- 黑色素的合成与美白产品的研究进展
- 金蓉颗粒-临床用药解读
- 法治副校长专题培训课件
- 《幼儿园健康》课件精1
- 汽车、电动车电池火灾应对
- 中医药适宜培训-刮痧疗法教学课件
评论
0/150
提交评论