
首先创建域模型,依次点击“New Model from Pattern”,选择“Domain Model”,然后点击“确定”按钮。创建类图。选中“域模型测试”,点击“New Diagram”,输入类图名称“登录类图”,选择“class”,最后点击“确定”按钮。双击打开刚才创建的类图。为下一步画图做好准备。拖入一个用户类。并命名为User。为User类添加变量,在类窗口中,点击“详细信息”->"变量",打开“User Attributes”窗口,添加User类的变量。再依次创建Login、UserDao类,并为其添加属性和方法,并添加类之间的关联关系。User类与Login类是关联关系,Login类依赖于UserDao类。登录时会将封装的User类发送到Login类进行处理,此二者为关联关系。而Login类处理登录时,会查询数据库获取用户信息此时会用到UserDao类,因此Login对数据的查询依赖于UserDao类。
电话计费系统不仅是电信运营商运营支撑系统(BOSS)主要组成部分,也是宾馆、学校、大中型企业必备的管理系统之一。灵活性、准确性、实时性是它的生命。而UML作为面向对象分析与设计的一种标准表示,其最终用途是为不同领域的人们提供统一的交流标准,在电话计费系统中运用UML有助于解决系统开发过程中各类人员(系统架构师,软件设计人员、开发人员、客户、用户)之间相互交流困难的难题,从而建立起一个具有灵活性、准确性、实时性的系统。电话计费系统按照电信业务规范可以划分为数据采集、话费批价、账务处理3个主要系统,而每一个系统又可以分若干个子系统。笔者主要论述基于UML的电话计费系统的分析与设计。
1 UML概述
UML(统一建模语言,Unified Modeling Language)是一种标准化的面向对象的图形化建模语言。它由图与元模型组成,其中的图通常表示UML的语法部分,而元模型是UML的语义部分,它通常起到解释图的含义的作用。图形化表示系统各阶段的元素是UML的特色所在。UML提供了9种不同的图,按其行为特征可以分为两大类,一类是静态图,包括用例图、类图、对象图、组件图、配置图。另一类是动态图,包括序列图、协作图、状态图和活动图。
我们也可以按照从不同的角度为系统架构来将这9种图划分为5种视图:
第一类是用例图(Use case diagram),它通常用于表示客户需求,从用户需求角度描述系统功能,并指出各功能的 *** 作者。
第二类是静态图(Static diagram),包括类图、对象图和包图。其中类图描述系统中类的静态结构,并且定义系统中的类与类之间的联系。对象图是类图的实例,它不是真实的类图,通常用于反映实例的数据结构,及各对象之间的关系。包图由包或类组成,表示包与包之间的关系,主要用于描述系统的分层结构。
第三类是行为图(Behavior diagram),它包括状态图、活动图。其中状态图是对类所描述的事物的补充说明,它显示了对象所有可能的状态以及引起状态发生变化的条件。活动图是一个连续的工作流,它由各种动作状态组成,用于描述各用例之间的活动过程。
第四类是交互图(Interactive diagram),它包括序列图、协作图。其中序列图主要反映显示对象之间的动态协作关系,它强调对象之间消息发送的先后顺序,同时显示对象之间的交互。协作图描述对象间的动态协作关系,主要用于上下文相关的对象之间的动态协作关系。
第五类是实现图(Implementation diagram),它包括组件图、部署图。其中组件图主要用于反映代码的物理结构及各物理部件之间的依赖关系,部署图用于表述系统中的软硬件结构。
2 系统分析
2.1 计费的基本原理
话费计费的依据是用户的通话记录(Call record)。通话记录主要由主叫号码、被叫号码、通话开始时间、通话时长字段组成。话费的计算公式可以如下描述:
Fee=f(caller,called,startDateTime,duration)
其中:Fee为话费;caller为主叫号码;called为被叫号码;start Date Time为通话开始时间;duration为通话时长。
对于一个营业区内的所有电话,基本话费标准批价是一致的,上面公式可以简化为:
Fee=f(called,start Date Time,duration)
电话网络是全球性的,每一个电话都有唯一的号码,不可能对每一个号码都给出不同费率,自然就电话地理区域的不同、用途的不同进行了分类,这就是通话种类(如国际长途、国内长途、区内、区间、信息台等等)。
由于日期与时间的不同,电话用户产生呼叫的频次差别很大,白天呼叫话务量高,夜晚话务量较低,节假日话务量较低,工作日则话务量高;为了提高电话网络的利用率,电信运营商都实行按日期与时间段的优惠资费,以吸引用户在网络较空闲的时候通话。
通话的时长是按单位来计算的,如长途按6 s为1个单位,本地按前3 min后1 min为单位计算。
对上述公式的实现的不同产生了不同的资费标准(如信息产业部颁布的电话资费标准)。
2.2 功能性需求
通过对计费基本原理和目前正在使用的计费系统的分析,参考相关电信业务规范,可得出标准话费计费系统的系统用例图(见图1)。
2.3 性能需求
满足5万话单以下的电话(或150万话单/d)计费,话单处理速度5 000条/min。计算后的费率精确到分。
2.4 输入输出的需求
采用文件级的批价,文件格式如下:
主叫,被叫,通话起始时间,通话时长(单位为s)
每字段之间用“,”号分隔,每行一条话单。
例:98745632,98745632,2006-01-01 11:32:50,160
文件名按生成时间命名:
如:2006-01-03 10:00:10生成的文件文件名为20060103100010
输出文件:数据库的话单记录表,异常话单记录表
3 系统设计
3.1 系统结构与模块的划分
系统结构与模块的划分见图2。
系统分为:登录模块、数据模块、配置模块、界面模块、入库线程模块、数据库分析计算存储过程。
3.2 模块之间的组合与交互
(1)登录模块与数据模块的交互见图3。
(2)界面模块、入库线程、数据模块、数据库、话单文件之间的交互见图4。
4 结语
UML作为一门功能强大的可视化建模语言,是面向对象系统开发领域的一个有效建模工具。将UML应用于话费计费系统中能有效地建立起一个具有高度灵活性,扩展性的系统。基于UML的话费计费系统有助于电信运营公司在当今竞争激烈的环境中适应市场的灵活多变,从而处于有力的竞争位置。
下载一个rational rose软件,IBM的。用这个画类图很简单。进入rational rose 在logical view那右键new->class diagram(这个就是类图了),进去之后画类,画完之后,右键选择new attritube就是添加属性,new operation 是添加方法。已经告诉你怎么做了,自己动动手吧,很简单的。
介绍
下面我要介绍的Bold for Delphi就是是一套优秀的基于UML模型驱动的面向对象的数据库开发框架 包括了几十个组件组件 以及 个以上的类 可以用来轻松地实现信息模型设计及基于信息模型的的应用程序
基础概念介绍
为了使大家对Bold for Delphi整个框架的使用有一个大概的了解 下面将演示如何用UML设计一个简单的模型并用Bold来完成 并包括如何用Bold快速实现一个简单的 *** 作界面
自打我和我老婆认识以后 就染上了她的臭毛病 比较喜欢乱花钱 没有节制 结果搞的自己常常是挣的不如花的多 老要借外债 后来痛定思痛 决定要对每月收支情况做预算 严格控制费用支出 为此写了还写了好多的财务小程序 下面要讲的这个例子程序就是一个常见的家庭小账本程序 它可以用来统计家庭中的收支情况 软件的功能要求如下
可以定义家庭中的各个人员的信息 可以输入收支情况 并同消费的人员关联起来 给出一定时期内消费的情况统计 作为未来家庭预算的依据
建立信息模型
在产品的需求分析阶段 我们首先要建立数据库程序的信息模型 一般来说信息模型主要是指基于ER图的实体关系模型 这是因为我们使用的数据库大部分都是关系型数据库 虽然有些数据库 比如Oracle有面向对象的特性 但不是很完善 一般很少使用 而关系型数据库有一个很大的问题就是无法直观的体现面向对象的思想 关系型的ER模型能够清晰地描述业务域的静态的数据视图 但你无法从模型获取实体的 *** 作及其相互之间的交互 同时 也很难在关系型数据库中简单地实现继承 重载 多态等等面向对象的技术 因此现代数据库开发方法所提倡的面向对象的编程思想无法简单 清晰 平滑地映射为关系型数据库中的表结构
统一建模语言(UML)是一种以可视化的方式建立软件系统框架 并进行文档化的语言 UML语言是对当今软件工程领域成熟设计实践的一个总结 并且已经被实践证明是可以成功地描述大型的复杂系统的 目前国内很多的大型公司已经开始在软件开发过程中使用UML作为一种标准的信息模型设计语言了 Bold for Delphi就是基于UML的 它内置了一套自己的UML建模工具 当然我们也可以使用Rose或者ModelMaker来进行UML设计
面向对象的UML类图则可以说是对ER模型的一个扩展 它对实体之间的关系以及相互之间的作用也进行了描述 ER模型只是对要进行保存的数据进行的模型化 而类图则包括了全部的类实体的属性以及它们的 *** 作和相互作用 它可以使我们对业务域问题有一个更精确的视图 通过使用各种类图技术可以更容易地 也更快速地建立正确的软件系统
基于Bold for Delphi的数据库开发革命性的一点就是允许我们直接把基于UML的类图映射为关系型数据库的存储 而无须手工的通过代码进行转换 要注意一点的是 Bold同其它建模工具如Together ModelMaker不同 它生成框架代码时只使用了UML中的类图 而Together等可以利用UML图中的类图 协作图等其它UML元素来生成代码框架 但是Together不负责生成对象模型对应的关系数据库模型
类模型
下面的这个类图就是我们的账本程序的一个简单类图
图中显示了两个类 人员信息类 Person 以及账目信息类AcctItem 人员类和账目类之间的连线描述了两个类之间的关系 关系包括一个标题PayAssoc揭示了两者之间的关系是支付的关系 每个属性 PayPerson 和 Pay 以及关系多重度因子 和 n 表明每个人可以完成多个账目的收支 而每个账目至少要有一个关联的人员 同时类图还描述了下面一些业务规则
一个人的信息要有名称 账目信息中包含收支金额大小 以及发生日期
上面的类图如果使用关系型数据库来实现的话 需要建立主从表 并将人员和账目之间的关联约束通过应用程序代码强制一些运行逻辑来完成 这时通常要通过补充详细的文档来描述需要强制的业务逻辑 如果没有详细的设计文档 实现代码时就很容易遗漏某些重要的商业规则 同时这些文档在整个的数据库开发的生命周期里面都需要人来手工地维护 难免会出现文档和模型不匹配的错误 而且文档的工作量比较大 而程序员数量又相对不足的话 程序员会觉得既要写代码又要写文档 无形中增加了很多工作量 难免会有抵触情绪 这些都会影响工作的效率
对于这样的问题 Bold则通过精确描述信息模型 无须详细规则描述文档可以将模型自动的转变为实现代码 商业规则在整个数据库开发生命周期内由Bold的类来维护 减少了文档的工作量和出错的可能
建立示例程序
首先 我们要安装Bold for Delphi Bold的一个月评估版可以从 boldsoft 获取 同时D 的架构版内置了Bold 这里我就不详细介绍申请和安装的过程了 安装好后Bold会在IDE的组件面板中添加很多组件 接下来我们就开始建立使用Bold的Delphi程序了
在Delphi中选File|New Application创建一个新的应用程序
保存窗体文件为MainForm pas保存工程文件为CMoney dpr
添加一个数据模块 设定数据模块的名字为DmMoney
将数据模块保存为CDataModule pas
为了使用Bold来建立系统的信息模型 要进行下列 *** 作
从Bold Handles 组件页上选择BoldModal(命名为bmMoney) BoldSystemTypeInfoHandle(命名为bsthMoney)和BoldSystemHandle(命名为bshMoney)到数据模块中
设定bsthMoney的BoldModal属性为bmMoney
设定bshMoney的BoldSystemTypeInfoHandle 属性为bsthMoney
其中BoldModel组件将被用来保存模型 即类 类的关系 约束以及类型等 这些信息将在设计时作为字符串保存到Delphi的窗体和数据模块文件中 在运行时Bold将执行一些模型的中间转换过程 将模型转化为BoldSystemTypeInfoHandle控件所使用的格式 并选择实现可持续性的机制
在设计时储存在BoldModel组件中的信息模型可以被看做元数据 就象数据库的库表和字段结构一样的信息 而BoldSystemTypeInfoHandle组件则保存BoldSystemHandle所需要的运行时信息 这些信息是对UML模型的一种运行时的表达 这个组件是其他Bold组件的信息源 BoldSystemHandle组件则被用来表达整个系统的业务域元素 可以理解为对象空间 通过对象空间我们可以在运行时获得设计时元数据表达的对象的运行实例 目前用到的三个控件已经可以很好的应用在不需要保存数据的环境中了 但账目记录这类数据库程序必须要保存用户输入的信息 因此还需要添加支持数据可持久性的控件 这里为了快速演示的需要 我们使用XML文件作为存储介质 接下来要添加XML可持续控件到数据模块中
从Bold Persistence组件页上选择BoldPersistenceHandleFileXML控件(命名为bphxMoeny)添加到数据模块中
设定组件的BoldModel属性为bmMoney控件
设定bshMoney组件的PersistenceHandle属性为bphxMoeny组件
现在组件关系示意图如下
BoldPersistenceHandleFileXML组件将使我们的程序可以使用XML文件来保存和读取对象 这是一个使用很方便的控件 特别是在快速原型设计期间 因为在原型设计期间 模型经常会被改动 而重新生成数据库表是很费时间的 而XML文件可以使我们非常快的变更我们的模型设计 当模型基本稳定后 可以去掉这个控件 转而切换为其他使用关系型数据库进行存储的可持续性控件 这样的开发方式可以使我们不需要改动整个程序就能很容易地改变数据持续层的存储策略 也就是前面所说的 数据库平台无关设计
除了前面的一些基本的属性设置外 我们还要设定下列控件属性
组件 属性 值 说明 bsthMoney UseGeneratedCode false 是否使用bold生成类代码 这里暂时先不使用 稍后我们会进一步介绍 bphxMoeny FileName Data xml 指定保存数据的xml文件名 bshMoney AutoActivate true 告诉Bold控件在程序运行后马上打开xml文件用于数据存储建立模型 下面的步骤是建立我们的模型 Bold for Delphi内置了一个树形的UML建模工具(应该说Bold美中不足的一点就是没有提供象Visio和Rose那样基于拖放的模型设计界面) 我们可以双击BoldModel(bmMoney)组件调出模型设计工具 bold UML模型编辑器(见下图)包含了应用程序模型信息 数据类型信息和关系数据库映射信息
模型编辑器支持下列实体类型
Model: 模型 全部业务域实体集合
Package: 包 整个模型的一个子集所包含的实体 可以将大模型分解为小模型来减少系统复杂度
Class:类 类似于Delphi的类的概念(Delphi的类可以从UML的类来生成) 但包含Object Pascal无法直接描述的类的信息和相互关系 Bold框架通过关联类和特殊的列表类封装了一些额外的功能使得我们可以很容易的处理复杂的类关系
Attribute: 属性 类似于Delphi中的property概念 然而在Bold中 这些属性可以在模型中直接保存而无需我们编写属性的Get Set方法
Operation: *** 作 等价于Delphi中的类的过程和函数
Association: 关联 代表了类之间的关系 关联可以使用类来表达 关联也可以有 *** 作和属性 在Bold中建立关联的复杂工作同样可以由框架来实现 我们无须编写代码来完成
Role: 角色 代表关联同类的连接
Data Type: 表示模型所支持的不同数据类型 它可以被扩展以支持用户自定义的数据类型
下图是不同实体类型在模型编辑器中是如何标识的
所有的实体类型都可以通过编辑器的右键菜单来创建和修改属性 同时我们选中实体节点后 实体和全局的选项会显示在右侧的编辑器中 其中重要的有
Name: 模型的名称
lishixinzhi/Article/program/Delphi/201311/24785
有关系,类图中的实体类是可以转换为数据库表的,也就是说类图和数据库模型之间是可以互相转换的,可以参考trufun kant studio一站式集成开发平台的数据库模型和UML模型转换这一部分的内容,或者参考trufun网站帮助系统中介绍有关两个模型之间的关联转换的文章
UML类图的一个重要关联成分是重复度(Multiplicity),类似于ER模型中实体基数的概念。但这是两个相反的概念,实体技术是指与一个和实体有联系的另一端实体数目的最大、最小值,基数应写在这一端实体的边上。而重复度是指参与关联的这一端对象树木的最大、最小值,重复度应写在这一端类的边上。重复度可以用整数区间来表示:下界…上界。这个区间是一个闭区间,实际上最常用的重复度是0…1、和1。重复度0…1表示最小值是和最大值是1,而表示范围从0到无穷大,而单个1代表1…1,表示关联中参与的对象数目恰好是(强制是1)。实际应用中可以使用单个数值、范围、或数值与范围的离散集。
望采纳
以上就是关于求解请根据这个代码画类图全部的内容,包括:求解请根据这个代码画类图、UML 电话系统中 类图 数据字典、Java类图怎么画等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)