3、泛化关系
泛化关系和类找那个的泛化概念是一样的,于用例继承父用例的行为和含义,还可以增加或覆盖父用例的行为,子用例可以出现在任何父用例出现的位置(父和子均有具体的实例) 也可以重载它,用例之间的泛化关系表示意图参见图10.3
通过包含、扩展和泛化关系,描述的棋牌馆等管理系统,分析示例图参见10.4
4、使用关系
像一个函数调用,以这种方式被使用的用例称为抽象用例,因为它不能单独存在而必须被其他使用用例使用。图10.5用例之间的关系示意图
10.3建立对象模型
对象模型是面向对象建模中最关键的一个模型,它的作用是描述系统的静态结构、包括构成系统的类和对象,它们的属性和操作及它们之间的关系,对象模型通常通过类图、类的实例(即对象) 图和它们之间的关系(关联、继承、聚集和组合等)表示
大型系统的对象模型通常由如图10.6所示、5个层次组成
主题是指导读者理解大型复杂模型的一种机制,即通过划分主题把一个大型、复杂的对象模型分解成几个不同的概念范畴
5个层次对应建立对象模型的5项活动,找出类与对象、识别结构、识别主题、定义属性、定义服务、在概念上面向对象分析大体上按照下列顺序进行:寻找类与对象识别结构识别主题定义属性建立动态模型建立功能模型定义服务
对象模型的上述5项活动完全没必要顺序完成,也不需要彻底完成一项工作以后在开始另外一项工作。
10.3.1确定类和对象
面向对象分析的第一个层次主要是识别类和对象,类和对象是对与应用有关的概念的抽象,实体操作中首先找出候选类和对象,然后进行筛选,通过区分实体类、边界类和控制类来检查对象模型的完整性,候选的类和对象包括:可感知的物理实体,如汽车、飞机等;人或组织的角色,如教科办、学生等;应该记忆的事件:如球赛、演出等。
两个或多个事件的相互作用通常具有交易或接触性质,如教学、供应等更简单直接的一种非正式分析方法是将需求描述中的名词作为类和对象的候选者,然后通过筛选去掉不不确定或无关的类和对象。
筛选过程主要依据下列标准来删除不正确或不必须的类和对象
①冗余:如果两个类表达同样的信息,则应该合并这两个对象的类或说明
②无关:系统指需要包含与本系统密切相关的类或对象
③笼统:需求分析中除了明确的名词之外,还包含了一些笼统、泛指的名词,分析系统需求,确定更明确描述的前提下,应该把笼统的名词类或对象去掉。
④属性:某个类只有一个属性,可以考虑将它们作为另一个类的属性
⑤操作:应该根据本系统的要求,正确决定把它们作为类还是类中的操作
⑥实现:分析阶段不应该过早考虑系统的实现问题,应该去掉只和实现有关的候选类和对象
10.3.2确定关联
关联是指两个或多个对象之间的相互依赖,相互作用的系统分析,确定对象类之间的关系。
大多数关联可以通过直接 提取需求陈述中的动词或动词词组得到,还需要进一步分析需求分析中隐含的关联。
标识关联的启发式规则有:
①从需求描述中查找动词或动词短语,识别动作的主体和客体,从角色寻找关联
②准确地命名关联和角色
③尽量使用常用的修饰词标识名字空间和关键属性
④应删除派生关联,即可由其他关联导出的关联
⑤在组关联被确定下来之前,先不必考虑实例之间的重性。
⑥为适用于不同的关联,必要时要分解以前确定的类
⑦分析过程中及时补上遗漏的关联
类和对象之间的关联关系可以分为继承,实现、依赖、关联、聚集和组合关系
10.3.3确定属性
属性是对前面已识别的类和对象做进一步的说明,属性通常用名词词组表示,属性的确定既与问题域有关,也与目标系统的任务有关。类的属性所描述的是状态信息,每个实例(对象)的属性值表达该实例(对象)的状态值
标识属性的方法和策略:只考虑与具体应用直接相关的属性,不考虑那些超出所有解决的问题范围的属性,先找出最重要的属性,在逐渐把其余属性增添进去。
属性的标识也有一些启发式规则:每个对象至少需要包含一个编号属性,如_ID;系统的所有存储数据必须定义为属性,导出属性应该略去;描述对象的外部不可见状态的分析熟悉,应该从分析模型中删除掉,最后考虑取值范围,极限值、缺省值、建立和存取权限,精确度是否会受到其他属性值得影响等。
10.3.4建立对象类图
在软件开发不同阶段都会用到类图,但这些类图表示了不同层次的抽象,在分析阶段:类图主要研究领域概念,在设计极端、类图主要描述类与类之间的接口关系,在实现阶段类图描述软件系统中类的实现,因此在不同阶段类图由不同的层次。
3个不同层次的类图描述参见图10.8
建立类图的原则如下:
①简化的原则:在项目点初始阶段不要使用所有完备的符号,主要能够有效表达语义就可以。
②分层理解的原则:项目开发的不同阶段,使用不同层次的类图进行表达,便于理解,不要一开始就陷入实现的细节中去。
③关注关键点原则:不要试图为每个事物都画完善的模型,应该把精力放在关键点上。
类图建模:就是要表达类与类之间的关系,以便于人们理解系统的静态逻辑,通常需要对两个方面建模:对简单协作建模和对数据库模式建模,图10.9对象图实例
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)