1、第第3 3章章 类图和对象图类图和对象图3.1 类及其表示类及其表示 一、类的定义一、类的定义 “ “类类”是面向对象中系统组织结构的核心。它是对一组具有相是面向对象中系统组织结构的核心。它是对一组具有相同属性、行为、关系和语义的事物的抽象。这些事物包括了现实世同属性、行为、关系和语义的事物的抽象。这些事物包括了现实世界中的物理实体、逻辑事物、应用事物、行为事物和甚至纯粹的概界中的物理实体、逻辑事物、应用事物、行为事物和甚至纯粹的概念事物等。念事物等。 在在UMLUML中中“类类”被表述成具有相似结构、行为和关系的一组对象被表述成具有相似结构、行为和关系的一组对象的描述符,所用的属性和操作都被
2、附加在类中。的描述符,所用的属性和操作都被附加在类中。 “类类”的的图形表示如下:图形表示如下:类名类名属性属性操作操作其中:其中: 1 1在在UMLUML中类的命名分中类的命名分simple name simple name 和和path name path name 两种形式两种形式 如:如:simple namesimple name:ClassAClassA path name:Package1:ClassB path name:Package1:ClassB 2 2属性基本格式:属性基本格式: 可见性可见性 属性名属性名 :类型:类型 = =初始值初始值 如:如:+ name : s
3、tring+ name : string - age : integer - age : integer # max : integer=100 # max : integer=100 3 3方法基本格式:方法基本格式: 可见性可见性 方法名方法名 (参数列表)(参数列表) :返回类型:返回类型 如:如:+ pa() : boolean+ pa() : boolean 说明:在说明:在ROSEROSE中中+、 # 分别采用直观的图形符号来表示分别采用直观的图形符号来表示注:注:C+中三种不同的继承方式的基类和派生类特性参见下表:中三种不同的继承方式的基类和派生类特性参见下表: 公有公有(pub
4、lic)保护保护(protected )私有私有(private)公有公有(public)继承继承 + (public) #(protected )私有私有(private)继承继承 -( -(private) ) -( -(private) )保护保护(protected )继承继承 #(protected ) #(protected )例如:例如: ClassAClassAClassA4. 4. 在在ROSEROSE中类有三种表达方式中类有三种表达方式: :选中类图标选中类图标( (菜单项的菜单项的)Format)FormatSuppress Attributes/OprationSupp
5、ress Attributes/Opration ( (制止制止 属性属性/ /操作操作) )说明:说明:ROSEROSE中中可见性有以下可见性有以下4 4种:种: 公有(公有(PublicPublic) + 受保护(受保护(ProtectedProtected) # 私有(私有(PrivatePrivate) 包内公有(包内公有(PackagePackage) 分别采用空白、钥匙、锁和榔头表示。例如:分别采用空白、钥匙、锁和榔头表示。例如:注意:注意:Option-Show Visibility: Option-Show Visibility: 显示显示/ /隐藏可见性。例如:隐藏可见性。例
6、如: NewClassnamename2opname()opname2()边界类(Boundary Class)Class1Class2Class3Label:标签Decoration:修饰Icon: 图标 二、类的种类及一些符号表示二、类的种类及一些符号表示 (1) 边界类边界类(Boundary ClassBoundary Class) 边界类:代表了系统和系统外的一些实体(人或设备)边界类:代表了系统和系统外的一些实体(人或设备)之间的交互的类,它是系统与外界交换信息的媒介,并将之间的交互的类,它是系统与外界交换信息的媒介,并将系统与系统环境中的变化隔离开来。系统与系统环境中的变化隔离开
7、来。 例如:窗口、报表、打印机、扫描仪等硬件的界面例如:窗口、报表、打印机、扫描仪等硬件的界面 边界类边界类UML符号表示有如下符号表示有如下3种:种:边界类在边界类在Sterotype(构造型构造型)中的设置:中的设置:实体类(Entity Class)Class4Icon: 图标Class5Decoration:修饰Class6Label:标签(2)(2) 实体类实体类(Entity ClassEntity Class) 实体类:是模拟必须被永久存储的信息和关联行为的类实体类:是模拟必须被永久存储的信息和关联行为的类 如:文件、数据库等如:文件、数据库等 UMLUML符号表示有如下符号表示
8、有如下3 3种:种:注:实体类的设置参照边界类的设置注:实体类的设置参照边界类的设置, 即即Sterotype(Entity)Class7Icon: 图标Class8Decoration:修饰Class9Label:标签 其中:控制类所提供的行为具有以下特点:其中:控制类所提供的行为具有以下特点: 确定用例中的控制逻辑确定用例中的控制逻辑( (事件顺序事件顺序) )和事务和事务 使用或规定若干实体类的内容,协调这些实体类的行为使用或规定若干实体类的内容,协调这些实体类的行为 说明:说明: 每个用例通常有一个控制类,控制用例中的事件顺序每个用例通常有一个控制类,控制用例中的事件顺序 控制类一般可
9、采用窗体控制类一般可采用窗体(Forms)/(Forms)/对话框对话框(Dialog)(Dialog)来实现来实现(3) (3) 控制类(控制类(Control ClassControl Class) 控制类:是用来为特定于一个或几个用例的控制行为控制类:是用来为特定于一个或几个用例的控制行为 的类。的类。 控制类控制类UMLUML符号表示有如下符号表示有如下3 3种:种: 注:控制类的设置参照边界类的设置,即注:控制类的设置参照边界类的设置,即Sterotype(Control) Interface Interface InterfaceClass7Icon: 图标Class8Decora
10、tion:修饰Class9Label:标签(4) (4) 接口(接口(InterfaceInterface) 是两个不相关的实体(系统或构件)提供交流途径的是两个不相关的实体(系统或构件)提供交流途径的 设备(一组操作的集合设备(一组操作的集合 ) 其其UMLUML符号表示有如下:符号表示有如下: 作用:帮助类图中的类与其他系统或组件或外部设备进作用:帮助类图中的类与其他系统或组件或外部设备进 行通信。行通信。 注:接口的设置参照边界类的设置,注:接口的设置参照边界类的设置,即即Sterotype(Interface)3. 2 类图类图(Class Diagram) 一、类图的定义一、类图的定
11、义 类图是描述类、接口、协作以及它们之间关系的图,类图是描述类、接口、协作以及它们之间关系的图,用用来显示系统的静态结构。来显示系统的静态结构。 其中:其中: 协作(协作(CollaborationCollaboration):一个用例或一组用例的工作):一个用例或一组用例的工作 (实现)视图。(实现)视图。 协作的协作的UMLUML符号表示用符号表示用StereotypeStereotype是 use-case realizationuse-case realization 类型的用例来表示如下:类型的用例来表示如下:Collaboration一个协作包含以下一个协作包含以下3 3部分:部分
12、: (1 1)名称)名称 (2 2)结构部分:一般用类图来描述,说明共同工作完)结构部分:一般用类图来描述,说明共同工作完 成协作的类、接口和其它元素成协作的类、接口和其它元素 (3 3)行为部分:说明关于这些元素如何交互的动态特)行为部分:说明关于这些元素如何交互的动态特 征可用征可用UMLUML的交互图来描述:的交互图来描述: 顺序图:强调消息的时间顺序顺序图:强调消息的时间顺序 协作图:强调对象之间的结构顺序协作图:强调对象之间的结构顺序 说明:协作包含的视图通过在说明:协作包含的视图通过在“协作协作”的的 SpecificationSpecification(规格)(规格)Diagra
13、msDiagrams(图)(图) 视窗中点击鼠标右键,在弹出的快捷菜单中选择插入视窗中点击鼠标右键,在弹出的快捷菜单中选择插入 注:协作注:协作视图视图的建立参见下图。的建立参见下图。 二、关系:二、关系: 依赖(依赖(DependenceDependence) 表示两个模型元素之间的语义(表示两个模型元素之间的语义(借用目标元素的功能,而借用目标元素的功能,而不是结构不是结构)关系,它说明一个)关系,它说明一个模型元素模型元素的变化可能影响到的变化可能影响到使用它的另一个模型元素。使用它的另一个模型元素。 例如:设例如:设X X、Y Y是两个类,如果修改是两个类,如果修改Y Y的定义可能会导
14、的定义可能会导 致对致对X X的修改,则称类的修改,则称类X X依赖类依赖类Y Y。 依赖关系图形表示为:依赖关系图形表示为: 例如:充电电池和充电器,充电电池通过充电器来充电例如:充电电池和充电器,充电电池通过充电器来充电 自行车和打气筒,自行车通过打气筒来充气则自行车和打气筒,自行车通过打气筒来充气则 BicycleBicycle类与类与PumpPump类的类图:类的类图:class CPeople /人类人类 public: CBicycle myBicycle; CPump myPump; void PumpToBicycle() myBicycle.Expand(&myPump);
15、说明:说明: 依赖关系在实现中,目依赖关系在实现中,目标对象不出现在源对象的标对象不出现在源对象的属性结构中,通常采用目属性结构中,通常采用目标对象作为源对象方法的标对象作为源对象方法的参数来使用。参数来使用。 例如,上例的模拟实现例如,上例的模拟实现代码为:代码为:class CBicycle /自行车类自行车类 class CPump /打气筒类打气筒类 public: /*给轮胎充气给轮胎充气*/ public: /*打气筒充气打气筒充气*/ void Expand(CPump* Pp) void Blow( ) Pp-Blow(); /使用该打气筒给自行车充气使用该打气筒给自行车充气
16、class CPump /打气筒类打气筒类 public: /*打气筒充气打气筒充气*/ void Blow( ) printf( %sn , 使用该打气筒给自行车充气使用该打气筒给自行车充气 ); #include stdafx.h #include People.h int main( ) CPeople Pbe; Pbe.PumpToBicycle(); return 0; 编写主函数编写主函数main()如下:如下: 如果把如果把CPump类改写成:类改写成:运行结果运行结果 泛化(泛化(GeneralizationGeneralization) 同前是一般到特殊之间的关系(派生同前是
17、一般到特殊之间的关系(派生/ /继承关系)继承关系) 说明:泛化关系是在现有类的基础上定义和实现一个新说明:泛化关系是在现有类的基础上定义和实现一个新 类的技术(复用技术)类的技术(复用技术)。 泛化关系图形表示为:泛化关系图形表示为: 例如:例如:课程计划课程设置NewClassLorryAutomobileCar汽车小轿车大卡车即:即: C+描述如下:描述如下: class CAutomobile class CCar : CAutomobile class CLorry : CAutomobile 关联关联关系关系(AssociationAssociation) 关联关系表示两个类之间关
18、联关系表示两个类之间“结构结构+ +语义(行为)语义(行为)”的关的关系系 其图形表示为:其图形表示为: 双向关联双向关联 单向关联单向关联 例如:例如:ClassAClassW11ClassB0.n1110.n1 class ClassW class ClassA class ClassB public: public: public: ClassA a; void aFun() void bFun() ClassB* b; public: void wFun() a.aFun(); b=new(ClassB); b-bFun(); 对应的对应的C+C+实现有以下两种方式:实现有以下两种方式
19、:说明:在类的方法(函数)内部临时声明类对象之讨论说明:在类的方法(函数)内部临时声明类对象之讨论 class ClassW class ClassA class ClassB public: public: public: ClassA a;/关联关联 void aFun() void bFun() public: void wFun() ClassB b; a.aFun(); b.bFun(); 显然,这是一种介于关联和依赖关系之间的编码方式,在建模中显然,这是一种介于关联和依赖关系之间的编码方式,在建模中既可使用关联关系也可使用依赖关系,我们规定使用既可使用关联关系也可使用依赖关系,我们
20、规定使用“依赖关系依赖关系”/依赖依赖 关联的修饰:关联的修饰: 名称:用来描述关联的性质。名称:用来描述关联的性质。 说明:关联名称应使用动词短语,因为它表明源对象正在目标说明:关联名称应使用动词短语,因为它表明源对象正在目标 对象上执行动作。对象上执行动作。 关联名称的添加如图:关联名称的添加如图:作用:为未来如下设计做铺垫作用:为未来如下设计做铺垫 class Student class University public: public: University u; void uTeach(); /教师授课教师授课 void sStudy();/学生学习学生学习 void Studen
21、t:sStudy() u.uTeach(); /学生通过大学里的教师授课来学习学生通过大学里的教师授课来学习 角色:一个类在关联中所扮演的角色角色:一个类在关联中所扮演的角色 说明:角色名称应使用名词或名词短语。说明:角色名称应使用名词或名词短语。 关联角色的添加如图:关联角色的添加如图: 作用作用:为未来如下分析做铺垫为未来如下分析做铺垫: 为未来如下设计做铺垫为未来如下设计做铺垫 多重性多重性 多重性表示一个类的一个实例与另一个类的几个实例相多重性表示一个类的一个实例与另一个类的几个实例相关联。关联。 多重性语法表示:多重性语法表示: 修饰修饰 语义语义0.10或或11恰为恰为10.n 或
22、或0.*0或更多或更多1.n 或或1.*1或更多或更多n 或或*0或更多或更多1.51至至5个个例如:例如:StudentUniversity1.n1.n1.n1.n多重性的添加如图:多重性的添加如图:作用作用:为未来如下分析、设计做铺垫为未来如下分析、设计做铺垫 聚合关系(聚合关系(AggregationAggregation) 聚合关系表示类间的关系是整体与部分的结构关系。聚合关系表示类间的关系是整体与部分的结构关系。 C+描述:描述:class ClassW private: class ClassU u; class ClassV v; ClassW ClassU ClassVUML描
23、述:描述:例:例: 实现(实现(RealizeRealize):): 是一种语义关系,表示一个事物只继承另一个事物的行为,而不是一种语义关系,表示一个事物只继承另一个事物的行为,而不继承结构。继承结构。 实现关系图形表示如下:实现关系图形表示如下: 说明:说明: UMLUML用实现关系来建立接口和实现接口的类或组件之间的关系用实现关系来建立接口和实现接口的类或组件之间的关系或:或:InterfaceRealizeInterfaceInterfaceRealizeInterfaceInterfaceRealizeInterface或:或: 而通过而通过“接口接口”访问访问“实现接口的类实现接口的
24、类”的类和接口之间的关系的类和接口之间的关系是依是依 赖关系。赖关系。 看一个例子:看一个例子:注意:在这里实现接口的类自注意:在这里实现接口的类自 动继承了接口类的函数动继承了接口类的函数#include / 此头文件中有此头文件中有interface定义定义interface IInterface / 接口类的声明接口类的声明 /下面两条语句声明两个接口函数(纯虚函数)下面两条语句声明两个接口函数(纯虚函数) virtual int iFunction() = 0; virtual int iMethod() = 0;class CRealizeInterface :public IInt
25、erface / 实现接口类的定义,继承接口类实现接口类的定义,继承接口类public: /实现接口部分实现接口部分 int iFunction() Function(); return 0; int iMethod() Method(); return 0; private: /内部工作部分内部工作部分 void Function() printf(%sn,通过接口通过接口IInterface:iFunction()调用调用CRealizeInterface:Function()成功成功!); void Method() printf(%sn,通过接口通过接口IInterface:iMeth
26、od()调用调用CRealizeInterface:Method()成功!成功!); ;上述关系图的上述关系图的C+实现:实现:class CVisitRealizeInterface /通过通过“接口类接口类”访问访问“实现接口类实现接口类”的类的定义的类的定义 public: void VFunction_Method() IInterface* IPoint; IPoint=new CRealizeInterface; IPoint-iFunction(); IPoint-iMethod(); ;int main() /主函数主函数 CVisitRealizeInterface vri;
27、 vri.VFunction_Method(); return 0;实现的运行结果:实现的运行结果:3. 3 类图建模技术类图建模技术 一、为机制(较大范围的协作)建模一、为机制(较大范围的协作)建模 机制:代表了需要被模拟的部分系统的机制:代表了需要被模拟的部分系统的功能和行为功能和行为,这,这些些功能和行为功能和行为是由类、接口等元素交互作用产生的。是由类、接口等元素交互作用产生的。 机制建模步骤:机制建模步骤: 1 1确定要为之建模的机制。确定要为之建模的机制。 2 2对于每个机制,确定参与这个机制的类、对于每个机制,确定参与这个机制的类、 接口和其他的机制。接口和其他的机制。 3 3确
28、定这些元素间的关系。确定这些元素间的关系。 4 4根据机制的脚本,发现遗漏的模型部分,以及简根据机制的脚本,发现遗漏的模型部分,以及简 单的语义错误。单的语义错误。 脚本是描述机制的对象间动态行为的图脚本是描述机制的对象间动态行为的图, ,如状态图等如状态图等 5 5确定对象的属性和操作。确定对象的属性和操作。 例:基于例:基于“图书管理系统图书管理系统”的用例图我们按步骤进行分的用例图我们按步骤进行分析析边界边界边界边界为系统的需求建模为系统的需求建模IssueFind(交纳罚金)ReturnBook(还书) BorrowBook (借书)Borrower(读者)Librarian(工作人员
29、)RegisterBorrower(注册读者)UpdateBorrower(更新读者)Search(查询)Login(登录)MaintainBorrower(维护读者)Administrator(管理员)RegisterBook(注册图书)UpdateBook(更新图书)MaintainBook(维护图书) CheckBorrowInfo (检查借阅权限) CheckUserInfo (检查用户合法性) Query (查询查询)边界边界 1. 1.确定机制。根据机制(协作)的定义(模拟部分系统的功能和确定机制。根据机制(协作)的定义(模拟部分系统的功能和 行为),显然可得到如下机制(协作):行
30、为),显然可得到如下机制(协作): 总体机制总体机制 读者机制读者机制 工作人员机制工作人员机制 管理人员机制管理人员机制 2.2.确定参与每个机制的类确定参与每个机制的类 考虑系统边界,基于考虑系统边界,基于“用例图之用例图之“参与者参与者用例用例”建立建立边界类边界类 基于业务人员机制,边界类有基于业务人员机制,边界类有: : 业务员业务员登录登录窗口窗口 业务窗口业务窗口 :为操作:为操作“借书借书”和和“还书还书”用例用例设置设置的边界类的边界类 基于读者机制,边界类有基于读者机制,边界类有: : 查询窗口:为操作查询窗口:为操作“查询图书查询图书”和和“查询借阅情况查询借阅情况”用例
31、设置用例设置的边的边 界类界类 基于管理人员机制,边界类有基于管理人员机制,边界类有: : 管理员登录管理员登录窗口窗口 管理窗口:为操作管理窗口:为操作“维护图书维护图书”和和“维护读者维护读者”用例设置的公用例设置的公共边共边 界类界类 考虑问题域,建立实体类考虑问题域,建立实体类(数据库(数据库/ /文件)文件) 借阅者:教工借阅者、学生借阅者借阅者:教工借阅者、学生借阅者 借阅图书文件借阅图书文件 图书图书 图书借阅明细图书借阅明细 借阅历史档案借阅历史档案 工作人员工作人员 考虑系统责任,基于考虑系统责任,基于“用例图用例图-用例用例”建立控制类建立控制类 借书借书业务:实现业务:实
32、现“借书借书”用例操作用例操作控制控制类类 还书还书业务:实现业务:实现“还书还书”用例操作用例操作控制控制类类 查询查询:实现:实现“查询查询”用例操作用例操作控制控制类类 注册图书、更新图书注册图书、更新图书:实现:实现“维护图书维护图书”用例操作用例操作控制控制类类 注册注册读者、读者、注册读者注册读者:实现:实现“维护读者维护读者”用例操作用例操作控制控制类类 注意:用子窗体注意:用子窗体/ /对话框来实现对话框来实现 考虑同外部系统或组件的联系,确定接口类考虑同外部系统或组件的联系,确定接口类 无!无!类类类名类名类类类名类名边界类:边界类:实体类:实体类: 业务员登录窗口业务员登录
33、窗口LibrarianLibrarianLoginLogin 借阅者借阅者ReaderInfReaderInf 管理员登录窗口管理员登录窗口AdministratorLoginAdministratorLogin 教工借阅者教工借阅者TeacherInfTeacherInf 业务窗口业务窗口LibrarianWinLibrarianWin 学生借阅者学生借阅者StudentInfStudentInf 维护窗口维护窗口MaintainWinMaintainWin 图书图书BookInfBookInf 查询窗口查询窗口QueryQueryWinWin 借阅图书文件借阅图书文件BorroweBook
34、FileInfBorroweBookFileInf控制类:控制类: 图书借阅明细图书借阅明细BookBorroweBookBorroweStatisticsStatisticsInInf f 借书借书业务业务LendLendbookbookFormForm 借阅历史档案借阅历史档案BorroweBorrowehistoryInfhistoryInf 还书还书业务业务ReturnReturnbookbookFormForm 工作人员工作人员W WorkerInforkerInf 维护图书维护图书RegisterRegisterbookbookFormFormUpdateUpdatebookboo
35、kFormForm 维护读者维护读者RegisterBorrowerFormRegisterBorrowerFormUpdateBorrowerFormUpdateBorrowerForm机制机制机制名机制名总体机制总体机制TotalCollaborationTotalCollaboration读者机制读者机制ReaderCollaborationReaderCollaboration业务人员机制业务人员机制LibrarianLibrarianCollaborationCollaboration管理人员机制管理人员机制ManagerCollaborationManagerCollaborati
36、on类信息表类信息表 3. 3. 确定类之间的关系(构造类图)确定类之间的关系(构造类图) 基于工作人员机制之基于工作人员机制之类图类图 LendbookFormReturnbookFormLibrarianWinWorkerInfLibrarianLoginEntityClassPackage注意:类与包之间是依赖关系注意:类与包之间是依赖关系 基于读者机制之基于读者机制之类图类图QueryWinEntityClassPackage 基于管理人员机制之基于管理人员机制之类图类图EntityClassPackageRegisterbookFormUpdatebookFormWorkerInfA
37、dministratorLoginRegisterBorrowerFormMaintainWinUpdateBorrowerForm 基于总机制之基于总机制之类图类图EntityClassPackageReaderCollaborationLibrarianCollaborationManagerCollaborationTotalCollaboration说明:机制在设计、实现时体现在:说明:机制在设计、实现时体现在: 1. 在系统外部由独立的子系统来实现在系统外部由独立的子系统来实现 2. 在系统内部由主菜单来实现在系统内部由主菜单来实现 基于实体类,为数据库模式建模基于实体类,为数据库模
38、式建模 使用使用UML:ReaderInfBorrowehistoryInfStudentInfTeacherInfBookBorroweStatisticsInf父类对象信息的定期复制BorroweBookFileInfBookInf使用使用SQL Server:4 4根据机制的脚本,发现遗漏的模型部分有:读者机制之根据机制的脚本,发现遗漏的模型部分有:读者机制之类图中类图中 查询包含两项独立的对象(互不相干),它们分别是查询包含两项独立的对象(互不相干),它们分别是 “ “查询查询 图书信息图书信息”、“查询借阅信息查询借阅信息”,且在查询借阅信息前应该先,且在查询借阅信息前应该先 “ “
39、登录登录”,所以应追加三个类且建立相应的关系。,所以应追加三个类且建立相应的关系。QueryWinEntityClassPackageSearchbookFormQueryWinBorrowerLoginFormQueryBorroweFormEntityClassPackage更新成更新成类类类名类名类类类名类名边界类:边界类:实体类:实体类: 业务员登录窗口业务员登录窗口LibrarianLibrarianLoginLogin 借阅者借阅者ReaderInfReaderInf 管理员登录窗口管理员登录窗口AdministratorLoginAdministratorLogin 教工借阅者教
40、工借阅者TeacherInfTeacherInf 业务窗口业务窗口LibrarianWinLibrarianWin 学生借阅者学生借阅者StudentInfStudentInf 维护窗口维护窗口MaintainWinMaintainWin 图书图书BookInfBookInf 查询窗口查询窗口QueryQueryWinWin 借阅图书文件借阅图书文件BorroweBookFileInfBorroweBookFileInf控制类:控制类: 图书借阅明细图书借阅明细BookBorroweBookBorroweStatisticsStatisticsInInf f 借书借书业务业务LendLendb
41、ookbookFormForm 借阅历史档案借阅历史档案BorroweBorrowehistoryInfhistoryInf 还书还书业务业务ReturnReturnbookbookFormForm 工作人员工作人员W WorkerInforkerInf 维护图书维护图书RegisterRegisterbookbookFormFormUpdateUpdatebookbookFormForm 维护读者维护读者RegisterBorrowerFormRegisterBorrowerFormUpdateBorrowerFormUpdateBorrowerForm 查询查询QuerybookFormQ
42、uerybookFormQueryBorroweFormQueryBorroweForm、BorrowerBorrowerLoginLoginFormForm机制机制机制名机制名总体机制总体机制TotalCollaborationTotalCollaboration读者机制读者机制ReaderCollaborationReaderCollaboration业务人员机制业务人员机制LibrarianLibrarianCollaborationCollaboration管理人员机制管理人员机制ManagerCollaborationManagerCollaboration更新的类信息表更新的类信息
43、表 5. 按类图的按类图的3个层次进一步分析和设计,添加属性、方法和细节等。个层次进一步分析和设计,添加属性、方法和细节等。 参见下一节参见下一节 “3.4 类图的层次划分类图的层次划分” 注意:在这期间就需要动态模型协助设计注意:在这期间就需要动态模型协助设计3.4 类图的层次划分类图的层次划分说明:虽然在软件开发的不同阶段都使用类图,但这些类图描述了说明:虽然在软件开发的不同阶段都使用类图,但这些类图描述了 不同层次的抽象。不同层次的抽象。1 1概念层概念层 概念层类图:最高层次的抽象类图,描述了问题域中的概念,一概念层类图:最高层次的抽象类图,描述了问题域中的概念,一般这些概念和类有自然
44、的联系(即类可以从问题域的概念中得出),般这些概念和类有自然的联系(即类可以从问题域的概念中得出),一个概念模型应独立于实现它的软件和程序设计语言。一个概念模型应独立于实现它的软件和程序设计语言。 说明:概念层类图中的类一般只有一个类名说明:概念层类图中的类一般只有一个类名ClassA在分析阶段,类图是所研究的问题域中的概念;在分析阶段,类图是所研究的问题域中的概念;在设计阶段,类图描述类与类之间的接口;(相当于概要设计)在设计阶段,类图描述类与类之间的接口;(相当于概要设计)在实现阶段,类图描述软件系统中类的实现。(相当于详细设计)在实现阶段,类图描述软件系统中类的实现。(相当于详细设计)2
45、 2说明层说明层 说明层类图:描述软件的接口部分,而不是软件的实现部分。说明层类图:描述软件的接口部分,而不是软件的实现部分。 说明:说明层类图中的类一般有类名、属性名和方法名,但对属说明:说明层类图中的类一般有类名、属性名和方法名,但对属 性名不说明,方法亦不指明其参数和返回值类型。性名不说明,方法亦不指明其参数和返回值类型。 如:如: 3. 3. 实现层实现层 实现层类图:真正考虑类的实现问题,提供了实现细节,它实现层类图:真正考虑类的实现问题,提供了实现细节,它 与软件系统的实现和程序设计语言有关,即从软件的实现角度建与软件系统的实现和程序设计语言有关,即从软件的实现角度建 立类图。立类
46、图。 说明:实现层类图中一般应给出属性和方法的说明。如:说明:实现层类图中一般应给出属性和方法的说明。如:3. 5 对象图对象图 对象图:表示一组对象及它们之间的联系,是参与交互的各个对对象图:表示一组对象及它们之间的联系,是参与交互的各个对 象在交互过程中某一时刻的状态,常用于表示复杂的类象在交互过程中某一时刻的状态,常用于表示复杂的类 图的一个实例。图的一个实例。 其中:其中:1. 1. 对象只有两个分栏:名称和属性对象只有两个分栏:名称和属性 2. 2. 对象名称有以下对象名称有以下2 2种形式:种形式: 完整表示:完整表示:“对象名:类名对象名:类名” 匿名对象表示:匿名对象表示:“
47、“ :类名:类名” ” :ClassAObjectN :ClassN 3. 3. 属性名包含当前值属性名包含当前值 ObjectX:ClassXname = LiMing 4. 4. 关联关系没有多重性,所有的链接都是一对一的关联关系没有多重性,所有的链接都是一对一的 说明:对象图的使用相当有限,主要用于表达数据结构的示例,说明:对象图的使用相当有限,主要用于表达数据结构的示例, 以及了解系统在某个特定时刻的具体情况等。以及了解系统在某个特定时刻的具体情况等。例:例: 关联对象:关联对象:ClassAClassB: ClassA: ClassB(2): ClassB(1): ClassB(n) 注注: :可在协作图中建立对象图可在协作图中建立对象图1 1:n