




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章类图和对象图§3.1类及其表示一、类的定义“类”是面对对象中系统组织结构的核心。它是对一组具有相同属性、行为、关系和语义的事物的抽象。这些事物包括了现实世界中的物理实体、逻辑事物、应用事物、行为事物和甚至纯粹的概念事物等。在UML中“类”被表述成具有相像结构、行为和关系的一组对象的描述符,所用的属性和操作都被附加在类中。“类”的图形表示如下:类名属性操作其中:1.在UML中类的命名分simplename和pathname两种形式如:simplename:ClassApathname:Package1::ClassB2.属性基本格式:[可见性]属性名[:类型][=初始值]如:+name:string-age:integer#max:integer=1003.方法基本格式:[可见性]方法名[(参数列表)][:返回类型]如:+pa():boolean说明:在ROSE中+、–、#分别接受直观的图形符号来表示注:C++中三种不同的继承方式的基类和派生类特性参见下表:公有(public)保护(protected)私有(private)公有(public)继承+(public)#(protected)×私有(private)继承-(private)-(private)×保护(protected)继承#(protected)#(protected)×例如:
4.在ROSE中类有三种表达方式:选中类图标(菜单项的)FormatSuppressAttributes/Opration(制止属性/操作)说明:ROSE中可见性有以下4种:公有(Public)+受爱护(Protected)#私有(Private)–包内公有(Package)~分别接受空白、钥匙、锁和榔头表示。例如:留意:Option-->ShowVisibility:显示/隐藏可见性。例如:
二、类的种类及一些符号表示(1)边界类(BoundaryClass)边界类:代表了系统和系统外的一些实体(人或设备)之间的交互的类,它是系统与外界交换信息的媒介,并将系统与系统环境中的变更隔离开来。例如:窗口、报表、打印机、扫描仪等硬件的界面边界类UML符号表示有如下3种:边界类在Sterotype(构造型)中的设置:(2)实体类(EntityClass)实体类:是模拟必需被永久存储的信息和关联行为的类如:文件、数据库等UML符号表示有如下3种:注:实体类的设置参照边界类的设置,即Sterotype(Entity)其中:限制类所供应的行为具有以下特点:①确定用例中的限制逻辑(事务依次)和事务②运用或规定若干实体类的内容,协调这些实体类的行为说明:①每个用例通常有一个限制类,限制用例中的事务依次②限制类一般可接受窗体(Forms)/对话框(Dialog)来实现(3)限制类(ControlClass)限制类:是用来为特定于一个或几个用例的限制行为的类。限制类UML符号表示有如下3种:注:限制类的设置参照边界类的设置,即Sterotype(Control)(4)接口(Interface)是两个不相关的实体(系统或构件)供应沟通途径的设备(一组操作的集合)
其UML符号表示有如下:作用:帮助类图中的类与其他系统或组件或外部设备进行通信。注:接口的设置参照边界类的设置,即Sterotype(Interface)§3.2类图(ClassDiagram)
一、类图的定义类图是描述类、接口、协作以及它们之间关系的图,用来显示系统的静态结构。
其中:协作(Collaboration):一个用例或一组用例的工作(实现)视图。协作的UML符号表示用Stereotype是
use-caserealization类型的用例来表示如下:一个协作包含以下3部分:(1)名称(2)结构部分:一般用类图来描述,说明共同工作完成协作的类、接口和其它元素(3)行为部分:说明关于这些元素如何交互的动态特征可用UML的交互图来描述:依次图:强调消息的时间依次协作图:强调对象之间的结构依次
说明:协作包含的视图通过在“协作”的Specification(规格)→Diagrams(图)视窗中点击鼠标右键,在弹出的快捷菜单中选择插入注:协作视图的建立参见下图。二、关系:•依靠(Dependence)表示两个模型元素之间的语义(借用目标元素的功能,而不是结构)关系,它说明一个模型元素的变更可能影响到运用它的另一个模型元素。例如:设X、Y是两个类,假如修改Y的定义可能会导致对X的修改,则称类X依靠类Y。依靠关系图形表示为:例如:充电电池和充电器,充电电池通过充电器来充电自行车和打气筒,自行车通过打气筒来充气则Bicycle类与Pump类的类图:classCPeople//人类{public:CBicyclemyBicycle;CPumpmyPump;voidPumpToBicycle(){myBicycle.Expand(&myPump);}}
说明:依靠关系在实现中,目标对象不出现在源对象的属性结构中,通常接受目标对象作为源对象方法的参数来运用。例如,上例的模拟实现代码为:classCBicycle//自行车类classCPump//打气筒类{{public:/*给轮胎充气*/public:/*打气筒充气*/voidExpand(CPump*Pp)voidBlow(){{Pp->Blow();//运用该打气筒给自行车充气}}}}classCPump//打气筒类{public:/*打气筒充气*/voidBlow(){printf("%s\n","…运用该打气筒给自行车充气…");}}
#include"stdafx.h"#include"People.h"intmain(){CPeoplePbe;Pbe.PumpToBicycle();return0;}编写主函数main()如下:
假如把CPump类改写成:运行结果•泛化(Generalization)同前是一般到特殊之间的关系(派生/继承关系)说明:泛化关系是在现有类的基础上定义和实现一个新类的技术(复用技术)。泛化关系图形表示为:例如:即:C++描述如下:
classCAutomobile{……}classCCar:CAutomobile{……}classCLorry:CAutomobile{……}关联关系(Association)关联关系表示两个类之间“结构+语义(行为)”的关系
其图形表示为:双向关联单向关联
例如:classClassWclassClassA
classClassB{{{………………
public:public:public:
ClassAa;voidaFun()voidbFun()
ClassB*b;{{…………
……public:}}voidwFun()…………{}}a.aFun();b=new(ClassB);b->bFun();
}……}
对应的C++实现有以下两种方式:说明:在类的方法(函数)内部临时声明类对象之探讨classClassWclassClassA
classClassB{{{………………
public:public:public:
ClassAa;//关联voidaFun()voidbFun()
……{{public:……
……voidwFun()}}{…………ClassBb;}}a.aFun();b.bFun();
}……}明显,这是一种介于关联和依靠关系之间的编码方式,在建模中既可运用关联关系也可运用依靠关系,我们规定运用“依靠关系”//依靠关联的修饰:⑴名称:用来描述关联的性质。说明:关联名称应运用动词短语,因为它表明源对象正在目标对象上执行动作。关联名称的添加如图:作用:为将来如下设计做铺垫classStudent classUniversity{ {public:public: Universityu;voiduTeach();//老师授课…………voidsStudy();//学生学习} …… }voidStudent::sStudy(){……u.uTeach();//学生通过高校里的老师授课来学习……}⑵角色:一个类在关联中所扮演的角色说明:角色名称应运用名词或名词短语。关联角色的添加如图:作用:为将来如下分析做铺垫:为将来如下设计做铺垫
⑶多重性多重性表示一个类的一个实例与另一个类的几个实例相关联。多重性语法表示:
修饰语义0..10或11恰为10..n或0..*0或更多1..n或1..*1或更多n或*0或更多1..51至5个例如:多重性的添加如图:作用:为将来如下分析、设计做铺垫聚合关系(Aggregation)
聚合关系表示类间的关系是整体与部分的结构关系。C++描述:classClassW{……private:classClassU{……}u;classClassV{……
}v;……}UML描述:例:实现(Realize):
是一种语义关系,表示一个事物只继承另一个事物的行为,而不继承结构。实现关系图形表示如下:
说明:
⑴UML用实现关系来建立接口和实现接口的类或组件之间的关系或:或:⑵而通过“接口”访问“实现接口的类”的类和接口之间的关系是依赖关系。看一个例子:留意:在这里实现接口的类自动继承了接口类的函数#include<unknwn.h>//此头文件中有interface定义interfaceIInterface//接口类的声明{//下面两条语句声明两个接口函数(纯虚函数)virtualintiFunction()=0;virtualintiMethod()=0;};classCRealizeInterface:publicIInterface//实现接口类的定义,继承接口类{public://实现接口部分intiFunction(){Function();return0;}intiMethod(){Method();return0;}private://内部工作部分voidFunction(){printf("%s\n","通过接口IInterface::iFunction()调用CRealizeInterface::Function()成功!");}voidMethod(){printf("%s\n","通过接口IInterface::iMethod()调用CRealizeInterface::Method()成功!");}};上述关系图的C++实现:classCVisitRealizeInterface//通过“接口类”访问“实现接口类”的类的定义{public:voidVFunction_Method(){IInterface*IPoint;IPoint=newCRealizeInterface;IPoint->iFunction();IPoint->iMethod();}};intmain()//主函数{CVisitRealizeInterfacevri;vri.VFunction_Method();return0;}实现的运行结果:§3.3类图建模技术
一、为机制(较大范围的协作)建模机制:代表了须要被模拟的部分系统的功能和行为,这些功能和行为是由类、接口等元素交互作用产生的。机制建模步骤:1.确定要为之建模的机制。2.对于每个机制,确定参与这个机制的类、接口和其他的机制。3.确定这些元素间的关系。4.依据机制的脚本,发觉遗漏的模型部分,以及简单的语义错误。脚本是描述机制的对象间动态行为的图,如状态图等5.确定对象的属性和操作。例:基于“图书管理系统”的用例图我们按步骤进行分析边界边界Query
(查询)边界1.确定机制。依据机制(协作)的定义(模拟部分系统的功能和行为),明显可得到如下机制(协作):总体机制读者机制工作人员机制管理人员机制2.确定参与每个机制的类⑴考虑系统边界,基于“用例图之“参与者─>用例”建立边界类基于业务人员机制,边界类有:业务员登录窗口业务窗口:为操作“借书”和“还书”用例设置的边界类基于读者机制,边界类有:查询窗口:为操作“查询图书”和“查询借阅状况”用例设置的边界类基于管理人员机制,边界类有:管理员登录窗口管理窗口:为操作“维护图书”和“维护读者”用例设置的公共边界类⑵考虑问题域,建立实体类(数据库/文件)借阅者:教工借阅者、学生借阅者借阅图书文件图书图书借阅明细借阅历史档案工作人员⑶考虑系统责任,基于“用例图---用例”建立限制类借书业务:实现“借书”用例操作限制类还书业务:实现“还书”用例操作限制类查询:实现“查询”用例操作限制类注册图书、更新图书:实现“维护图书”用例操作限制类注册读者、注册读者:实现“维护读者”用例操作限制类留意:用子窗体/对话框来实现⑷考虑同外部系统或组件的联系,确定接口类无!类类名类类名边界类:实体类:业务员登录窗口LibrarianLogin借阅者ReaderInf管理员登录窗口AdministratorLogin教工借阅者TeacherInf业务窗口LibrarianWin学生借阅者StudentInf维护窗口MaintainWin图书BookInf查询窗口QueryWin借阅图书文件BorroweBookFileInf控制类:图书借阅明细BookBorroweStatisticsInf借书业务LendbookForm借阅历史档案BorrowehistoryInf
还书业务ReturnbookForm工作人员WorkerInf维护图书RegisterbookFormUpdatebookForm维护读者RegisterBorrowerFormUpdateBorrowerForm机制机制名总体机制TotalCollaboration读者机制ReaderCollaboration业务人员机制LibrarianCollaboration管理人员机制ManagerCollaboration类信息表3.确定类之间的关系(构造类图)
⑴基于工作人员机制之类图
留意:类与包之间是依靠关系
⑵基于读者机制之类图⑶基于管理人员机制之类图⑷基于总机制之类图说明:机制在设计、实现时体现在:1.在系统外部由独立的子系统来实现2.在系统内部由主菜单来实现⑸基于实体类,为数据库模式建模运用UML:运用SQLServer:4.依据机制的脚本,发觉遗漏的模型部分有:读者机制之类图中查询包含两项独立的对象(互不相干),它们分别是“查询图书信息”、“查询借阅信息”,且在查询借阅信息前应当先“登录”,所以应追加三个类且建立相应的关系。更新成类类名类类名边界类:实体类:业务员登录窗口LibrarianLogin借阅者ReaderInf管理员登录窗口AdministratorLogin教工借阅者TeacherInf业务窗口LibrarianWin学生借阅者StudentInf维护窗口MaintainWin图书BookInf查询窗口QueryWin借阅图书文件BorroweBookFileInf控制类:图书借阅明细BookBorroweStatisticsInf借书业务LendbookForm借阅历史档案BorrowehistoryInf
还书业务ReturnbookForm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家具厂原材料存储规定
- 家具厂喷漆工安全管理办法
- 石油化工EPC投资控制措施
- 音乐提升职业压力应对-洞察及研究
- 2025年精神障碍学精神分裂症患者的社会康复计划规范考核卷答案及解析
- 人教版小学五年级上册数学创新活动计划
- 跨境贸易安全目标、安全保证体系及措施
- 突击性城市生活垃圾清运突击措施
- 软件质量保证计划中的文档管理
- 婚庆公司主持人合作合同管理制度
- 有害物质过程管理系统HSPM培训教材
- 2025年蛇年年会汇报年终总结大会模板
- 存款代持协议书范文模板
- DB3301T 0374-2022 疗休养基地评价规范
- 胖东来企业文化指导手册
- 北师大版八年级物理(上册)期末复习题及答案
- 【历年真题合集+答案解析】2024年教资高中历史
- 委托别人找工作的协议
- 医技三基三严知识模拟习题含参考答案
- Y -S-T 732-2023 一般工业用铝及铝合金挤压型材截面图册 (正式版)
- 不定代词专项练习(附详解)
评论
0/150
提交评论