- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
通过这三个简单版类,可使类图更为精确并且容易理解。因为版类表明了类的意图和责任,并且在图中立即可见。该类更详细的讨论可以在它的文档和责任性质中访问到。而且,类之间的关系也容易理解,例如,如果一个边界类与一个实体类有关联,则通常实体内的信息将通过该边界类型显示和操作。 用户可以为类、以及特定问题领域的公用类角色定义版类,其中某个特殊类型的类有它们自己的图标和语义。例如,在金融领域,表达一个有价格的项的类,它的版类是Assert;如果一个类的实例的价格计算受到另一个类实例的价格影响,就用版类化的相关Affects例如股票的价格受到底层股票市场价格的影响。使用版类的机构将决定版类的语义的形式化程度和扩展程度。但是,版类的意思必须明确(如图7-22). 5.9 版类对操作的应用 构造子是一个操作,当创建对象时调用。它可以有参数,可以明确调用,也可以有名字。但通常它的名字与类的名字一样(如C++, JAVA等要求这样)或简单地只是名字”create(…)”.例如,发票类可以有一个构造子叫做发票,参数时规格和数量。明确地构造子调用是 invoice (“A dell computer “, 2000$) 解构子是一个操作,当对象不再使用或被注销时隐含调用地。所有面向对象地程序设计语言都只持构造子和解构子。 查询操作不影响对象的状态,典型的查询操作是读取对象的属性。构造子和解构子以及查询都是版类化的操作,如图7-23所示。 5.10 版类对活动类的应用 有两种版类应用于活动类:过程和线程。过程是一种版类化的活动类,表示一个重控制流;线程是一种版类化的活动类,代表一个轻的控制流。这两种版类用来表明活动类是如何实现并映射到底层的操作系统中的。 5.11 自定义版类 在用户自定义的加标签值或约束中,都在元素中加入了值或语义,此时定义了一种新的元素类型,尽管它是以原有元素为基础。版类也有自己的视图元素,它可以有一个图标,在图中代表版类元素。 通常,当人们在特定的方法或特定的应用领域中使用UML,会使用版类。某些概念属于方法或领域所特有、而标准UML又不支持的,用户就可以自定义。在定义版类时,需要做以下工作: 1. 描述自定义版类的基础时哪个元素 2. 对该元素的语义影响 3. 给出一个或多个使用该版类的例子 SemaphoreTimeGUI就是自定义版类。时间版类应用于关联,指定有一个时间相关性。GUI版类是边界版类的一个专有化。它与边界类有相同的功能和意图,但只与图形用户接口有关(边界类还涉及与其它与用户或系统通信的方式)。因此GUI类必须是图形用户接口的组成部分,例如,一个窗口或一个消息框。图7-24就是一个例子。 六: 小结 所有的模型语言都有它的限制。如果语言太通用,虽然它的表达能力很强,但却不实用。在使用起来不方便;如果语言太专有化,那么它的表达能力就不够强。C++可以看成专有化为程序设计用的建模语言,但它的表达能力却不够强,无法用于商业建模。因此UML的定义由一组数量有限的通用的元素再加上扩展机制组成。 UML有三种扩展机制:加标签值,约束和版类。用这些机制定义了一些UML的标准扩展,在其上还可以加上新的扩展(如用户自定义的扩展)。通常加上扩展都是为了使UML适应某种方法、某个机构或某个特定的应用领域。 扩展机制以元素为起点。在描述UML的元模型中,“元素”是UML所有组成成份的抽象基类,其上可加上多种机制;它可以被专有化为模型元素(元素表示的抽象)、视图元素(用来显示该元素的符号)、系统和模型。 加标签值这种扩展机制是在模型和它们的元素上加上更多的信息,这些信息可以给人使用,也可以由机器(如代码生成器和CASE工具)使用。 约束是用来限制UML元素的语义的。约束不能给已有的UML元素增加语义,它只能限制元素的语义。 版类是用来把UML元素的语义专有化。用它可以更精确地定义和建模。尽管版类可以取代加标签值和约束,但区分这三种扩展集群之仍然是非常实用的。 4.1 对通用化的约束 完整、不相交、不完整和覆盖是四种应用于通用化的约束,它们只能应用于子类。这些约束都是语义的,显示在共享的空矩形内的大括号里,用逗号隔开(如果在该通用化中有几条路径同一空矩形)。如果没有共享,则用一条虚线通过所有继承线,并在虚线的旁边显示约束(如下图) 覆盖继承是指在继承关系中,任何进一步继承的子类可以继承一个以上的子类。换言之,在继承树上的同一个超类,可以有多继承,如图7-10所示。 不相交继承是默认的继承方式,与覆盖继承相反。此时,不允许从同一超类继承而来的子类专有化到相同的子类。 完整通用化约束中指定了一个继承关系中的所有子类,然后就不允许增加新的子类,不完整通用化约束与此相反,以后可以
您可能关注的文档
最近下载
- 工商业储能项目商业计划书.docx
- 《主成分分析PCA》课件.ppt VIP
- 2024年秋季学期新外研版英语三年级上册课件 Unit 5 课时3 Fuel up.pptx
- HG∕T 2680-2017_工业硫酸镁 最新标准规范.pdf VIP
- 汽车维修中级工考证期末试卷.docx VIP
- 〖初中地理〗中国的工业课件-2025-2026学年八年级地理上学期(湘教版2024).pptx VIP
- 品牌授权使用合同.docx VIP
- 马克•温斯坦:高胜算交易者.pdf VIP
- 跨国公司海外项目当地员工安全培训与保障制度.pptx VIP
- 河南师范大学 340农业知识综合二 2014-2019(缺2016)年考研专业课真题.pdf VIP
原创力文档


文档评论(0)