(1)对系统的词汇建模
为了对系统的词汇建模,需做如下工作:
- 识别用户或实现者用于描述问题或者描述解决方案的那些事物。用CRC卡和基于用况分析的技术帮助用户发现这些抽象。
- 对于每个抽象,识别一个职责集。确保能清楚地定义每个类,而且这些职责能在所有的类之间很好的均衡。
![](https://i-blog.csdnimg.cn/blog_migrate/aea82575360a4c7283385c70b757d619.png)
(2)对系统中的职责分布建模
一旦开始大量的类建模,就要保证抽象提供了均衡的职责集。
这意味着不能让任何类过大或过小,每一个类应该做好一件事。
若抽象出来的类过大,将会发现模型难以变化而很不容易复用;
若抽象出来的类过小,则最终抽象会过多,难以合理的管理和理解。
可以使用UML来帮助可视化和详述这种职责的均衡。
对系统中的职责分布建模,要做如下工作:
- 识别一组为了完成某些行为而紧密地协同工作的类。
- 对上述的每一个类识别出一组职责。
- 从整体上观察这组类,把职责过多的类分成较小的抽象,把职责过于琐碎的小类合成较大的类,重新分配职责以使每一个抽象合理的存在。
- 考虑这些类的相互协作方式,相应地重新分配它们的职责,使协作中没有哪个类的职责过多或过少。
![](https://i-blog.csdnimg.cn/blog_migrate/00063f61196f7786da09bdc80ad16f2b.png)
(3)对非软件事物建模
有时,要建模的事物在软件中并无类似物。
为了对非软件事物建模,要做如下工作:
- 对抽象为类的事物建模
- 如果要将这些非软件事物与UML已定义的构造块相区别,就要创建一个新的构造块,用衍型详述这些新语义,并给出不同的可视化提示。
- 如果建模的事物是某种本身包含软件的硬件,考虑把它建模为一个结点,以便能进一步扩充它的结构。
![](https://i-blog.csdnimg.cn/blog_migrate/b9594f2cd03588e0ff1965b83383430e.png)
(4)对简单类型建模,要做如下工作:
- 对抽象为类型或枚举的事物建模,这可以用带有适当衍型的类表示符来表示。
- 若需要详述与该类型相联系的值域,可以使用约束。
![](https://i-blog.csdnimg.cn/blog_migrate/f68cfa4a2617d7f781190ec0adb363b9.png)
提示和技巧
在用 UML 对类建模时要记住:对最终用户或实现者来说,各个类都应该映射到某个有形的或者概念性的抽象。
一个结构良好的类,应符合如下条件:
- 为取自问题域或者解域的词汇中的事物提供明确的抽象。
- 嵌入一个小的、明确定义的职责集,并且能很好的实现它们。
- 把抽象的规约和它的实现清楚的分开。
- 简单而且可理解,并且具有可适应性和可扩展性。
当用UML 绘制一个类时,要遵循如下的策略:
- 仅显示在该类的语境中对于理解抽象较为重要的类的特征。
- 按属性和操作的种类进行分组,以更好的组织其长列表。
- 把相关的类显示在同一个类图中。