从UML建模语言到C#代码 [翻译] vczhgame 2004-02-01 | ||||||||||||||||||||||||||||
<短评> 本站最年青的一篇文章发表了!陈梓瀚(vczhgame)是团队年龄最小的成员,今年刚刚高中二年级侨炊杂蜗房⒓际鹾兔嫦蚨韵蠹际跤凶庞判愕牧煳蚝褪导U馐撬尤胪哦雍蟮牡谝黄胛母澹窈蟾嵩贑STC上贡献给大家更多关于面向对象技术和游戏开发的文章。希望大家给与特别的鼓励与支持!在这里团队成员祝愿vczhgame同学学习进步,考上理想的大学。 计算机科学技术网全体成员贺 前言在这篇文章里,我会告诉大家把UML转变为C#代码的一些方法。 首先,我将会讲述一个与UML有关的案例。现在,我们把重点放在如何把UML转变为C#代码,而不讲述制作UML图表的方法。这就是为什么大家会在一开始就看到处与分析设计阶段的UML图表。 案例描述有个公司想改善他们的信息系统。第一步是分析职工的培训程序,将一些任务自动化。
注:UML in practice, P.Roques, Wiley, 2004 提供案例 主要方法我们将使用下面的UML图表来进行讲解 : 类图 类图用于定义代码框架, 以可以说成是整个类的声明。 在一开始,我们可以近似的说:
大家会注意到navigable角色被实现为实例变量,就像属性一样,但它是却不是一个简单类型,而是一个用户自定义类型。这暗示了一个类的创建。 我将举一个简单的图示说明这些方法。
交互图 交互图说明了类的方法的运作过程,特别是相互关联一些方法的调用次序。 接下来的这个图示说明了消息序号与C#方法实现代码的关系。
在这些例子之后,我将会给出一些具体的真实的例子。 从UML类图到C#框架代码大家来看图C,注意一下“培训申请”类
前面讲过的方法已经住足够把这张图表转换成C#框架代码。我们唯一要紧记得是我们必须添加一条导入语句来保证能够与其它包中的类建立联系(不论是用户自定义的包还是标准基类库)。 等价的C#框架代码在图D上。
如果我们要为一个属性添加读写操作,根据封装类的方法,我们自然要为类添加一个属性,就像下面的代码:
现在让我们看看图E,注意里面的“培训”类。
以前面的例子相比较, 又产生了一些附加的问题: • 元素之间关系的概括 • 多重性:Theme(Topic)的<<1..*>>和Session的<<0..*>> {ordered} 前面的方法已经不适用了。我们已经看到如何用<<1>>(或<<0..1>>)的多重性来实现navigable联系,然而,如何将联系转换为<<*>>的多重性呢? 有个相当简单的原则:通过用一个具有特定属性的类型(如对象引用集合)来取代对单个对象的引用来实现<<*>>多重性。 正确地选择.NET framework提供的集合类型是困难的。虽然用C#创建manager arrays很容易,但这对于一个正确地解决方案来说是不必要的。一般来说,人们更喜欢使用像C#的ArrayList或HashTable这样的集合类型。 • 如果你想记住对象之间的次序,而且想用整数索引取得对象的话,就选择ArrayList; • 如果你想用任意的关键字取得对象的话,就是用HashTable或SortedList。 这里有一些应付各种不同需要的解决方案:
对于Formation类,我们将会使用: • 一个ArrayList来实现对Session的组织 • 一个HashTable来实现对Theme的组织而不是用一个简单的数组。我们使用大纲的名称作为限定词 通过以上的说明,我们可以写出这样的代码:
结束语把UML图表转变成代码是一件必须规范的敏感的工作。所以,对于一些语言来说,转换得到的代码与UML图表之间可能会有一些冲突。代码发生工具能自动进行UML与代码的转换工作,但它同时也会向对象编辑器提供一些不同的选择(例如ArrayList与HashTable)。 |
从UML建模语言到C#代码
最新推荐文章于 2024-04-14 13:16:25 发布