面向对象分析与设计—OOD部分

第三部分 面向对象设计

3.1 面向对象设计(OOD)的定义?

  在面向对象分析阶段,已经针对用户需求建立起用面向对象概念描述的系统分析模型。在设计阶段,要考虑为实现系统而采用的计算机设备、操作系统、网络、数据库管理系统以及所采用的编程语言等有关因素,进一步运用面向对象的方法对系统进行设计,最后形成一个可以实现的设计模型,即面向对象设计模型。

3.2 面向对象设计(OOD)与面向对象分析(OOA)的关系?

  在面向对象分析阶段,针对的是现实世界,把需求转化为面向对象概念所建立的模型,以易于理解问题域和系统责任,最终建立一个映射问题域,满足用户需求,独立于实现的OOA模型,面向对象的设计就是在面向对象分析的基础上运用面向对象方法主要解决与实现有关的问题,目标是产生一个符合具体实现条件的OOD模型。由于OOD以OOA为基础,且OOA与OOD采用一致的表示法,使得从OOA到OOD不存在转换,只需做必要的修改与调整。OOA与OOD之间不存在传统方法中分析与设计之间的鸿沟,二者能够紧密衔接。OOA与OOD之间不强调阶段划分,但是OOA与OOD有着不同的侧重点和不同的分工,并因此具有不同的开发过程及具体策略。“分析”只针对问题域和系统责任,不考虑实现有关的因素,建立一个独立于实现的OOA模型;”设计“则考虑与实现有关的问题,如选用的编程语言、数据库系统和图形用户界面等,建立一个针对具体实现的OOD模型。

3.3 面向对象设计(OOD)的特点?

  • 以面向对象的分析为基础,一般不依赖结构化分析
  • 与相应的OOA方法共同构成OOA&D方法体系,OOA和OOD采用一致的概念与原则,但属于软件生命周期的不同阶段,有不同的目标和策略
  • 较全面地体现了面向对象方法的概念与原则
  • 大多数OOD方法独立于编程语言,但是具体应用OOD时,则要考虑特定编程语言,因为它通过面向对象的设计所得到的系统模型,要由确定的编程语言实现

3.4 面向对象设计(OOD)过程以及过程模型?

  在OOA 阶段只考虑问题域和系统责任,在OOD阶段则要考虑与具体实现有关的问题,这样做的目的是

  • 使反映问题域本质的总体框架和组织结构长期稳定,而细节可变
  • 把稳定部分(问题域部分)与可变部分(与实现有关的部分)分开,使得系统能从容地适应变化
  • 有利于同一个分析模型用于不同的设计和实现
  • 支持系统族和相似系统的分析与设计
  • 使一个成功的系统具有超出其生存期的可扩展性

  为达到上述目的,设计如下的面向对象设计模型

  从一个侧面观察OOD模型,它包括一个核心部分,即问题域部分;还包括四个外围部分,即人机交互部分、控制驱动部分、数据管理部分以及构件及部署部分。初始的问题域部分即为OOA模型,要按照实现条件对其进行补充与调整;人机交互部分即人机界面设计部分;控制驱动部分即用来定义和协调并发的各个控制流;数据管理部分用来对永久对象的存取建模;构件及部署部分中的构件模型用于描述构件以及构件之间的关系,部署模型用于描述结点、结点之间的关系以及构件在结点上的分布。

  OOD过程

  • 问题域部分的设计
  • 人机交互部分的设计
  • 控制驱动部分的设计
  • 数据管理部分的设计
  • 构件及部署部分的设计

3.4.1 问题域部分的设计

  问题域部分是由与问题有关的对象构成,并且在特定的实现平台上提供用户所需功能的组成部分。它是在OOA模型基础上按实现的要求进行必要的修改、调整和细节补充而得到的。

  问题域部分设计过程是:

  • 输入OOA模型,并进行必要的修改
  • 逐一考察影响问题域部分设计的实现条件,对模型作相应的调整与补充
  • 建立分析文档和设计文档之间的映射关系

  设计内容及策略

(1)针对编程语言支持能力的调整:包括对继承的调整和对多态性的调整

(2)增加一般类,提供共同协议

(3)为实现复用采取的设计策略:直接复用;删除可复用类的多余信息;通过继承复用;删除多余信息,通过继承而复用

(4)提高性能:从数据传输时间、数据存取时间、数据处理时间三个方面考虑

(5)为实现对象永久存储所做的修改

(6)完善对象的细节:弥补OOA模型的不足;解决OOA结点推迟考虑的问题;设计对象的操作;设计表示关联的属性(一对一、一对多);设计表示整体-部分关系的属性

(7)定义对象实例

(8)修改或补充辅助模型及模型规约

3.4.2 人机交互部分的设计

  人机交互部分突出人如何命令系统以及系统如何向用户提交信息。设计人机交互就是要设计输入与输出,其中所包含的对象(称作界面对象)以及其间的关系构成了系统的人机交互部分的模型。

  人机界面的OO设计:一般是以一种选定的界面支持系统为基础,利用它所支持的界面构造成分,设计一个可满足人机交互需求、适合使用者特点的人机界面设计模型。

  • 界面支持系统:包括窗口系统、图形用户界面、可视化编程环境
  • 界面元素:窗口、菜单、对话盒、滚动条、其他

  设计过程和策略:

面向对象的人机界面设计是在人机交互需求分析的基础上,以选定的界面支持系统为背景,选择实现人机交互所需的界面元素来构造人机界面,并用面向对象的概念和表示法来表示这些界面元素以及它们之间的关系,从而形成整个系统的OOD模型的人机交互部分

  • 选择和掌握界面支持系统:考虑硬件、操作系统以及编程语言;界面实现的支持级别;界面风格与视感;其他(软件价格、熟悉哪种操作系统)
  • 根据人机交互需求选择界面元素:系统的启动;高层命令组织结构的实现;基本命令的执行;异常命令的输入;详细交互过程的输入与输出
  • 用OO概念表示界面元素:对象和类;属性与操作;整体-部分结构;一般-特殊结构;关联;消息
  • 设计原则:尽量减少用户输入;有效性检查(如格式检查、内容检查);

  人机交互部分设计准则

  • 易学、易用、操作方便
  • 尽量保持一致性
  • 及时提供有意义的反馈
  • 尽量减少用户的记忆
  • 减少重复的输入和操作
  • 提供具有语境敏感的功能
  • 防止灾难性错误

ps:命令

基本命令:使用一项独立的系统功能的命令

命令步:在执行一条基本命令的交互过程中所包含的具体输入步骤

高层命令:一条命令是在另一条命令的引导下完成的

3.4.3 控制驱动部分的设计

  控制驱动部分由系统中全部主动类构成,这些主动类描述了系统中所有的主动对象,每个主动对象是系统中一个控制流的驱动者。一个控制流就是一个进程(既是处理机资源的分配单位又是其他资源的分配单位)或者线程(仅仅是处理机资源的分配单位)

  设计过程和策略:

  • 选择软件体系结构风格:综合考虑各种因素,做出合理的权衡
  • 确定系统分布方案:从数据分布和功能分布考虑,包括对象的分布、类的分布、类图的分布和在类规约中的表示
  • 识别控制流:以结点为单位识别控制流;从用户需求、用例来认识控制流;实现并行计算、结点之间通信的控制流;对其他控制流进行协调的控制流
  • 用主动对象表示控制流
  • 把控制驱动看成一个包

3.4.4 数据管理部分的设计

  数据管理部分负责将应用系统中的对象在选定的数据管理系统中进行存储,并将存储结果恢复到应用系统,将实现数据存储、检索、管理、维护的系统称为数据管理系统,包括文件系统和数据库系统两大类。

  由于目前面向对象数据库还没有广泛使用,所以我们还是以关系型数据库为主,存储检索数据。

  数据库(DB):数据库是长期存储在计算机内、有组织、可共享的数据集合

  数据库管理系统(DBMS):DBMS是用于建立、使用和维护数据库的软件。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性

  关系数据库与面向对象方法不匹配,原因在于:关系数据库不是全面支持面向对象中的全部概念,如类间关系(继承、多态)

  非关系型数据库:优点是存储任何对象,缺点是对非关系型数据库很难进行结构化操作

  面向对象数据库:采用面向对象数据模型的数据库称为面向对象数据库,支持面向对象的基本概念

  数据库设计的基本流程:

  • 概念设计阶段:将用户下信息要求统一到一个整体逻辑结构中,此结构能表达用户的要求,且独立于任何DBMS软件和硬件
  • 逻辑设计阶段:将概念设计阶段得到的结果转换为与选用的DBMS所支持的数据模型向符合的逻辑结构
  • 物理设计阶段:对给定的逻辑数据模型选取一个最适合应用要求的物理结构。数据库的物理结构包括数据库的存储记录格式、存储记录安排、存取方法等,它是完全依赖于给定的硬件环境和数据库产品的

3.4.5 构件及部署部分的设计

  构件图和部署图分别用于对系统进行构件设计和部署设计。

  构件图设计:利用构件对面向对象系统物理实现方面建模,其中一个主要建模元素是制品,可以把制品分为工作产品制品(开发过程的产物,如源代码及数据文件等),可部署的制品(如动态链接库dll或可执行程序exe文件)。对具体的物理构件进行建模,直至能对产生的构件进行部署。

  部署图设计:对系统的网络结构进行拓扑,也可以用它展示部署在结点上的构件。主要用于对嵌入式系统和分布式系统进行建模

  具体可参考构件图和部署图的设计

参考书籍

《面向对象的系统分析》(第2版)      邵维忠  杨芙清  著

《UML面向对象技术教程》   王少锋  编著

原文地址:https://www.cnblogs.com/wzw0625/p/11780482.html

时间: 2024-11-07 18:36:33

面向对象分析与设计—OOD部分的相关文章

《面向对象分析与设计》阅读笔记3

作者对面向对象分析和设计的经典论述: OOP:面向对象编程是一种实现方法,程序被组织成对象的协作集合,每一个对象代表某个类的实例,对象的类是通过继承关系联合在一起的类层次中的所以成员. OOD:面向对象设计是一种设计方法,它包含面向对象的分解过程,以及一种表示方法,用来描写设计中的系统的逻辑模型与物理模型,以及静态模型与动态模型. OOA:面向对象分析是一种分析方法,它以可在问题域的词汇表中找到的类和对象的观点来审视需求.

面向对象分析与设计—四色原型模式(彩色建模、领域无关模型)(概念版)

阅读目录: 1.背景介绍 2.问自己,UML对你来说有意义吗?它帮助过你对系统进行分析.建模吗? 3.一直以来其实我们被一个缝隙隔开了,使我们对OOAD遥不可及 4.四色原型模式填补这个历史缝隙,让我们真的看见OOAD的希望 5.在四色原型上运用彩色建模增强视觉冲击力 6.通过四色原型模式建模出领域无关模型 7.结束语:建模时你可以不考虑具体实现,但是建模者要懂技术实现 1.背景介绍 至今我都清楚的记得我第一次被面试官问起什么叫"建模"技术时的情景,那是好几年前的事情了,当时是胸有成竹

深入浅出面向对象分析与设计笔记

1.在搜索匹配时注意大小写问题. 2.别为了解决旧问题而产生新问题. 3.使用enum的好处:使用enum的方法或类会受到它的保护,不会有未定义的enum的值.因此不会有打错字或拼错字,对任何具有标准范围或合法值的东西都能避免取得坏数据. 4.任何时候看到重复程序代码,就找个地方进行封装. 5.委托: 6.Java匿名内部类是一种特殊的继承方式,既可以扩展类,也可以实现接口,但是不能两者兼备,而且若实现接口也只能实现一个接口.由于其没有名字,因此不会有命名构造器,但可以实例初始化.如果定义一个匿

面向对象分析与设计

面向对象基本概念 对象:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位.一个对象由一组属性和对这组属性进行操作的一组服务组成.从更抽象的角度来说,对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用:它是一组属性和有权对这些属性进行操作的一组服务的封装体.客观世界是由对象和对象之间的联系组成的.主动对象是一组属性和一组服务的封装体,其中至少有一个服务不需要接收消息就能主动执行(称作主动服务). 类:把众多的事物归纳.划分成一些类是人类在认识

面向对象分析与设计之OOA学习

1.从需求到业务用例图 OOA&D的第一步,就是了解用户需求,并将其转换为业务用例图.我们的 CMS系统需求非常简单,大致可做如下描述:这个系统主要用来发布新闻,管理员只需要一个,登录后可以在后台发布新闻.任何人可以浏览新闻,浏览者可以注 册成为系统会员,注册后可对新闻进行评论.管理员在后台可以对新闻.评论.注册会员进行管理,如修改.删除等.通过以上需求描述,我们画出如下的业务用例 图: 业务用例图 这里要注意三点: 1.业务用例是仅从系统业务角度关注的用例,而不是具体系统的用例.它描述的是“该

UML面向对象分析与设计试题2008-B卷

UML面向对象分析与设计试题2008-B卷 UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 提交APPStore流程http://www.360doc.com/content/15/0203/15/19663521_445974056.shtml

面向对象分析与设计阅读笔记二

今天我阅读了面向对象分析与设计的第二章对象模型,从计算机一开始的第一代语言到面向对象编程的演化,经历了很长的演变,同时面向对象的编程也是历史性的演变.那么什么是面向对象的编程呢?面向对象的编程其实是一种实现的方法,在这种方法中,程序组成许多相互协作的对象,每个对象代表一个实例,而类则属于一个通过继承关系形成的层次结构.以前我的认为是:面向对象的编程不就是写一个类,然后用类去创建一个对象,用对象来实现其中的某些功能.现在看来这样的想法有些片面. 每一种编程风格都是基于它自己的概念框架.对于所有面向

面向对象分析与设计阅读笔记一

今天阅读了<面向对象分析与设计>第一章复杂性,从这里我认识到,世界上的任何东西都是复杂的,从我们学习中就可以看出来:计算机的结构.动植物的结构.物质结构和社会机构的结构等等,这里边都蕴含了事物的复杂性.当然我们的软件也有复杂性,软件面临的问题域很复杂:软件的开发过程中常常会涉及到一些不可避免的复杂性,在其中我们可以发现数不清的竞争需求,甚至是相反的需求:其中也避免不了和用户沟通的困难,用户往往表达不完整.管理软件开发的困难性:软件开发团队的基本任务就是制造简单的假象,开发过程中我们会遇到很复杂

面向对象分析与设计的一些心得

面向对象分析与设计的一些心得 分析.设计与实现 我所理解的真正的对象就是现实生活中客观存在或不存在的真正的对象.这个对象有一个明显的特征就是它具有非常多的状态特征和行为特 征.比如一个人是一个对象,他在一生中会经历无数个交互场景,在这个过程中,每个人的行为特征会不断增多,大部分行为是通过后天学习得到的,只有少数行为 是先天就具有的:另一方面,对于状态特征也是在时不时的变化,比如你的身高.体重,等等.最后,人因为会参与到不同的交互场景,会导致和他关联的各种关联 信息也会不断增多,比如你去上大学,老