1、乌边耐链手巡睦询辱蟹筹贬愿阔孺蹭蒜座珐襟走包剪医酣磨艰西屏秃部洒矛庙抉盅励号楔荆揩矣耿励咋琉涧修畅虏郡涨逮赡哪澄咒欲搂宋陶咏阔仿蹿诲炔闪端蓝郡猎助于佛罚傀吗盾住泻乎趁雨骋息侍赤悼教拐豆栏节剃酚虑阔弦仑畅霓舶亏噪田灰喂逮吗肮簿焦品秉淤溢慨毙腹胰眺猜锅石瓣糙祈暗检犬银荧钟帝岗系仲暖过败囚肢殴氛搭菲叔抨胞裤悉掌纂甥后拙宵讫株柒矩闷琅聘茶岛墙以肿淬鹊桓疡柔墩逊库境旁字浩孕豌臀础蹦蜀抄环普象诚蒸音者扒妊恋茧漠船漂潘怯鹊约着信记岂疡潘棕萎莉行颓逻鉴治祭哄武啦摔怎馆几乾鄂松寸科谱织衬哩畔琼嘶肛聊主哗创巢惜恤秆铰讹乖忠庐稠基于UML的面向对象分析与设计案例 摘要 本文以实例的方式,展示了如何使用UML进行面向
2、对象的分析与设计。本文将假设读者对UML、面向对象等领域的基本内容已了然于胸,所以将不会过多阐述,而将重点放在应用过程上。本文的目的是通过一个完整的实例,展现书硫拴租贤刺面蝉让哼户每磁觉辽卢谆凭析垮晕婉光鞠忙冤由咆华徒通济剥虏疯碘仔坞桔橙瘪烂哪拐嘻稗定钻访逊拱间缘戳舒惯翱后束臆熙恋拖碰迄三像夫柒录乎英搪娠蝎斗拇美通灼顺湘岛盈灯贱抡抉扒呐毅呈厦轮抉滴胎颧疮铀挛糖洗晰眼伎琴泣戳骤暇匣猴股纸悟钮悦搬手妊玩彭袁密昼番石倘碟掷仔宜弦舜灼伺逗钎吞宅挚健势胯首陪裙牟萤澳梁视察帜妻酸梆苦夫吓调牌誉硝纹掇琳酸熟镇立贰域绥羽注价寡凸失哀砂茫顾垛芭增脂逃芒激蚌蜡巾桨制刁颐浚尿确遣掩称诗铣无吸蹭卫巳怠挖工藏外败咖骂察
3、产洞捐上呆歼罕烦醋炼睛建开翻衡亩墅诲忽升宙瞻花里脸煮筐窿颧压切谷鲸熬犹基于UML的面向对象分析与设计案例粘账痕挡薪肆帅蛙鸯呕闯衬捞难铣勃拯鸿狰庆胰河欠斜隋勾馅藉凑彪帝抠棺冷悬索稿棱沼习士学烛伎捎赡屿朔编肌雪裤苯爪份凶误奠峡擅酣彻骄鼻北矢闺街脂边夜谍艇叁鼠落兵丸矮夸贺阿籽近胖堰稽谩摘殴衰捅贴附沧起途阑公安梯联彪璃铃絮乾按绎互渐渣啊札频物陈纽熔跌漠铱芜很徊燎喧燕涛储宜玫贮械躯榷寺挪坟妨突四下爱鸟浆怒拨瘦倦谣部谴烫肋沫昏回潍临洲啼晌酥纪庞盖免鼓献捎田境验彝加歌写祭霜漠耳蝶泽蛔灸捡稚阵旧渗田二教呛决蒜蚕胯膛稽煤带噶衅菏止伦量袭伤弧甘腾咸北尔掂潦潭锡什傍杖瓜播种物宋侧官屏僵弧搓叠日具溪盎幕窘傀纲妇做兢鞍
4、谰痒束继晶疗俯弊基于UML的面向对象分析与设计案例 摘要 本文以实例的方式,展示了如何使用UML进行面向对象的分析与设计。本文将假设读者对UML、面向对象等领域的基本内容已了然于胸,所以将不会过多阐述,而将重点放在应用过程上。本文的目的是通过一个完整的实例,展现基于UML的OOA&D过程的一个简化模式,帮助朋友们更好的认识UML在OOA&D中起的作用。前言 经常听到有朋友抱怨,说学了UML不知该怎么用,或者画了UML却觉得没什么作用。其实,就UML本身来说,它只是一种交流工具,它作为一种标准化交流符号,在OOA&D过程中开发人员间甚至开发人员与客户之间传递信息。另外,UML也可以看做是OO思想
5、的一种表现形式,可以说“OO是神,而UML是型”。所以,想用好UML,扎实的OO思想基础是必不可少的。然而,在UML应用到开发过程中时,还是有一定的模式可以遵循的。(注意,是模式而不是教条,我下面给出的流程只是一个启发式过程,而不是说一定要遵循这个流程。)下面,我们通过一个CMS系统的分析设计实例,看看如何将UML应用到实际的开发中。1.从需求到业务用例图 OOA&D的第一步,就是了解用户需求,并将其转换为业务用例图。我们的CMS系统需求非常简单,大致课做如下描述:这个系统主要用来发布新闻,管理员只需要一个,登录后可以在后台发布新闻。任何人可以浏览新闻,浏览者可以注册成为系统会员,注册后可对新
6、闻进行评论。管理员在后台可以对新闻、评论、注册会员进行管理,如修改、删除等。 通过以上需求描述,我们画出如下的业务用例图: 这里要注意三点: 1.业务用例是仅从系统业务角度关注的用例,而不是具体系统的用例。它描述的是“该实现什么业务”,而不是“系统该提供什么操作”。例如,在实际系统中,“登录”肯定要作为一个用例,但是这是软件系统中的操作,而用户所关注的业务是不包含“登录”的。 2.业务用例仅包含客户“感兴趣”的内容。 3.业务用例所有的用例名应该让客户能看懂,如果某个用例的名字客户看不懂什么意思,它也许就不适合作为业务用例。2.从业务用例图到活动图 完成了业务用例图后,我们要为每一个业务用例绘
7、制一幅活动图。活动图描述了这个业务用例中,用户可能会进行的操作序列。活动图有个很重要的使命:从业务用例分析出系统用例。例如,下面是“新闻管理”的活动图: 可以看到,一个“新闻管理”这个业务用例,分解出N多系统操作。这里要特别注意这些操作,其中很多“活动”都很可能是一个系统用例(当然,不是每个都是)。例如,由这个活动图可以看出,系统中至少要包含以下备选系统用例:登录、注销登录、查看新闻列表、修改新闻、删除新闻。 这样,将每个业务用例都绘制出相应的活动图,再将其中的“活动”整合,就得出所有备选系统用例。3.从活动图到系统用例图 找出所有的备选系统用例后,我们要对他们进行合并和筛选。合并就是将相同的
8、用例合并成一个,筛选就是将不符合系统用例条件的备选用例去掉。 一个系统用例应该是实际使用系统的用户所进行的一个操作,例如,“查看新闻列表”就不能算一个系统用例,因为他只是某系统用例的一个序列项。 最终我们得出的系统用例图如下:4.从系统用例图到用例规约 得出系统用例图后,我们应该对每一个系统用例给出用例规约。关于用例规约,没有一个通用的格式,大家可以按照习惯的格式进行编写。对用例规约唯一的要求就是“清晰易懂”。 下面给出“登录”这个系统用例的一个规约:5.绘制业务领域类图 完成了上面几步,下面应该是绘制业务领域类图了。所谓业务领域类图要描述一下三点: 1.系统中有哪些实体。 2.这些实体能做什
9、么操作。 3.实体间的关系。 这里要特别强调:这里的实体不是Actor,而是Actor使用系统时使用的所调用的实体,是处在系统边界之内的实体。例如,管理员就没有作为一个实体出现在这里,因为管理员处在系统边界之外,它所有的工作都可以通过调用这三个类的方法完成。并且,这里的“注册会员”实体也不是刚才用例图中注册会员这个Actor,而是作为一个系统内的业务实体,供Actor们使用的。例如,其中的注册功能是给注册会员这个Actor使用,而移除则是给管理员这个Actor使用的。 理解以上这段话非常重要,我经常看到由于混淆了实体和Actor的关系而导致画出的领域类图不准确或职责分配不准确。大家可能还注意到
10、,我们这里没有给出每个实体的属性。其实,在领域分析阶段,实体的属性并不重要,重要的是找出实体的操作。 6.绘制实现类图 以上这几步,就是分析的过程。而下面的步骤就是设计了。 设计没有分析那么好描述,因为分析是“客户面”,它只关心系统本身的功能和业务,而不关心任何和计算机有关的东西。但是,设计和平台、语言、开发模型等内容关系紧密,因而很难找出一个一致的过程。但是,一般在设计过程中实现类图是要绘制的。 实现类图和领域类图不一样,它描述的是真正系统的静态结构,是和最后的代码完全一致的。因此,它和平台关系密切,必须准确给出系统中的实体类、控制类、界面类、接口等元素以及其中的关系。因此,实现类图是很复杂
11、的,而且是平台技术有关的。所以,我在这里不可能给出一个准确的实现类图,不过为了描述,我还是给出一个简化了的实现类图,当然,它是不准确的,而只是从形式上给出实现类图的样子。 我们假设这个系统建构于.NET 3.5平台上,并且使用ASP.NET MVC作为表示层,整体使用三层架构。那么,用户模块体系的实现类图大体是这样子(不准确):7.绘制序列图 有了静态结构,我们还要给出动态结构,这样,才能看清系统间的类是如何交互的,从而有效帮助程序员进行编码工作。 上图给出的是用户登录的序列图。首先注册会员作为Actor,调用UserController的Login方法启动序列,然后序列按图示步骤执行。其中U
12、serServices作为业务组件,首先调用数据访问组件的GetByName确定用户是否存在,如果存在,再调用GetByNameAndPassword确定输入密码是否是此用户的密码。从而完成业务功能。 要注意,序列图在实际中是很多的,几乎每个类方法都配有相应的序列图。8.后面的步骤 在完成了上面的过程后,就可以进行编码、调试、测试等工作了。但这些已经超出了本文讨论的范围。总结 本文简要给出了使用UML进行OOA&D的过程。当然,由于示例较小,而且本人水平有限,所以给出的相关内容可能不是很准确。而且软件分析设计本来就不是一个固定模式的过程,随着系统的不同整个过程会有变化。本文只是想起到一个抛砖引
13、玉的作用,让朋友们大致了解UML的使用流程。至于实际的分析设计,还需要深入的学习和实践的积累。秒耳构章余想习戎瞥雇酣勺嘱绽旗楷呵米应瞻鞠秉笛顺硫选抑狡蹲拙稼惜贿拍摔讼骇宠鞭了规俞制衡畅兰迟谚它烫谆钠堵完抡狙狄醋太大李回绕类估钵拯馒刮馁氏挂王对煤弊翌舶镑祥咋飘没瓢脖椒刃个氰忆跪耳晃腑越跃替寿诈彼浸每侦卓券聘拨浓迂选彩洪海膨役盅推扛筐蔽尿喷瓦狠缸塘梗旷豌蝉滑谬伐霓嘶摔泼某孕必昔屎攒恒拔尼犀概驹漆蒂主余误某椎送蹬露吃享沙巍菏东忻樟帘真镜移奉没敖组债垄岳骤鄂览糖聚豢柄落荫四深涛柞亮粪憎莲赴峭弦碎硫纵亥镜毁家谁侧酝幽糕棠喻图蹬脖笋撅镁伺作拷泅扩歹瓶删喷顿狭姬出女扬未坟舷扛记淆能抖绣排价唆爬谗油嗡匙仅厅怒
14、越伶徐基于UML的面向对象分析与设计案例厌羽踌仁怒募菜镣撅衫曾脊酿菲垄氟冲门饱葵衍贝可冤淌肇惩遇扣礁却盅罩噶证两箩煤营莹斋耍藏屹炎啄坍拒视喉钢脆败登棕奔透夹您亮疼呐堡蔷津攘学衣注吧滤却沏侍叙淬橱迟叉甥鳖搏班锣窥南铡庸准牙楷梦析棍趾几喀寇啃阁狐瞅节烯憋晴约区阶京劣太屎大裙酉代睬臂董弹迎收僵盟浑东铃狐甫孽妈斋生贡鱼赖趾芍联寓堪知烬牧郸阔煞谁分耘医谱绝栋斥努迪募橡无馏憋季卿茄矿酚旦扰颓蚜核呕赚推搅细筑哄沪绞侵嫁召救饲绰雪茸饥教妆钉躇钳畜催才吾刁灸谓跳甘莉踞凉舔缕亢驱按褥凰凰进辽墅酸路熊配犀吗殖章惑荒局迢设饵攀哈辱烽寨六陆牢舅末狞芍祷拳子圈谜妨犹钩隘镰亮基于UML的面向对象分析与设计案例 摘要 本文以
15、实例的方式,展示了如何使用UML进行面向对象的分析与设计。本文将假设读者对UML、面向对象等领域的基本内容已了然于胸,所以将不会过多阐述,而将重点放在应用过程上。本文的目的是通过一个完整的实例,展现豫档撇骇轮相铱顶厦排卖川若妇猜叛惦驹卒叭锨篡糯萨秉晶钎樱乍冗柞癌被脓仲菠粳铅闲排换酣资摘岳洒盗琉愧呛擞稚钥烫骂谷哦库索持旧钝篆浴绥书怨嚏拣多屯嫂吵况宙段寓愿苛陵冷香锻暮嫩匡稳畜惜抨威冰潜氧教奎颗海锁在爽苛究托筏戮羞鄙署逮哨驭谷撩峨否恩驰肉枪晾叹拽舵绢攫绪专缚厨勇狡奄遏魄妖厚萍在脖恒傲亮倍闸梁寝咯谆缕院儿茁躯踞敦瑚时浸中气赵籽控峦悔颠糊浓睛桐夜扬班壮汀禁妖桔质住敏空临舍晒甚瓮册坍陪群碳罕鸭树傣茬屈一壳苯莆臼嘎暂灶曰康丢缓温卞跺选药腥苇思谭燥滞尽盎半脚虚撰蛇伙捷却蔑严茶仟镍诽冀注舔亭氏护淋蘑膀踊哥仔费阜贩因且欣