架构系统分析与设计:面向对象方法

面向对象(Object-Oriented,OO)开发方法将面向对象的思想应用于软件开发过程中,指导开发活动,是建立在“对象”概念基础上的方法学。面向对象方法的本质是主张参照人们认识一个现实系统的方法,完成分析、设计与实现一个软件系统,提倡用人类在现实生活中常用的思维方法来认识和理解描述客观事物,强调最终建立的系统能映射问题域,使得系统中的对象,以及对象之间的关系能够如实地反映问题域中固有的事物及其关系。

面向对象开发方法认为客观世界是由对象组成的,对象由属性和操作组成,对象可按其属性进行分类,对象之间的联系通过传递消息来实现,对象具有封装性、继承性和多态性。面向对象开发方法是以用例驱动的、以体系结构为中心的、迭代的和渐增式的开发过程,主要包括需求分析、系统分析、系统设计和系统实现4个阶段,但是,各个阶段的划分不像结构化开发方法那样清晰,而是在各个阶段之间迭代进行的。

面向对象分析

面向对象的分析方法(Object-OrientedAnalysis,OOA),是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。

OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。

OOA模型由5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识

对象类、标识结构、定义主题、定义属性和定义服务)组成。在这种方法中定义了两种对象类之间的结构,一种称为分类结构;另一种称为组装结构。分类结构就是所谓的一般与特殊的关系。组装结构则反映了对象之间的整体与部分的关系。

(1)抽象。抽象是从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征。

抽象是形成概念的必须手段。抽象是面向对象方法中使用最为广泛的原则。抽象原则包括过程抽象和数据抽象两个方面。

过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。

数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。

数据抽象是OOA的核心原则。它强调把数据(属性)和操作(服务)结合为一个不可分的系统单位(即对象),对象的外部只需要知道它做什么,而不必知道它如何做。

(4)分类。分类就是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述。分类原则实际上是抽象原则运用于对象描述时的一种表现形式。

2)基本步骤

OOA大致上遵循如下5个基本步骤。

(1)确定对象和类。这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。

(2)确定结构。结构是指问题域的复杂性和连接关系。类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。

(3)确定主题。主题是指事物的总体概貌和总体分析模型。

(4)确定属性。属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。

(5)确定方法。方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。对于每个对象和结构来说,那些用来增加、修改、删除和选择的方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。

面向对象设计方法(Object-OrientedDesign,OOD)是OOA方法的延续,其基本思想包括抽象、封装和可扩展性,其中可扩展性主要通过继承和多态来实现。在OOD中,数据结构和在数据结构上定义的操作算法封装在一个对象之中。由于现实世界中的事物都可以抽象出对象的集合,所以OOD方法是一种更接近现实世界、更自然的系统设计方法。

类封装了信息和行为,是面向对象的重要组成部分,它是具有相同属性、方法和关系的对象集合的总称。在系统中,每个类都具有一定的职责,职责是指类所担任的任务。一个类可以有多种职责,设计得好的类一般至少有一种职责。在定义类时,将类的职责分解为类的属性和方法,其中属性用于封装数据,方法用于封装行为。

在OOD中,类可以分为3种类型:实体类、控制类和边界类。

实体类映射需求中的每个实体,是指实体类保存需要存储在永久存储体中的信息,例如,在线教育平台系统可以提取出学员类和课程类,它们都属于实体类。实体类通常都是永久性的,它们所具有的属性和关系是长期需要的,有时甚至在系统的整个生存期都需要。

实体类对用户来说是最有意义的类,通常采用业务领域术语命名,一般来说是一个名词,在用例模型向领域模型的转化中,一个参与者一般对应于实体类。通常可以从SRS中的那些与数据库表(需要持久存储)对应的名词着手来找寻实体类。通常情况下,实体类一定有属性,但不一定有操作。

控制类是用于控制用例工作的类,一般是由动宾结构的短语(“动词+名词”或“名词+

边界类用于封装在用例内、外流动的信息或数据流。边界类位于系统与外界的交接处,包括所有窗体、报表、打印机和扫描仪等硬件的接口,以及与其他系统的接口。要寻找和定义边界类,可以检查用例模型,每个参与者和用例交互至少要有一个边界类,边界类使参与者能与系统交互。边界类是一种用于对系统外部环境与其内部运作之间的交互进行建模的类。常见的边界类有窗口、通信协议、打印机接口、传感器和终端等。实际上,在系统设计时,产生的报表都可以作为边界类来处理。

边界类用于系统接口与系统外部进行交互,边界对象将系统与其外部环境的变更(例如,与其他系统的接口的变更、用户需求的变更等)分隔开,使这些变更不会对系统的其他部分造成影响。通常情况下,边界类可以既有属性也有方法。

1.开闭原则(OpenClosePrinciple,OCP)

面向对象编程

面向对象程序设计(ObjectOrientedProgramming,OOP)是一种计算机编程架构。OOP的一条基本原则是计算机程序由单个能够起到子程序作用的单元或对象组合而成。OOP达到了软件工程的3个主要目标:重用性、灵活性和扩展性。

OOP=对象+类+继承+多态+消息,其中核心概念是类和对象。

面向对象程序设计方法是尽可能模拟人类的思维方式,使得软件的开发方法与过程尽可能接近人类认识世界、解决现实问题的方法和过程,也即使得描述问题的问题空间与问题的解决方案空间在结构上尽可能一致,把客观世界中的实体抽象为问题域中的对象。

面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。

继承是面向对象技术中的另外一个重要特点,其主要指的是两种或者两种以上的类之间的联系与区别。在面向对象技术中,继承是指一个对象针对于另一个对象的某些独有的特点、能力进行复制或者延续。

如果按照继承源进行划分,则可以分为单继承(一个对象仅仅从另外一个对象中继承其相应的特点)与多继承(一个对象可以同时从另外两个或者两个以上的对象中继承所需要的特点与能力,并且不会发生冲突等现象)。

如果从继承中包含的内容进行划分,则继承可以分为4类,分别为取代继承(一个对象在继承另一个对象的能力与特点之后将父对象进行取代)、包含继承(一个对象在将另一个对象的能力与特点进行完全的继承之后,又继承了其他对象所包含的相应内容,结果导致这个对象所具有的能力与特点大于等于父对象,实现了对于父对象的包含)、受限继承和特化继承。

从宏观的角度来讲,多态是指在面向对象技术中,当不同的多个对象同时接收到同一个完全相同的消息之后,所表现出来的动作是各不相同的,具有多种形态;从微观的角度来讲,多态是指在一组对象的一个类中,面向对象技术可以使用相同的调用方式来对相同的函数名进行调用,即便这若干个具有相同函数名的函数所执行的动作是不同的。

目前,关系数据库仍旧是使用最为广泛的数据库,如DB2、Oracle、SQLServer等,因此,将对象持久化到关系数据库中,需要进行对象/关系的映射(Object/RelationMapping,ORM)。

随着对象持久化技术的发展,诞生了越来越多的持久化框架,目前,主流的持久化技术框架包括Hibernate、iBatis(MyBatis)和JDO等。

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的ORM框架,Hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲地使用对象编程思维来操纵数据库。

iBatis提供Java对象到SQL(面向参数和结果集)的映射实现,实际的数据库操作需要通过手动编写SQL实现,与Hibernate相比,iBatis最大的特点就是小巧,上手较快。如果不需要太多复杂的功能,iBatis是既可满足要求又足够灵活的最简单的解决方案。

另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只能应用于关系型数据库,而JDO更通用,提供到任何数据底层的存储功能,包括关系型数据库、普通文件、XML文件和对象数据库等,使得应用的可移植性更强。

面向对象建模

UML

UML2.0中一共定义了14种图,其中结构图(静态图)包括:类图、对象图、构件图、部署图、制品图、包图、组合结构图。行为图(动态图)包括用例图、顺序图、通信图(协作图)、定时图、交互概览图、活动图、状态图。

UML定义系统架构包括系统的组织结构、组成部分、关联性、交互机制和指导原则等,提供系统设计信息。它包括逻辑、进程、实现、部署和用例视图等五个系统视图。逻辑视图表示设计模型中重要的部分,进程视图描述并发与同步结构,实现视图建模代码的文件和构件,部署视图表示软件到硬件的映射和分布结构,用例视图是需求分析模型中最基本的。

顺序图是一种用于展示参与者如何与系统对象交互的模型,强调消息的发送和接收方式,可以展示对象之间的交互过程,使用序列片段表示循环、选择等复杂交互。消息类型包括同步消息、异步消息、返回消息、参与者创建消息、参与者销毁消息。

在用例图中,用例之间的关系主要有:包含关系、扩展关系、泛化关系。包含关系表示一个用例中包含了另一个用例,也称为主用例-子用例关系,是提取出来的公共部分。扩展关系表示一个用例可以在某些条件下扩展为另一个用例,它不是主用例的一部分,是主用例的可选路线。泛化关系表示一个用例是另一个用例的特殊情况,也称为父用例-子用例关系。

THE END
1.面向特征的软件产品家族建模方法AET本文在对高校设备预定管理产品家族进行领域建模时,以FODA为基础,把特征和特征模型的概念引入到领域分析模型中,用于表现领域需求,同时采用用例模型描述家族中的成员系统的变化性。 面向特征的产品家族领域分析的主要目标是获得领域分析模型以描述家族中产品的共性和变化性需求,包括场景模型、领域面向对象分析模型和特征模型3...http://www.chinaaet.com/article/19794
2.UML2面向对象分析与设计答案(24页)UML2面向对象分析与设计第二版答案下载理论建模 第1 章 上升到面向对象 选择题 1. A 2. A 3. B 简答题 1. 与传统结构化方法相比,面向对象技术的优势主要体现在哪些方面? 主要包括以下几个方面的与优势: (1)沟通:在计算机中模拟现实世界的事和物; (2 )稳定:较小的需求变化不会导致系统结构大的改变; ...https://max.book118.com/html/2020/0517/5203210141002244.shtm
3.面向对象分析与设计类图类之间的关系包括: ___ 、___ 、___ 和 ___ 。 依赖|泛化|关联|实现 类中方法的可见性包含3种,分别是: ___ 、___ 和 ___ 。 共有;公有;public|私有;private|受保护;protected 在UML软件开发过程系统分析阶段产生的对象模型有三种模型,它们分别是:___ 模 型、 ___ ...https://developer.aliyun.com/article/1219216
4.软件开发方法基础大剖析而面向对象程序语言(OOP)主要工作为编写代码、改进系统的性能。 为了将面向对象的分析模型转化为设计模型,设计人员必须完成设计用例实现方案、设计技术支撑方案、设计用户界面、精化设计模型 面向对象的基本概念主要有对象、类、抽象、封装、继承、多态、接口、消息、组件、模式、复用。面向对象设计(OOD)的基本思想包括...https://www.imooc.com/article/details/id/259116
5.清华大学出版社图书详情提供课件、咨询QQ:381844463(仅限教师)。详细讲解了UML建模所涉及的图形的语法和语义,配以案例分析,简单易懂;阐述了面向对象分析方法和设计方法及其模型表达,易于掌握与应用;结合“面向对象软件工程”的课程教学经验,提供了分析和设计案例以及课后思考题,便于自学。 http://www.tup.tsinghua.edu.cn/bookscenter/book_08634201.html
1.面向对象分析三种模型文章浏览阅读1w次。类模型交互模型状态模型_标题1:模仿上述例子,自己完成3个对象(类)的分析,并提交结果https://blog.csdn.net/k3108001263/article/details/89643578
2.软件工程导论作业2.2 面向对象分析设计的基本思路和过程是怎样的? 答:分析过程主要包括理解、表达和验证。设计是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。 过程:识别系统的用例和角色,进行系统分析并抽象出类,设计系统并设计系统中的类及其行为。 https://www.unjs.com/zuixinxiaoxi/ziliao/20170805000008_1416273.html
3.面向对象分析模型有三种,分别是:对象模型案例题 试题出自试卷《02333《软件工程》预测卷(十四)》 面向对象分析模型有三种,分别是:对象模型、___和功能模型。 参考答案:查看答案查看解析下载APP畅快刷题https://www.educity.cn/tiku/10643005.html
4.软考高级软件架构师学习笔记四(错题重点知识)响应式web设计具体的实现方式包括媒体查询(Media Query)、流式布局(弹性布局、动态布局)、液态图片(弹性图片)等。 9、面向对象分析与设计 面向对象设计的基本任务是把面向对象分析模型转换为面向对象设计模型。 面向对象分析模型主要由顶层架构图、用例图、领域概念模型构成。 https://blog.51cto.com/u_15564034/6429914
5.面向对象分析中的三种主要模型是什么?它们之间有什么关系?答案解析 查看更多优质解析 解答一 举报 (1)与功能模型的关系:对象模型展示了功能模型中的动作者、数据存储和流的结构,动态模型展示了执行加工的顺序.(2)与对象模型的关系:功能模型展示了类上的操作和每个操作的变量,因此它也表示了类之间的“供应者一客... 解析看不懂?免费查看同类题视频解析查看解答 ...https://www.zybang.com/question/02c600aa4150ef963c704c4ffb9d03ad.html
6.面向对象的分析方法主要是建立三类模型,即()。面向对象分析主要由对象模型、动态模型、功能模型组成,其中对象模型是最基本、最重要、最核心的;https://www.nowcoder.com/questionTerminal/2c30051783fe4f52980d798568444d0a
7.(专升本)自考《软件工程》备考知识点汇总9.初始阶段的基本目标是:获得与特定川况和平台无关的系统体系结构轮廓,以此建立产品功能范围;编制初始的业务实例,从业务角度指出该项目的价值,减少项目主要的错误风险.精化阶段的基本目标是通过捕获并描述系统的大部分需求一些关键用况,建立系统体系结构基线的第一个版本,主要包括用况模型和分析模型,减少次要的错误风险;...https://www.yxfsz.com/view/1513782047553982466
8.30个微能力点测评指南目录同心县第八中学人人通空间第二部分微能力测评规范 A1技术支持的学情分析 A2数字教育资源获取与评价 A3演示文稿设计与制作 A4数字教育资源管理 A5技术支持的课堂导入 A6技术支持的课堂讲授 A7技术支持的总结提升 A8技术支持的方法指导 A9学生信息道德培养 A10学生信息安全意识培养 A11评价量规设计与应用 ...http://hy.nxeduyun.com/index.php?r=space/school/theme/content/view&id=2343239