您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > 第10章 面向对象设计方法
第10章面向对象的设计方法2020年2月25日星期二第10章面向对象的设计方法2/183本章内容先导案例概述10.1面向对象设计——分析和程序设计的桥梁10.2设计类和设计类图10.3交互图——实现用例和定义方法10.4用顺序图设计10.5用协作图设计10.6更新设计类图10.7包图——将主要部分结构化10.8三层设计的实现问题要点回顾阅读章节要求2020年2月25日星期二第10章面向对象的设计方法3/183先导案例NEWCAPlTALBANK2020年2月25日星期二第10章面向对象的设计方法4/183概述开发OO设计模型,程序员要用其为系统编码。开发设计类图和交互图(顺序图和协作图)。为域层、可视层和数据访问层开发设计类图。将类关联到包图中,并说明其中的联系和依赖。优秀的设计准则,以及应用这些准则的方法。2020年2月25日星期二第10章面向对象的设计方法5/18310.1OO设计—分析和程序设计的桥梁OO设计是一个建立一系列OO设计模型的过程,程序员利用这些模型对系统进行编码和测试。在软件设计中,细节设计规范主要是由软件设计专家完成的,用户只是偶尔参与——主要是为了对设计进行纠正。2020年2月25日星期二第10章面向对象的设计方法6/18310.1OO设计—分析和程序设计的桥梁10.1.1OO程序设计概述10.1.2OO设计过程和模型2020年2月25日星期二第10章面向对象的设计方法7/18310.1.1OO程序设计概述1.OO程序如何工作2.谁在控制3.模块的实例化4.OO设计目标5.简化设计类例2020年2月25日星期二第10章面向对象的设计方法8/1831.OO程序如何工作OO程序是由一系列协同完成某一任务的程序对象组成。每个程序对象有程序逻辑和一些必要的属性,这些逻辑和属性封装在一个单元中。对象之间通过互相传递消息来协调工作,它们共同工作来完成主程序的功能。2020年2月25日星期二第10章面向对象的设计方法9/183OO事件驱动程序流程序包括输入窗口对象,用来输入学生ID及其他信息。当学生输入ID后,窗口对象会发消息(消息2)给学生类,程序会产生一个新的学生对象(实例),同时也转到DB中取得学生信息并把这些信息组成一个对象(消息3)。执行后新的学生对象给窗口对象返回一个消息并显示在屏幕上。职员此时会输入个人信息的更改(消息4)。2020年2月25日星期二第10章面向对象的设计方法10/1832.谁在控制没有模块能进行控制。有一个启动程序,但一旦程序开始执行,就没有哪个模块或对象来控制了。(与结构化程序不同,没有主控模块)结构化程序←→主机-终端(指令)OO程序←→计算机网络(中心任务)2020年2月25日星期二第10章面向对象的设计方法11/1833.模块的实例化OO系统由一系列计算对象组成。每个对象都封装了它自身的数据和程序逻辑。分析员通过一个类来定义程序逻辑的结构和数据字段。类定义描述一个执行对象的结构或模板。只有当程序开始执行时,对象才能存在。该过程称为类模块的实例化,或基于类定义所提供的模板生成对象实例。实例化:根据类定义所提供的模板创建对象。2020年2月25日星期二第10章面向对象的设计方法12/1834.OO设计目标识别并确定所有对象,并生成每个用例,比如用户界面对象、问题域对象及DB访问对象。用足够的细节说明每个类,使程序员能理解对象是如何协同工作以生成用例,并可为每一个类编写OO的代码。例:学生注册系统,用程序语言实现部分类的定义。分别用Java和VisualBasic.NET实现类的定义。JavaVB2020年2月25日星期二第10章面向对象的设计方法14/1835.简化设计类例OO设计的主要部分是设计类图、交互图,还要设计有些类的状态图。如:一个设计类说明帮助定义属性和方法。通过代码可以帮助了解设计和编程实现之间的联系。2020年2月25日星期二第10章面向对象的设计方法15/183Student类的简化设计类2020年2月25日星期二第10章面向对象的设计方法16/18310.1.2OO设计过程和模型1.设计过程2.输入的模型3.用例的实现2020年2月25日星期二第10章面向对象的设计方法17/1831.设计过程-步骤⑴创建设计类图的基础版本,或初步模型:包含属性名称等基本信息,以便用来设计交互图。⑵开发交互图,即为每一个用例产生一个交互图:其决定哪些对象一起工作,及怎样协同工作。(系统设计的核心)。⑶根据开发交互图时得到的信息,返回设计类图并开发方法名称(可视化和特征信息是在设计类图的迭代中被修改的)。⑷用包图将设计类图分割成相关的功能。2020年2月25日星期二第10章面向对象的设计方法18/183带有各自输入模型的设计模型2020年2月25日星期二第10章面向对象的设计方法19/1832.输入的模型交互图:用例图、用例描述、活动图、系统顺序图、设计类图设计类图:域模型类图、交互图包图:设计类图2020年2月25日星期二第10章面向对象的设计方法20/1833.用例的实现称设计模型的最终开发结果为用例的实现。术语实现指的是对每个用例的详细系统过程进行说明,而不是实现用例,换言之,是制定了软件的蓝图。OO的设计也是用例驱动的(设计是由一个用例接着一个用例完成的)。用例的实现:对每个用例的详细系统过程的说明。2020年2月25日星期二第10章面向对象的设计方法21/18310.2设计类和设计类图10.2.0设计类图与域模型类图10.2.1设计类图符号10.2.2设计类符号10.2.3一些基本的设计准则10.2.4开发初步设计类图2020年2月25日星期二第10章面向对象的设计方法22/18310.2.0设计类图与域模型类图设计类图和详细交互图均使用对方作为设计时的输入,二者的开发过程是平行的。设计类图是OO分析时开发的域模型类图的扩展(分析阶段可忽略属性或方法)。域模型类图揭示问题域类和它们之间的联系。设计类图是域设计模型类图更详细的体现。通过集成来自交互图和其他模型的信息来完成。2020年2月25日星期二第10章面向对象的设计方法23/183设计类图时,还要在以前的域模型的基础上增加很多类。当这些类被定义后,通常会在不同的类图中证明它们。系统中的类能被分解到各种不同的类图中,比如用户界面类。也用子系统来开发各种类图。域模型类图设计类图2020年2月25日星期二第10章面向对象的设计方法25/183额外类的例子2020年2月25日星期二第10章面向对象的设计方法26/18310.2.1设计类图符号1.构造型2.标准的构造型2020年2月25日星期二第10章面向对象的设计方法27/1831.构造型构造型是UML扩展机制,防止UML变得复杂,允许用户进行必要的扩展和调整。它必须在UML中已经定义的内容基础之上,为已有的元素增加新的语义而非语法。基于一个已存在的模型元素定义一种新的模型元素。可应用于所有的模型元素(类、节点、组件、关系、包、操作)2020年2月25日星期二第10章面向对象的设计方法28/183例:参与者的三种表示形式ActorIcon形式ActorLabel形式Decoration形式Actor参与者及其操作《Actor》BillSystemexecuteQuery()getConnection()参与者可用构造型表示。如果参与者是一个类,也可给其添加属性和操作。2020年2月25日星期二第10章面向对象的设计方法29/183构造型用《》符号描述域模型展现用户工作环境下的情况及它们间的联系,类不是特指软件类。创建设计类图,则要定义软件类。UML允许设计者使用构造型为每一个类指明一个专门的类型。构造型将模型元素以特定的类型分类。通过说明要强调的特征来扩展模型元素的基本定义。开始设计一个用例图时,首先要定义一个构造型。构造型:按照模型元素的特征进行归类的一种方式,用《》符号描述。2020年2月25日星期二第10章面向对象的设计方法30/183扩展机制示例衍型exception使得Overflow成为一个模型元素EventQueue中版本和作者是标记值add上的约束{ordered}使得EvenrQueue中的事件按序排列2020年2月25日星期二第10章面向对象的设计方法31/1832.标准的构造型(0)设计模型中的标准构造型⑴实体类⑵边界类⑶控制类⑷数据访问类设计模型中的标准构造型构造型类构造型的速记符号,称图标2020年2月25日星期二第10章面向对象的设计方法33/183⑴实体类实体类:是问题域中的核心类。从客观世界中的实体对象归纳和抽象出来(来自域模型)。用于长期保存在系统中的信息以及提供针对这些信息的相关处理行为。实体类的对象是永久性的,即持久类。持久类:程序结束后仍然存在的实体类。在系统关闭后这些数据仍存在。实现方法:将它们写入文件或DB。实体类在DB中有相应的表,其属性对应DB中的字段。《实体》消费者消费者2020年2月25日星期二第10章面向对象的设计方法34/183⑵边界类(设计阶段)从系统和外界进行交互的对象中归纳、抽象出来。是系统内对象和系统外的参与者的联系媒介,外界消息通过边界类的对象实例发送给系统。(窗体、对话框、报表)边界类:存在于系统的自动化边界上的类。《边界》命令窗口命令窗口2020年2月25日星期二第10章面向对象的设计方法35/183⑶控制类(设计阶段)控制类:在边界类和实体类中间起协调作用的类,在域层和可视层之间起开关控制的作用(它包含了事件的应用逻辑或业务规则)。它负责从边界类对象获取信息,然后发送到适当的实体类对象,就像是域层和可视层之间的一个开关或控制器。在一个用例中,一个控制类应该同一个且仅一个参与者相关联。其协调边界类和实体类之间的消息及消息发送的顺序。《控制》用例管理用例管理2020年2月25日星期二第10章面向对象的设计方法36/183⑷数据访问类(设计阶段)数据访问类:从DB获取信息。从DB获取信息或向DB发送信息的类。不同于向实体类方法中插入DB访问逻辑(包括SQL语句),在设计中通常包含一个访问DB的独立的类的层次。《数据访问》命令数据库读取命令数据库读取2020年2月25日星期二第10章面向对象的设计方法37/18310.2.2设计类符号1.定义设计类的内部符号2.属性的格式3.方法特征包括内容2020年2月25日星期二第10章面向对象的设计方法38/1831.定义设计类的内部符号名字:类名、构造型属性方法2020年2月25日星期二第10章面向对象的设计方法39/1832.属性的格式属性可见性(+:可见,-:不可见。可见性表示其他对象是否能直接访问这些属性);属性名称;类型表达式(如字符型、字符串型、整型、数字型、货币型或日期型);初值;原型(在花括号内),比如{关键字}。2020年2月25日星期二第10章面向对象的设计方法40/1833.方法特征包括内容方法可见性;方法名;类型表达式(方法返回参数的类型);方法参数列表(输入参数)。方法特征:描述调用该方法所需的所有信息的符号。2020年2月25日星期二第10章面向对象的设计方法41/183参数表在OO的程序设计中,分析员通过使用完整标识来识别每一个方法。一些OO语言允许多个方法使用同一个名称,为了区分使用参数表。在OO语言中,需要用方法名和参数表去激活相应的方法。2020年2月25日星期二第10章面向对象的设计方法42/183方法重载要通过客户ID或客户名来取得客户记录,可建立两个方法,并为它们起同一个名字:“getCustomer(CustomerlD)”、“getCustomer(CustomerName)”。方法重载:两个方法有同一名字(getCustomer)。要知道哪个方法被激
本文标题:第10章 面向对象设计方法
链接地址:https://www.777doc.com/doc-3993981 .html