有了解UML图的吗,来指导一下

Waiting4you 2011-03-31 11:35:34
最近在学UML,正尝试着用UML画一些类图。

不过貌似C++里很多东西它表示不了,不知道是不是在下还不完全了解UML。目前遇到下面的几个问题。

1.怎样表示数组?类成员是个数组,函数输入参数是数组(象main函数的argv)
2.怎样表示引用?比如这样的方法: void func( int& arg);
3.怎样表示typedef?

先谢谢楼下,回帖有分
...全文
233 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Waiting4you 2011-04-01
了解,用UML只能弄个大概,做一些概念性的东西,呵呵。
结贴~~
  • 打赏
  • 举报
回复
UML图不是精确的语言的。&引用,typedef这种应该没对应的。
  • 打赏
  • 举报
回复
pathuang68 2011-03-31
[Quote=引用 6 楼 waiting4you 的回复:]

楼上说得不错,可以加深对UML的理解。
我用的UMLStar可以用UML图直接导出.h和.cpp文件。我的类里有成员是数组,我现在知道可以用聚合表示数组元素是类的一个组成部分,以及0..*的关系。但生成的文件根本不管这些,木有数组的说~~
[/Quote]

关于用UML图做正向工程(即从UML图生成code)的问题,这个要慎用,就本人而言,我从来没有用过。reverse engineering偶尔用过几次,也不常用。

请参考:
《UML正日薄西山的13个理由》读后感

这是我在网上读了《UML正日薄西山的13个理由》(一外国人写的)后的感想,其中的观点仅供楼主参考,并欢迎指正。
  • 打赏
  • 举报
回复
Waiting4you 2011-03-31
楼上说得不错,可以加深对UML的理解。
我用的UMLStar可以用UML图直接导出.h和.cpp文件。我的类里有成员是数组,我现在知道可以用聚合表示数组元素是类的一个组成部分,以及0..*的关系。但生成的文件根本不管这些,木有数组的说~~
  • 打赏
  • 举报
回复
pathuang68 2011-03-31
[Quote=引用楼主 waiting4you 的回复:]
最近在学UML,正尝试着用UML画一些类图。

不过貌似C++里很多东西它表示不了,不知道是不是在下还不完全了解UML。目前遇到下面的几个问题。

1.怎样表示数组?类成员是个数组,函数输入参数是数组(象main函数的argv)
2.怎样表示引用?比如这样的方法: void func( int& arg);
3.怎样表示typedef?

先谢谢楼下,回帖有分
[/Quote]

楼主学UML的思路不对,看来是被人误导了。

UML最主要的其实就是3个东西:事物、关系和图。这就是所谓的UML的Building blocks,在这个层面之上,包括building blocks在内,一共也有3个重要的分类,比如包括扩展机制这样的东西。只不过building blocks太重要了,其它两个不太常用,所以很多人把它作为开始点来学习UML的。

事物分了4个小分类,其中最总要的就是结构事物,结构事物中又包括7、8个东东,比如类、主动类...
关系主要就是4个关系:依赖、关联、泛化和实现
图有9个图,比如类图...。这些图中有些事描述静态结构的,比如类图,有些事描述动态行为的,比如顺序图。

首先,你需要把这些UML中的主要元素,包括他们的图形表示都记住了(不管用什么方法,甚至开始需要点死记硬背),了解它们的基本概念和各自的用途,然后用相关的UML工具进行实验。

需要说明的是,UML有一些概念不太好区别,比如class(类)和classifier(类元)很多人就搞不太清楚,如果概念不清楚,看书看起来那是相当费劲的。所以在概念方面,那是绝对不能留下任何理解上的死区。

充分了解了UML后,你就不会提出上面那样的问题了。事实上,除typedef这个在UML没有办法在UML直接表示外,前面两个都不是问题,问题是typedef这样的东西有必要出现在UML里面吗?

很显然,UML不是精确的变成语言,它只是一个建模语言,尽管有很open的扩展机制,也就是说就算typedef这样的,也可以通过自定义的扩展机制来实现,但是,个人认为这是非常没有必要的。

所以,我们不能指望UML能有C++语言里面的很多东西。UML是游离于具体编程语言(C++, Java, C#)之外的、可扩展的建模语言。正像我们不能指望用TCP/IP协议写图形界面一样,万事万物,各有其用,但没有一样事物是万能的。

学习UML最权威的书:
GoF写的《UML 用户指南》,英文版的国内也应该可以买到。

上面那本书比较厚,另外有一本很薄,但写得非常好的书《UML distilled》。
  • 打赏
  • 举报
回复
quwei197874 2011-03-31
uml是用来设计分析的,不必表示这么细,最多在类图中标上函数原形就可以.
  • 打赏
  • 举报
回复
Waiting4you 2011-03-31
按理说应该可以才对,不然UML被吹得这么牛~~
  • 打赏
  • 举报
回复
发帖
工具平台和程序库

2.4w+

社区成员

C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
帖子事件
创建了帖子
2011-03-31 11:35
社区公告
暂无公告