面向对象软件工程建模实例

合集下载

软件工程第8章-面向对象建模

软件工程第8章-面向对象建模
• 执行者的日常工作是否因为系统的新功能 (尤其是目前尚未自动化的功能)而被简化 或提高了效率?
复旦大学计算机科学技术学院 软件工程(第二版) 14
另外还有一些不是目前的执行者回答的问 题: • 系统需要哪些输入/输出?谁从系统获 取信息?谁为系统提供信息? • 与当前系统(可能是人工系统而不是自 动化系统)的实现有关的主要问题是什 么?
一. 定义系统 用况图中的矩形框代表系统,系统的用况 画在矩形框内,代表系统之外的执行者画 在矩形框外
复旦大学计算机科学技术学院
软件工程(第二版)
9
二. 确定执行者 ຫໍສະໝຸດ 执行者是指与系统交互的人或其他系统
• 执行者代表一种角色,而不是具体的某 个人 • 执行者可分成主执行者和副执行者:
主执行者使用系统的主要功能 例如,保险系统中主执行者处理保险的 注册和管理 副执行者处理系统的辅助功能 例如,管理数据库、通信、备份以及其 他管理等系统维护
• 谁需要从系统中得到对他们日常工作的支 持? • 谁需要维护、管理和维持系统的日常运行 (副执行者)? • 系统需要控制哪些硬件设备? • 系统需要与哪些其他系统交互? • 哪些人或哪些系统对系统产生的结果(值) 感兴趣?
复旦大学计算机科学技术学院 软件工程(第二版) 12
三. 确定用况 1. 用况的特征 • 用况总是被执行者启动的(initiated), 执行者必须直接或间接地指示系统去执 行用况 • 用况向执行者提供值,这些值必须是可 识别的 • 用况是完整的,一个用况必须是一个完 整的描述 用况是一个类型,而不是实例,用况的实 例称为场景(scenario)
对同一个项目,不同的开发者选取的用况数 是不一样的。例如一个10个人年规模的项目,有 人选取了20个用况,而在一个类似的项目中,有 人选用了100个用况 似乎20个太少,而100个太多,希望在项目 规模和用况数之间保持均衡

面向对象分析建模之自动售货机案例

面向对象分析建模之自动售货机案例
通过面向对象分析建模,将自动售货机系统的功能需 求和业务逻辑抽象为对象,建立对象之间的关系,为
后续的系统设计和开发提供基础。
PART 02
面向对象分析建模基础
对象与类的概念
对象
现实世界中事物的抽象,具有属性和 行为。

对象的抽象,定义了一组具有共同属 性和行为的对象。
封装与继承
封装:将对象的属性和行为封装在一起,通过 接口对外提供服务。
WENKU DESIGN
WENKU DESIGN
2023-2026
ONE
KEEP VIEW
面向对象分析建模之 自动售货机案例
WENKU DESIGN
WENKU DESIGN
WENKU
REPORTING
https://
CATALOGUE
目 录
• 引言 • 面向对象分析建模基础 • 自动售货机系统分析 • 自动售货机系统设计 • 自动售货机系统实现 • 总结与展望
定期备份系统数据,以防止数据丢失或损坏。
系统升级
根据需求对系统进行升级和维护,确保系统的稳定性和安全性。
PART 06
总结与展望
面向对象分析建模的优势
清晰地表示对象及其关系
通过使用面向对象的方法,我们可以清晰地定义和表示自动售货机中的各个对象及其之间的关系 ,如商品、货币、用户等。
提高可维护性和可扩展性
金融领域
面向对象分析建模可以应用于金融领 域中的账户管理、交易处理、风险管 理等模块,使得金融系统更加安全、 稳定和高效。
WENKU DESIGN
WENKU DESIGN
2023-2026
END
THANKS
感谢观看
KEEP VIEW

面向对象的软件建模与实现

面向对象的软件建模与实现

面向对象的软件建模与实现一、引言软件工程作为一项重要的工程学科,在近年来的发展中越来越受到人们的重视。

面向对象的软件建模与实现是软件工程中的一个重要内容,在软件开发中起着至关重要的作用。

本文将对面向对象的软件建模与实现进行介绍和分析。

二、面向对象的编程思想面向对象的编程思想是一种重要的编程范式,它以对象作为构建程序的基本单元,将数据与处理逻辑封装于对象之中,通过对象之间的相互作用来实现程序的功能。

面向对象的编程思想具有以下几个重要特征:1.封装性封装性是指将数据与操作绑定到一起,通过控制数据的访问来保证数据的安全性和一致性。

通过封装性,对象的内部状态对外部是不可见的,外部程序只能通过对象提供的公共接口来访问对象。

2.继承性继承性是指创建新类时可以借用已有类的属性和方法,使得代码的复用性更高。

通过继承性,子类可以继承父类的属性和方法,并且可以对父类的方法进行重写,使得代码更加灵活。

3.多态性多态性是指同一个接口可以有多种不同的实现方式,使得程序可以更加灵活。

通过多态性,不同的对象可以通过相同的方法名来调用不同的行为,从而实现不同的功能。

三、软件建模软件建模是软件工程中的一个重要环节,它是将软件系统的需求和功能转化为可执行的程序的过程。

在软件建模中,需求分析是非常关键的一步,它是确保软件系统满足用户需求的前提。

面向对象的软件建模主要包括以下几个方面:1.类图类图是面向对象软件建模的重要手段,它用于描述类之间的关系和属性。

类图包含类名、属性和方法,类之间的关系有继承、关联、聚合和组合等。

2.时序图时序图用于描述软件系统中对象之间的交互过程,它描述的是对象之间发生的操作序列和时序关系。

时序图包含对象间的交互消息、时间轴和对象状态等。

3.状态图状态图用于描述软件系统中对象的状态以及状态之间的转换关系。

状态图包含状态、转换和动作等。

四、软件实现面向对象的软件实现需要使用面向对象的编程语言,如Java、C++等。

软件工程实用案例 第7章 面向对象的设计

软件工程实用案例 第7章 面向对象的设计

性应该是最小的。因此位于实体包内的类应该相
对稳定,一般在设计上,实体类的包通常不依赖 其他的包。
Jsp包中存放所有和用户 交互的页面jsp页面,
Jsp
Html页面等等。
Servlet包中存放控制类,
接收用户的请求,负责页
面的跳转。
Servlet
Vo
Vo包中存放实体类,负
责数据的存储和数据的传
递。
(1)从界面层接收请求。 (2)根据业务规则处理请求。 (3)将SQL语句发送到数据访问层或者从数据访问层获
取数据。
(4)将处理结果传回用户界面
数据访问层:其功能主要是负责数据库的访问。简单地 说就是实现对数据表的Select(查询)、Insert(插 入)、Update(更新)、Delete(删除)等操作。如 果要加入ORM的元素,那么就会包括对象和数据表之 间的mapping,以及对象实体的持久化。
软件设计过程中的信息流如图7-1所示。
基基于于场场景的景元的素
用例文本 用例图
活动图
行行为为元元素素 状态图 时序图
基于类的元素 类图 分析包
CRC模型
构件设计 接口设计 体系结构设计 数据/类设计
软件设计的重要性,可以用一个词来表达——质量 设计过程中所做出的决策,将最终影响是否能构建稳 定的系统软件,更重要的是,会影响软件维护的难易 程度(是否易于修改更新)。
区分层次的目的即为了“高内聚低耦合”的思想。
需要注意的是,三层架构并不是按功能来分解软件系 统,而是按类和对象进行分层,将完成同一职责的类 和对象分为一层。
表示层:用于显示数据和接收用户输入的数据,为用户 提供一个人机交互式操作的界面。
业务逻辑层:主要是针对具体的问题的操作,也可以 理解成对数据层的操作,对数据业务逻辑处理,如果 说数据层是积木,那逻辑层就是对这些积木的搭建。

面向对象软件开发事例3

面向对象软件开发事例3

OOA模型—评审者的检查表(续)
OOA 模 型层次 服务 命令约定 语 法 需 求 风 格 约 定
对初始参数层的分层 无‖外部‖访问 消息规格说明 过程描述记号与 至少一个类的服务 风格 至少一个实例的服务 服务与封装属性的一 致性 继承的一致性 类服务的一致性 存储数据的一致性 实例关系的一致性 服务-消息的一致性


好处:评审过程已成为开发过程的一部分。所 生成的管理报告可以监控、跟踪工程进度,保 证每一模型成分的质量。
OOA模型—评审者的检查表
OOA 模 命令约定 型层次 对象-类 唯一性 应用领域 形式 主题 唯一性 应用领域 形式 结构 唯一性 应用领域 形式 语 法 需 求 包含规则 事件识别器 事件响应器 风 格 约 定 响应性 信息封装 单个事件识别器 重载 独立性 包含所有对象-类 整体-部分,类属类 泛化-特化,继承 整体-部分,实例对 实例 重复度和参与度 泛化-特化,类对类 继承一致 唯一性 对初始属性层的分 应用领域 层属性规格说明 形式 (续)

现有的所有检查表都无法保证语义正确性,即 是否建立了‚正确的模型‛。 对语义正确性的评审采用的策略类似于在开发 面向用户的文档时采用的策略,将模型的行为 对照用户描述的场景或用户事例,一一加以确 认。 需要有关人员共同讨论,不一定举行正式的评 审会议。



检查语义正确性从事件-响应模型和EROI图入 手,走查每一个场景或事例,一步一步验证事 件如何识别,相关响应如何产生。
MVC模型
模型 视图
控制 器

我们的OOD体系结构与MVC结构类似,但增 加了一个成分:数据库管理部分。

软件工程实用案例 第6章 面向对象的需求分析

软件工程实用案例 第6章  面向对象的需求分析
(3) 类可以派生出子类,子类继承父类全部特性(数据和 操作),又可以有自己的新特性。子类与父类形成类的 层次结构。
(4) 对象之间通过消息传递相互联系。类具有封装性, 其数据和操作等对外界是不可见的,外界只能通过消 息请求进行某些操作,提供所需的服务。
6.1 面向对象的基本概念
软件工程学家Codd和Yourdon认为:
bus306.showG(); }
//执行自有方法showG
类的继承是软件重用的一种形式,通过继承的属性和行为扩充原有类的功能, 节省了程序开发时间。
6.1 面向对象的基本概念
3. 多态性(Polymorphism) 多态性的概念可以被说成“一个方法,多种实现”。
1) 重写(Overriding)
消息的基本格式为:对象名.方法名(参数)
Katie.shaketail()
在面向对象中,所有的功能都是通过对象之间互发消 息来实现的,消息机制可以像搭积木一样,快速开发 出一个全新的系统。
6.1 面向对象的基本概念
6.1.2 封装、继承和多态性
1. 封装(Encapsulation)
封装是面向对象方法的一个重要原则,它把对象的属 性和服务结合成一个独立的系统单元,是一种信息隐 藏技术,将对象的外部特征(可用的方法)与内部实现 细节(属性、方法如何实现)分开,对象的外部特征对 其他对象来说是可访问的,而它的内部细节对其他对 象是隐蔽的。
运行结果:
public class shapeTest
半径为:2 面积为:12.57 底为:3 高为:4 面积为:6
{ public static void main(String args[])
{ Shape c=new Circle(2);

面向对象软件工程建模实例

面向对象软件工程建模实例
理员把书借回去
• 参与者:学生,图书管理员 • 频率:每天可能会有很多次。最繁忙的情况是,借书的
人非常多,按照现在的速度,大约每分钟完成一个人的结 束工作
• 前置条件:无 • 后置条件:修改所借出的图书的剩余数量 • 假设:借书者总是从图书馆找到书,然后才能拿书办理
借书手续,因此,总是有足够的书可以出借
ManageInterface
Manage
Student
整( 个省 系略 统掉 的属 静性 态和 分方 析法 模) 型
图书管理员
(from Use Case ...) View)
ReturnInterface
Return
BorrowInfo
BorrowInterface
Borrow
Book
SearchInterface 学生
面向对象建模实例
——图书管理系统 面向对象的软件工程,同传统的面向过程的 软件工程相比,在需求的获取、系统分析、设计 和实现方面都有着很大的区别。UML是OOA和 OOD的常用工具。使用UML来构建软件的面向对 象的软件工程的过程,就是一个对系统进行不断 精化的建模的过程。这些模型包括用例模型、分 析模型、设计模型,然后,我们需要使用具体的 计算机语言来建立系统的实现模型。
1:打开借书界面 2:输入借书信息 3:提交借书请求
4:Borrow()
5:检借书数目
6:有效 7:记录借书信息 8:修改图书数目 9:撤销预定 12:借书成功
显示书成功

可选操作流程:所借图书超出最大借书数量 1)学生将所借图书和借书证交给图书管理员 2)图书管理员将学生借书证号码和所借图书输入系 统 3)系统校对借书信息,比对该学生以往借书情况和 当前借书情况,发现已超出最大借书数量,则停 止当前交易,并且提示用户错误原因 4)图书管理员可以应学生的意见,减少借书数量, 并重新提交系统

UML业务建模实例分析四例

UML业务建模实例分析四例

UML业务建模实例分析在我国十年前ATM(自动取款机)还是一个很新鲜的事物,现在在城市的大街小巷随处可见。

我们在日常生活中也经常和ATM打交道。

本章我们将以简化的ATM系统为例将前面几章中学到的用例图、类图、顺序图、状态图、活动图及协作图知识运用到此例中。

参与者"银行储户"和ATM机。

简化后的ATM机仅有取款、存款及其余功能。

其余功能不做详细说明。

图5.1 自动取款机(ATM)系统用例图银行储户在ATM机上完成取款、存款及其他业务。

图5.2所示的银行系统类图和图3.5是类似的,只是将工作人员换成了ATM。

整个银行系统包括了帐户库、银行储户库及ATM系统。

许多单个的帐户组成了帐户库。

帐户具有帐户类型、帐户号、余额三个属性,均为private,其类型分别为char,int,double。

六个操作分别为setType、getType、getAccountNumbe、setAccountNumbe、caculateBalance、getBalance,除caculateBalance为protected其余均为public。

setType设置帐户类型,返回类型为void,参数类型为char,输入帐户类型。

getType获取帐户类型,返回类型为char,无参数。

setAccountNumbe设置帐户号,返回类型为void,参数类型为int,输入帐户号。

getAccountNumbe获取帐户号,返回类型为int,无参数。

caculateBalance计算余额,返回类型为void,参数为double,第一个参数为输入存取款数额,第二个参数为存款余额,既为输入也为输出。

getBalance获取帐户余额,返回类型为double,无参数。

许多银行储户组成了储户库。

ATM系统包含了许多ATM机。

银行储户及ATM机两个类包含哪些属性,哪些操作,它们的可见性及操作的返回类型、参数个数、参数类型从类图上都一目了然。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

这些对象就是所谓的Entity(实体类)。
然后我们需要识别为了完成系统业务逻辑而需要的 业务逻辑对象,以及同用户进行交互的界面类, 即 Control(控制类)和View(边界类)。在分析阶段, 这些对象通常都按照比较自然的方式来组织,例如,为 了完成一个业务功能,我们通常需要一个控制类和一个 边界类,控制类执行业务逻辑,边界类同客户进行交 互。
关于这个图书馆系统,基本的需求比较简单, 就是允许学生可以在图书馆借阅和归还图书,另 外,也可以通过网络或者图书馆的终端来查阅和预 订书。当然,图书馆管理员也可以对图书进行管 理。
一、用例模型——系统需求的获取
用例模型定义系统做什么,是用来获取系统需求 的有效手段。用例模型由“角色”和“用例”组成。我 们在构建一个用例的时候,通常要做的第一件事情 是识别角色,或者说,参与者。然后我们需要识别 系统为参与者提供的服务,或者说,参与者的行 为,也就是用例。最后,我们确定角色和用例之间 的关系。
面向对象建模实例
——图书管理系统 面向对象的软件工程,同传统的面向过程的 软件工程相比,在需求的获取、系统分析、设计 和实现方面都有着很大的区别。UML是OOA和 OOD的常用工具。使用UML来构建软件的面向对 象的软件工程的过程,就是一个对系统进行不断 精化的建模的过程。这些模型包括用例模型、分 析模型、设计模型,然后,我们需要使用具体的 计算机语言来建立系统的实现模型。
在这个图书馆系统中,我们可以识别出的角色有 学生和图书管理员。整个用例模型包含的用例有: 借书、还书、查阅图书、预订图书,以及图书维 护。用例模型可以用用例图表示如下:
预定图书 学生 查阅图书
借书
还书
图书管理员
管理图书
确定有效用例的关键是,检查用例是否包含了一个 完整的功能。用例不能定的过细,不能把一个完整的功 能的一个部分作为一个用例,也不能在一个用例中包含 过多的功能 。例如,用户的登录。学生在预定图书的时 候,可能会需要首先登录系统,这是系统的一个功能。 但是,这个功能只是预定图书这个完整的功能中的一个 步骤,或者说一个子功能,就不适于做成一个用例。另 一方面,借书和还书,都是相对完整的功能,如果把这 两个用例合并成一个类似于“处理图书”的用例,显然 是 不能明确的表达用例需要表达的含义的。
首先来分析借书这个用例 在这个用例中,首先可以识别出一些直接的对象, 包括图书管理员(BookAdmin)、学生(Student)、图书 (Book),然后,稍作分析,我们会发现我们需要一个 实体对象来记录图书的借还信息(BorrowInfo)。最后, 我们发现,在借书的过程中,我们会使用到预定图书的 信息(SubscribrInfo)。 然后,发现我们需要一个借书的控制类(Borrow)来 执行借书的动作,以及一个用户界面(BorrowInterface) 来接受用户的输入。

基本操作流程:借书成功 1)学生将所借图书和借书证交给图书管理员 2)图书管理员将学生借书证号码和所借图书输入 系统 3)系统校对借书信息,比对该学生以往借书情况 和当前借书情况,如果不存在不允许借 书的情 况,则记录借书交易的信息,并且修改相应的 馆藏图书的数量信息 4)如果该学生已经预订了这本图书,则撤销该预 定 5)报告交易成功
Student
BorrowInfo 图书管理员
(from Use Case ...) View)
BorrowInterface
Borrow SubscribrInfo
借书类图
Book
在分析模型中,我们也需要识别出类的一些属性和 方法。同样的,为了避免过早的陷入细节中,以及适应 将来在设计时类的变化,在分析模型中,我们一般只把 一些主要的属性和方法标识出来。 例如,对于Student类,我们只需要Name和CardNo (借书证号)属性,对于Book,我们只需要BookID、 AllCount(书的总数)、CurrentCount(当前数量)等 属性。现在,为类图添加上述属性,就可以得到下面的 结果:
ManageInterface
Manage
Student
整( 个省 系略 统掉 的属 静性 态和 分方 析法 模) 型
图书管理员
(from Use Case ...) View)
ReturnInterface
Return
BorrowInfo
BorrowInterface
Borrow
Book
SearchInterface 学生
(1)描述用例
需要了解的是,使用UML进行面向对象的系统建 模,并非只是意味着画UML图形,对UML图的文档说 明是同样重要的。在描述用例时,我们可以用文字来描 述,也可以用其他图形来描述,例如,顺序图或者活动 图等等。 下面,我们对借书这个用例来做描述:
• 名称:借书 • 说明:学生在图书馆挑选好需要的图书后,通过图书管
(1)静态模型的建立
进行分析建模的第一步,通常是识别对象,然后提 取出类。对象识别的结果,就是我们所需要的静态模 型,通常表现为类图。
首先识别出实体对象,这些对象通常来说是比较明 显的,例如系统中的角色,系统需要处理的资料,如本 系统中需要处理的图书资料等;有些实体对象需要稍微 分析一下才能得到,例如,在本系统中,为了记录图书 借还的信息,我们可能需要一个对象来专门记录这一信 息。
用活动图进行描述
显示借书界面
输入借书证号 码和所借图书
验证借书数量
修改借书信息
Hale Waihona Puke 借 书 活 动 图借书数量超出
通知用户
借书数量未超出
修改馆藏图书数量
记录本次交易信息
已预定 未预定
撤销预定
借书成功
二、分析模型
用例模型是从最终用户的角度来看待问题,而分析 模型是从开发者的角度来描述问题。用例模型的主要工 作是描述现实世界的业务流程,而很少会涉及系统的概 念。分析,则是从系统的角度来来看待软件应该为用户 提供的服务。 分析仍然停留在“做什么”的层次。
理员把书借回去
• 参与者:学生,图书管理员 • 频率:每天可能会有很多次。最繁忙的情况是,借书的
人非常多,按照现在的速度,大约每分钟完成一个人的结 束工作
• 前置条件:无 • 后置条件:修改所借出的图书的剩余数量 • 假设:借书者总是从图书馆找到书,然后才能拿书办理
借书手续,因此,总是有足够的书可以出借
(from Use Case ...) View)
Search
SubscribeInterface
Subscribe
SubscribrInfo
(2)动态模型的建立
在面向对象的系统中,业务流程表现为对象之间的 交互。我们有了上面分析的得到的对象后,就可以来描 述他们是怎么进行交互和协作的了。在UML中,我们 可以使用顺序图、活动图或者状态图来建模这些动态的 过程。 一借书的Use Case为例
1:打开借书界面 2:输入借书信息 3:提交借书请求
4:Borrow()
5:检借书数目
6:有效 7:记录借书信息 8:修改图书数目 9:撤销预定 12:借书成功
显示借书成功

可选操作流程:所借图书超出最大借书数量 1)学生将所借图书和借书证交给图书管理员 2)图书管理员将学生借书证号码和所借图书输入系 统 3)系统校对借书信息,比对该学生以往借书情况和 当前借书情况,发现已超出最大借书数量,则停 止当前交易,并且提示用户错误原因 4)图书管理员可以应学生的意见,减少借书数量, 并重新提交系统
在借书这个用例中,有两个事件流:借书成功(正 常事件流)和所借图书超出最大借书数量(非正常事件 流)。我们首先来做“借书成功”这个事件流,下面是 这 个事件流的顺序图:
顶层包::管理员
:BorroeInterface
:Borrow
:Student
:Book
:BorrowInfo :SubscribrInfo
相关文档
最新文档