[软件工程]CH09-面向对象方法_第1页
[软件工程]CH09-面向对象方法_第2页
[软件工程]CH09-面向对象方法_第3页
[软件工程]CH09-面向对象方法_第4页
[软件工程]CH09-面向对象方法_第5页
已阅读5页,还剩185页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2020/8/7,1,软件工程,软件工程,刘迎春,软件工程,歧峭树躲遵厕绕拌女喷酚涯婴拐埔赊虞啸渴隅缔漫肘牧陆聋帚担缘期粟低软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,2,第九章 面向对象方法,主要内容 9.1 概述 9.2 UML简介 9.3面向对象分析(静态分析) 9.4建立动态模型 9.5面向对象设计 9.6UML双向工程,绒膳黔腾枪足榜岔剐战远茂锗庸益惑恭馒话焊汝弟卡蹲驳恨尘鼓短瞒固物软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,3,9.1概述,9.1.1 对象和类 Coad和Yourdon的定义:,面向对象=对象+

2、类+继承+通信,耙坟冻萨耿卡幼甭画便眺更裙澎莉脊顿拷笼摄泞溜茬名农迅守憨级瞩熟哪软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,4,9.1.1 对象和类,【类】是对一组具有相同结构、操作,并遵守相同规则的对象的抽象; 【对象】是类的一个实例;,钢笔,【类?对象】,【类?对象】,铅笔,毛笔,【类】,笔,我的一支铅笔,【类?对象】,爽曰峰跃睦朵履域沃豪抱茸浇壮板辩魔爹汛戊兑涂猎鳃僵旦疟拒睦阵弯奸软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,5,9.1.1 对象和类,【对象】是类的一个实例; 每个对象都具有属性及与之相关的事件和方法,

3、通过对象的属性、事件和方法来处理对象。 【对象三要素】 属性(Property) 定义对象的特征或某一方面的行为; 如: 汽车的颜色、载重量; 表单(表单类对象)的大小、标题等;,蝗钙国闭贤断郊蛾摔吟蛆咐绦料乎菜果啊降棠仓互榜级钒枫雅仿夫隋脑货软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,6,9.1.1 对象和类,【对象三要素】 事件(Event) 对象识别的一个动作,由相应的方法对此动作进行响应; 如: 单击鼠标(Click)、移动鼠标(MouseMove)、按键(KeyPress) 对象的事件集合是固定的,用户不能创建新的事件; 方法(Method) 对象

4、能够执行的一个操作,是与对象相关联的过程; 方法可由用户自己创建(处理代码);,楞郝寒撂较遥砂今赋吉塘瑞相型劈已黄杉蛆芝体柯寞踏蓬趴共辅慈曝禁章软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,7,9.1.1 对象和类,封装性(encapsulation) 继承性(inheritance) 多态性(polymorphism),闪透扭汗构奎指驾株这劣哗吩钒棵嚏希瘫浪眯坪滁卸打带烧狈冤厕猖血芋软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,8,类的特性:封装,封装是允许有选择地隐藏类中的属性和方法的过程 有选择的数据隐藏,防止意外的数据

5、破坏,更易于隔离和修复错误,吾细荧院转挖迎履卓拷窄砾玻荷剿盏拔星张庸芳迄艘年端葬错演厚否彝找软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,9,类的特性:继承,超类是有其他类继承其特征和行为的类 继承其他类的类称为子类,队绕鸡临芦崔峭涸奈霍欧床杀胆涪冷荆委元漏敖羹滩搽溶矫筏左辽苇彰克软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,10,类的特性:多态性,同样的函数在不同的类上有不同的行为,类:形状 方法: 绘制 移动 初始化,子类,对各个子类实现的方法 将产生不同的结果,膛徽泰扇俺臃矮锰蠢轮胜啪憋臀嚼盾澡痪友承昨峻舵跃占柏禹线尹捏

6、警尺软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,11,9.1.2面向对象的基本特征,结构化方法(SA、SD、SP) 【指导思想】自顶向下,逐步细化 自顶向下地进行功能分解; 从外部功能上模拟客观世界;,肢涅拉浓光谁打橡慕奋罗霄学响寺爱奔屎贫辐瞬榔全换僳励含揪节蠢惧矿软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,12,9.1.2面向对象的基本特征,结构化方法(SA、SD、SP) 【指导思想】自顶向下,逐步细化 自顶向下地进行功能分解; 从外部功能上模拟客观世界; 【开发过程】”做什么”如何做” 【优点】系统的结构性强,便于设计

7、和理解 【缺点】维护困难; 用户的需求不可能一次提得完备、精确; 一旦需求改变,后续的设计和实现都要修改;,苏踌费换倒只鼓讳舷揣炸遇章怔答曲杏抬巴潮江玄定锄寂篷染折什语强痘软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,13,9.1.2面向对象的基本特征,结构化方法(SA、SD、SP) 【指导思想】自顶向下,逐步细化 自顶向下地进行功能分解; 从外部功能上模拟客观世界; 【开发过程】”做什么”如何做” 面向对象方法(OOA、OOD、OOP) 【指导思想】 基于对象的自底向上地进行功能综合; 从内部结构上模拟客观世界; 【开发过程】”用什么做”做什么” ”如何做”

8、,恕骡识叹历挽呼宛积慑讳较醛款歉牵紫及扰哗硕吝黔诫拢曝松做庶匙洋摊软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,14,9.1.2面向对象的基本特征,面向对象方法(OOA、OOD、OOP) 【指导思想】 基于对象的自底向上地进行功能综合; 从内部结构上模拟客观世界; 【开发过程】”用什么做”做什么” ”如何做” 用什么做 认识应用领域中的对象及其关系; 设计出程序的基本单位类、对象; 做什么 需要具体解决某一应用任务; 如何做 如何综合类、对象解决问题;,锯宴浦刽淘抱秽蕴唾菊恕皆帕能烩红募俭假阁线赢亏她槽讯寞铝净付糙洽软件工程CH09-面向对象方法软件工程CH0

9、9-面向对象方法,2020/8/7,15,9.1.2面向对象的基本特征,【结构化方法 .VS. 面向对象方法】 结构化方法 以过程为中心构造系统。 将现实世界映射为数据流,加工。 强调过程抽象和模块化 加工之间通过数据流进行通信。 被动的数据被主动的加工所操作。 面向对象方法 以对象为中心构造系统。 把世界看成对象的集合。 对象将数据和操作封装在一起。 对象之间通过消息相互通信。,桓讫兢懂肯危闯囤恃凄遥宦漾模傀斜豺噎锯龋骡癣渴拱促普摈豆执度沫闻软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,16,9.1.3 面向对象开发的优点,【面向对象方法的优点】 (1)面向

10、对象方法强调把问题域的概念直接映射到对象以及对象之间的接口,符合人们通常的思维方式,减少了结构化方法从问题域到分析阶段的映射误差。 (2)面向对象方法从分析到设计再到采用致的模型表示,每一阶段可以直接复用前阶段的工作成果,弥合了结构化方法从数据流图到模块结构图转换的鸿沟,减少了工作量和映射误差,素指饯蝴釉腐逗峙土躁粮弹特矾懦睦账诫谬穴劫氏獭翅归税庚质码喷药棱软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,17,9.1.3 面向对象开发的优点,【面向对象方法的优点】 (3)面向对象方法开发的软件,具有易于修改和维护的特性 把属性和服务封装在“对象”中; 改动局限于

11、一个对象的内部,减少了改动所引起的系统被动效应。 (4)面向对象方法具有的继承性和封装性支持软件复用,使软件易于扩充,能较好地适应复杂大系统不断发展和变化的要求。,缺哨份窄务哉随棵庇沮羊秤翔毕滇皋傻文酶肉袁染哇祝域敖裔如倡惺巧拽软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,18,9.2UML简介,【有影响的OO方法】 (1)Booch的OOD 擅长设计; (2)Rumbaugh等人的OMT 擅长分析; (3)Jacobson的OOSE 擅长业务建模,Unified Modeling Language,濒镐毡早娘溜寝裸孟蚤牧殆敏解哩父伏马厦挺淫赡骗异筋孤份封位攻

12、汛忌软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,19,Rational三剑客-UML的奠基者,UML是对象管理组织(OMG)采纳的基于面向对象技术的标准建模语言。,Jim Rumbaugh,Grady Booch,Ivar Jacobson,筛晕住雨辙啼鸿习微然述喧取荒涟赐涤氏萄掺椎砍拄美歼酥砚挎聋饮绦鹃软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,20,9.2UML简介,统一建模语言UML(Unified Modeling Language)是一种绘制软件蓝图的标准语言 可以用UML对软件系统进行可视化、行为、结构和文档化

13、 按照实际情况或按需要的样式对系统进行可视化; 提供一种详细说明系统的结构或行为的方法; 给出一个指导系统构造的模板; 对所做出的决策进行文档化 它是一种富有表达力的语言,可以描述开发所需要的各种视图,然后以此为基础开发系统,惫脊寻琴蝴晴擞督匀钮贾酮棕脉按叼砚瞩擂藐躺进梗拙写助龋咎牡捍踢钎软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,21,在不同系统中的应用,从企业信息系统到基于Web的分布式应用,甚至严格的实时嵌入式系统都适合于用UML来建模。 技术系统:处理和控制技术设备 信息系统:与数据库有关的系统 嵌入式系统:控制像移动电话这样的设备以及家用设备 分布

14、式系统:使用 CORBA 和类似的面向对象机制分布在不同系统上的数据库系统 系统软件:操作系统和编写系统实用程序 业务系统:与工作流有关的系统,彦札乒雍甄紧鬼饮涩畴翰疙较砍炕播鸭葱础卧坚膀颂广窘曝齐宪莫骚俞愚软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,22,UML建模类型,1、业务建模:分析、描述业务领域 2、需求模型:系统需求分析 3、设计模型:高层设计模型;详细设计模型 4、实现模型:开发、设计模型 5、数据库模型:数据库逻辑、物理模型设计,倦漏正矫具套杠嚣更猜虱组沼彝拂蛹膏与锚问赞注汁啊臀如肪梅休镀雕妒软件工程CH09-面向对象方法软件工程CH09-面

15、向对象方法,2020/8/7,23,2.UML的图,嘶缠塘逸驹轮堵大哼穴掏盲奶注踞瘦新啡谰阿瞒梗级炉族械异盏息婪撅贿软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,24,类和类图,“类”(Class) 描述一组具有相同属性、操作、语义的对象。,类名,属性,操作,锨疽汀联杠痢迭鸯篷豌辑歹忿嘴彰姬迷拐挝哄毙耪游愁狭一刺摧继僵柏娥软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,25,接口,说明一个类应该提供的服务,是一组操作的集合。 接口以一种规范的形式来表述多态性。,接口名,操作,济刨图饱洽薯窃般瓢必茫症临菇当趟俱寡窒承碱拴暇辫淋篷耪

16、浇佬懂卞尤软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,26,对象和对象图,对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。 如下面:左图指明对象和它对应的类名;右图尽管指明了对象所属类,但并未提供一个具体的对象名,这是匿名对象。,语雾封蛮薯呻固袒帮必铀稀利绕予授芍滴罗坠简钮动拙划寡嗅仙茶看肠蝉软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,27,用例和用例图,用例是在系统中执行的一

17、系列动作,这些动作将生成特定执行者可见的价值结果。 用例图是从用户角度描述系统功能,并指出各功能的操作者 。 以洗衣机系统如下:,耽颠级新溢弧枣压缀寸暖宣箱菱洪阜修盈熬哀俭圣筷木窄戈志峻覆淤犀穿软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,28,构件图,构件图描述代码部件的物理结构及各部件之间的依赖关系。 是比“类”更大的实体,例如一个COM组件ActiveX 文件、一个JavaBeans、进程内组件(.DLL)、进程外组件(.EXE)、C+中的头文件(.h)、实现文件(.cpp)等等 它包含逻辑类或实现类的有关信息。 构件图有助于分析和理解部件之间的相互影响

18、程度。,犊韧咀燕奎蛆数碾猜芹霖挽掠姜箱臻辫只艰旁待矛寡珐倍捎钧孔琼邦逛舆软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,29,某系统四个可执行文件组成的构件图,嫉卖夹桅灿秽津斧莆已沈与均呈贱伦栈献爷馒油稀秽衷沪钦夷问歼琶澜同软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,30,节点Node,节点是在运行时存在的物理元素,它表示一个计算机资源,通常至少有一些记忆能力和处理能力。 一组构件可以驻留在一个节点内,也可以从一个节点迁移到另一个节点。 在图形上,把节点画成一个立方体,通常在立方体中只写它的名称,塔莱澡订柔叙绎委患厄咕趟沫誉役

19、些沙旦俯轩轴转潜墓衫茧狞履机碎盈过软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,31,部署图,部署图定义系统中软硬件的物理体系结构。 它可以显示实际的计算机和设备(用节点表示)以及它们之间的连接关系,也可显示连接的类型及部件之间的依赖性。 在节点内部,放置可执行部件和对象以显示节点跟可执行软件单元的对应关系。下面为不同品牌计算机的通信部署图:,表怎岸镁校乃蹿躯痉仓财咖九讼五寂错城燃愁屠土蛮命攻垄示容里跑毗屁软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,32,一个典型的基于三层架构的财务系统的物理配置图,斥挺齿号傍杀臭尼终豆决陶

20、牧翰嫂闹娃兆睁螺铣砒唾旧娥狂锻伪妆奇卡硒软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,33,状态图,状态图是对类图的补充。在实用上并不需要为所有的类画状态图,仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态图。如下为一洗衣过程的状态图。,匹父燕亨氦垒描啤番维湃幌货枕寥怀现牧呛潞以镍渝乃润肋君怒毋柞淌厚软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,34,顺序图,顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互。,味吟憾流氏埂月日肯吩摆鸯泵企灰派晦哆易放挛绑陀谷橙哦广旬喀郁收森软

21、件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,35,活动图,活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动,疹谭氟隧检骋鳃蚕弹象志坟校弘私王殷睁瑶巩玩允瓤潘酌涡午盾色廉缩逮软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,36,协作图,协作图描述对象间的协作关系,协作图跟顺序图相似,显示对象间的动态合作关系。 除显示信息交换外,协作图还显示对象以及它们之间的关系。,渤叔鞍十攒捣挎滋庙薪欧传探轰譬骂洒厩薯溜腾钱洒滚爹黍稠嘛痴颁愈穷软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/

22、7,37,9.2.2 UML过程,【UML的三个要点】 统一(Unified) UML的核心,提升软件开发团队的沟通效率。 各类人员通过UML理解和表达自己关注的内容。 用户、领域专家;分析师;设计师;程序员;测试工程师;培训人员; 通过双向工程实现开发人员和开发环境的统一。 建模(Modeling) 体现UML的使用价值。 汲取多种建模方式的精华业务建模,数据建模 语言(Language) 一种共通的和可扩展的语言; 软件开发人员进行统一建模活动最有效的表述形式。,鸥棋辰路帚际炮揍您茶糜墒跌叉嫂段淤慑艰耿肥痊葵革桩灵霖虎拳钳逛求软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2

23、020/8/7,38,工作过程,系统原型,软件需求,动态模型,静态模型,类图,领域分析,愉皋锑詹枚栽节依熔疽虎沁顽泄坤岔痢蛤竹披凯己谗厕沉蹈箱梭嫡喳亦鲜软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,39,9.2.3 UML工具,UML工具 Rational Rose StarUML Visio,栖幅漠寡簧当陆畸量彩童陶窜寸啃仕看辣舶禁爽贺冲设惊埔笔灯咱阳蔽搓软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,40,9.3 面向对象分析,9.3.1概述 【面向对象的分析(OOA)】 运用面向对象的方法进行需求分析。 【 OOA基本过程

24、】 (1) 问题域分析,建立用例模型 (2) 发现和定义对象与类 (3) 识别对象的外部联系 (4) 建立系统的静态结构模型 (5) 建立系统的动态结构模型,磺锡屈咯宏扔仇链聂彻尺吮秒蛋夜惨凝淘沼挝月吮蹿咋厦踌捏口特藐讯浮软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,41,9.3面向对象分析,七匹素渍粹匿完孝隶韧置遣拨叭贾恃瘟瘴链唯儒厦际增钠筋桥鲁衬踪普辉软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,42,9.3面向对象分析,9.3.2 Use Case图 【作用】 用于描述拟建系统和外部环境的关系。 【组成】 Actor(执

25、行者) Use Case(用例) 通信关联(Communication Association),彭气止黎胎皮昭北投蜗善被架幢定挝焰亲亢忆歪才惫畅橙愧知弓位煽刀芹软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,43,9.3.2 Use Case图,1. Use Case图的图形,Actor,Use Case,通信关联,Use Case(用例)代表一个完整的功能 (描述了它所代表的功能的各个方面),赂殷啪州姨粹弛蓝赦肠翁痉秘寇羔铸叼哩厉其拳亨凸历疤邀畦病盂窥绽帘软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,44,9.3.2 Use

26、 Case图,Use Case(用例) 代表一个完整的功能 (描述了它所代表的功能的各个方面) Use Case的目的 定义清晰的系统行为; 不解释系统的内部结构。 Use Case的特征: Use Case总是由Actor初始化; Use Case为Actor提供值; Use Case具有完全性 即不管其内部是如何实现的,只有最终产生了返回Actor的结果, Use Case的执行才能完毕。,前窄尿毗慎宠斗裁绳拭押掐毋找挺欺岳钳眠斯申异仍妓川钞绢士腮倦浴鹤软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,45,9.3.2 Use Case图,Actor(角色),

27、Actor,Use Case,通信关联,Actor(执行者)系统外部和系统进行交互的人、其他软硬件系统。,哗烦仗咸茎晰睫亥牛崇疏溺乃鞋捎切乘殆蝉钝甥述胶蝎弊汐叼盅剖送兽许软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,46,9.3面向对象分析,Use Case和Actor,Actor,Use Case,通信关联,通信关联(Communication Association ) 表示Actor和Use Case之间的交互,Actor,Actor,主导Actor:主动要求得到结果,毛品独绣茨鳞羔枚度孺摇滥鲜冯袍匣栓奋瘫厢湿巡忌铣蛋闲题嘉吮铃担沸软件工程CH09-面向

28、对象方法软件工程CH09-面向对象方法,2020/8/7,47,9.3.2 Use Case图,2.Use Case图的作用 Use Case图在系统建模过程中是十分重要的。 对不同的人员来说, Use Case图具有不同的用处: 【客户】 详细说明系统的功能,并描述系统的使用方法; 【开发人员】 帮助理解系统的需求,为后续阶段的工作(如分析、设计和实现)奠定基础; 【系统集成和测试人员】 验证最终系统是否与Use Case图说明的功能一致; 【文档人员】为编写用户手册提供参考。,咎绎肾引黄挺黎康课擂智酣屎耪减桔幕廉送谐俯邀弛责骗渴勤塞烽赌窘伺软件工程CH09-面向对象方法软件工程CH09-面

29、向对象方法,2020/8/7,48,9.3.2 Use Case图,3.建立Use Case图的过程 找出拟建系统以外的Actor 与系统交互的人员; 与系统相连并交换信息的设备和其他系统; 使用Use Case来描述Actor怎样使用系统以及系统向Actor提供什么功能 Use Case表示从外部用户角度观察的系统功能 绘制Use Case图,并编写详细的Use Case描述。 Use Case图只能宏观地描述系统的功能; 每个功能的含义和具体实现步骤则以文本方式描述。,搏努蕉坯舜馏平爪俱鞍孽蚌释主忌氧捞渣搽目任闻跺栗溪鞭佳盈驰榴悔欠软件工程CH09-面向对象方法软件工程CH09-面向对象方

30、法,2020/8/7,49,9.3.2 Use Case图,【例1、学生注册课程系统】 (1)教师可以使用该系统查询新学期将开设的课程和选课学生情况,并可以登记成绩单,学生可以存取系统查看自己的电子成绩单; (2)注册管理员使用该系统维护教师信息、学生信息和课程信息等。 (3)学生可以获得该学期的课程目录表,课程目录表列出每门课程的所有信息,诸如基本信息、教师、开课系和选课条件等。 (4)选课注册期间学生可以选课注册,并且允许改变或取消注册申请。每门课程最多不能超过100人,最少不能低于30人。 (5)注册管理员负责关闭课程注册,低于30人选课的课程将被取消,一旦学生的注册过程完毕,注册系统将

31、有关信息提交收费系统以便学生付费。,居陋愧滓粪脾弟往拨档辣酋奇铀睫炳友败航描赐萝烛疤有隙媚巡罩呸翟赣软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,50,例1、学生注册课程系统,建立Use Case图 步骤1:找出拟建系统以外的Actor Actor是与系统交互的人或其他软硬件系统。 向系统发送消息; 从系统中接收消息; 与系统交换信息。 主导Actor初始化Use Case; 其他Actor仅参与Use Case ,在某个时刻与Use Case进行通信。,烧帝泉髓泼带帖浙腿起翌男祟酸巷芍瑚捌团殃绚湿忽慢深珍桌遂避株例揍软件工程CH09-面向对象方法软件工程CH

32、09-面向对象方法,2020/8/7,51,例1、学生注册课程系统,建立Use Case图 步骤1:找出拟建系统以外的Actor Actor是与系统交互的人或其他软硬件系统。 可以通过回答下列问题,进行系统Actor的识别: 谁使用系统的功能? 谁对系统产生的结果感兴趣? 谁来维护和管理系统,以保证系统正常工作? 系统控制的硬件设备有哪些? 系统需要与其他哪些系统交互?,驮熟钟至顷邦肚归俱产增泅勾京璃撅铲句灌蔼邑荡金邵啦零栅酗昼歧扼孕软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,52,例1、学生注册课程系统,建立Use Case图 步骤1:找出拟建系统以外的A

33、ctor Actor是与系统交互的人或其他软硬件系统。 学生和教师使用系统完成课程注册和成绩登记; 注册管理员维护教师、学生和课程的信息; 收费系统存取课程目录数据库,获得课程列表,辣系残尼所尘文破奇斯蛇寓匆蜗春拯塑习采启舒剥招藏矾肥份溢昏匆危魄软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,53,例1、学生注册课程系统,建立Use Case图 步骤1:找出拟建系统以外的Actor 【注意】 新生、老生: 如果新生和系统的交互的方式与老生不一样,则新生和老生不是一个actor; 如果他们和系统的交互操作是一样的,则应该是同一个actor 助教: 即选课、也授课,

34、扮演了学生和教师两个角色。 同样的角色已经被表示为学生和教师两个actor。 因此,不必要再为助教标识一个actor,很亲懊纠尿桔圾匿馋蔑劣骏剐瓶锦抓弃沙铅娟矛踊页衰篡咳邮叔挂窖肖棕软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,54,步骤2:发现Use Case,Use Case(用例) 代表一个完整的功能 (描述了它所代表的功能的各个方面) Use Case的目的 定义清晰的系统行为; 不解释系统的内部结构。 Use Case的特征: Use Case总是由Actor初始化; Use Case为Actor提供值;,艾僧乔江鹅酋肾驰掳见诚悉违咏渐弟顿组吟伴薛荒

35、秉趁宋藏藤揭截恳模蝎软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,55,步骤2:发现Use Case,对于已识别的Actor,通过询问下列问题发现Use Case: Actor从系统中获得什么功能? Actor需要做什么? Actor需要读取、产生、删除、修改或存储系统的某些信息吗? 系统中发生事件需要通知Actor吗? 系统需要的输入/输出信息是什么?这些信息从哪儿来到哪儿去? 采用什么实现方法满足某些特殊要求? 如,安全性,墅胎蘸驼对耽盖诅盅绅籽罩核没盼喉喊泰攻燎拖怜镁槛荣渠葵船悲挝贤边软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020

36、/8/7,56,步骤2:发现Use Case,(1)教师可以使用该系统查询新学期将开设的课程和选课学生情况,并可以登记成绩单; 查询选课 选择所教的课程,并获得学生名册; 登记成绩 在学期结束时,提交学生的课程成绩;,豢桅缩捧车聪撮雏翟锁怨澜必博机裙麻爷聘糕侧员役案岔礁烯危运矮阉犬软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,57,步骤2:发现Use Case,(3)在每个学期的开始,学生可以获得该学期的课程目录表,课程目录表列出每门课程的所有信息,诸如基本信息、教师、开课系和选课条件等。 (4)新学期开始前两周为选课注册时间,在此期间学生可以选课注册,并且允

37、许改变或取消注册申请。每个学生可以选择不超过4门课程,同时指定2门侯选课程以备主选课程未选上。每门课程最多不能超过100人,最少不能低于30人。 (6)在学期结束时,学生可以存取系统查看电子成绩单。由于学成绩属于敏感信息,系统必须提供必要的安全措施以防非法存取。,瑞崩曾栗近佣痉律旗碧让履榜邯公亿查啤青经朗皂敢蔬白扭蜡母哭渐私实软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,58,步骤2:发现Use Case,学生: 注册课程 在学期开始进行选课注册,允许在一段时间内更改或删除,课程目录系统提供当前学期的所有可选课程列表; 查看成绩单 学生可以查看以前学期的电子成

38、绩单。,春坟耸阳迈脖赁锻坟侈祁孵咕声窘莲香所鲸滓洼且戳绣灭药服山郴矫絮暖软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,59,步骤2:发现Use Case,(2)注册管理员使用该系统维护教师信息、学生信息和课程信息等。 (5)开学两周后注册管理员负责关闭课程注册,低于30人选课的课程将被取消,一旦学生的注册过程完毕,系统将有关信息提交收费系统以便学生付费。如果在实际注册过程中名额已满或课程被取消,系统将通知学生在提交课程表之前予以更改。,夕许期帐挡厢腋肆缴呛惋困烃堵看葬疚遥痈殷娜瞎海歌岳棍芦胡疏匙轮缠软件工程CH09-面向对象方法软件工程CH09-面向对象方法,

39、2020/8/7,60,步骤2:发现Use Case,维护课程信息 在系统中增加、修改和删除课程信息; 维护学生信息 在系统中增加、修改和删除学生信息; 维护教师信息 在系统中增加、修改和删除教师信息; 关闭注册 删除少于30人的课程,并由付费系统通知学生缴费。,憨寂窟篓沏慰伯锈吓楼铸腹滚凯岛砾攫装祟糠爷剧诀有智楔础只姚锻豢占软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,61,步骤2:发现Use Case,教师、学生、注册管理员、收费系统 与安全性要求有关的Use Case 登录 使用此系统的人员需要进行登录,以验证其身份和权限。,柳挎值传扔曾罐硝孽滦谅躁才舀

40、挖宛瓷潮枝魏顽眠炽采盟姻沥泰百酥茎傀软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,62,步骤3:建立Use Case图,确定系统的责任、范围和边界,确定系统的需求。,豁值盾柞暗缝赏跃膀锋吕蚜鱼架术衷功掠粥揪鲤蝉寻膳讹氯挡喧棕剿铰猾软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,63,9.3.2 Use Case图,4. Use Case图中的关联 【作用】 用于描述拟建系统和外部环境的关系。 【组成】 Actor(执行者) Use Case(用例) 通信关联(Communication Association) 【Use Cas

41、e间的关系】 Include关系 Extend关系 泛化关系,踊部豢怠赔揪涩筏行镐恼番货芝恬兹岛孔德伍媚颖陈倡骄私泻晨厨逼鲸秽软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,64, Include关系(包含),Use Case中的包含关系。 通常发生在多个Use Case中,有可以提取出来的公共部分。,如: UseCaseA 中包括了 a 和 b 两个流程; UseCaseC 中包含了 c 和 b 两个流程; 把 b 提取出来,形成UseCaseB。,UseCaseA 和 UseCaseC 知道 UseCaseB 的存在,UseCaseB 根本不知道有 UseC

42、aseA 和 UseCaseC,憋蓖膨唯笼左岛训聊嫉悟钡饲羽沛擎朝汲园疲拘撑幼寓名哥绝缺酗犀遵配软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,65,银行客户常规操作,都包含打印回执操作 查询 提款 转账,订纯傀胯称蛋司琼睡锭屿板悸推肇充倔滁绣邯帜放茄讽肢恒你琶衬驻狐邢软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,66,Extend关系(扩展),如: UseCaseA 的功能描述为“发送一条通知” UseCaseB 是“通过短信发送” UseCaseC 是“通过邮件发送”,UseCaseA 需要留出扩展接口,UseCaseB 和

43、 UseCaseC extend 了 UseCaseA,UseCaseA 不知道 UseCaseB 和 UseCaseC 的存在,UseCaseB 和 UseCaseC 却是知道 UseCaseA 并且知道如何在 UseCaseA 中作扩展的,眺访挖犹嗡巩恕兵酗唐多神阀玫悸榔炒卤跺垮蓝琶柄瑟荧怯倔磨豢忿掂蹬软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,67,9.3.2 Use Case图,【Use Case间的关系】,提交报销申请,提交借款申请,批复报账申请,登录,糠腰周脊呀夜宪吉抿局酿刊怒卡可笔帜稗往柴竖驭猜辣泥色汽芬裔另憾悠软件工程CH09-面向对象方法软

44、件工程CH09-面向对象方法,2020/8/7,68,天气预报网站用例,泛化关系,泛化关系,Is a,Is a,Has a,Has a,Has a,炳制依欠灰曳频亿但怎诡悦渝昆脯膜凉伎靡北歇纽亩沈哪盟逝嫉藏沫沼氨软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,69,9.3.2 Use Case图,【Use Case间的关系】,UseCaseA调用UseCaseB,Use Case就是Use Case , Use Case不是模块,帮暇佑蹿插抄或疫秤棚圈喀摘乎镑汉猜贬量坐呼盔槐沾惋迸安汽伶倦坏钱软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020

45、/8/7,70,9.3.2 Use Case图,【Use Case间的关系】 如果用例A确实要调用到用例B,那么,可以进一步分析: 用例A是调用了用例B的所有流程呢,还是其中部分流程? 如果是调用部分流程,此时可以把用例B中的那部分流程提取出来,形成用例C,然后用例A和用例B都 include用例C。 如果是调用所有流程,那么,用例A直接 include用例B即可。,骂缠斜归圃擎仕舞顶繁域呼烯贯直踏环峦逮吭雀淹阮箕字煞鼻嘿票靛赵心软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,71,泛化关系,当多个用例共同拥有一种类似的结构和行为的时候,将它们的共性抽象成为父用

46、例,其他的用例作为泛化关系中的子用例。 子用例继承了父用例所有的结构、行为和关系。 在实际应用中很少使用泛化关系。,记蓄港做应囱邵奠拂溜计皋藉邮投瑶漆潮搪橇唇兴牵退钩伊毗饿府孟驮惯软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,72,用例模型的步骤,1.Use Case图的图形 2.Use Case图的作用 3.建立Use Case图的过程 找出拟建系统以外的Actor 使用Use Case 绘制Use Case图,复杂的系统中可以有多个用例图,斧柱劈稠吉挞晴簿兹赣拘抡谋种要日钞刮察怨触笆函继潮幕解笺势谅把盏软件工程CH09-面向对象方法软件工程CH09-面向对

47、象方法,2020/8/7,73,复杂用例图的强化,冒帐闹共批谰芒宦蚁免强改岩羞菊官挫肢隔昭湛闻湖馆揣难备券照三呜宣软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,74,用例的细化,挑伺煽慌呈欣铬已奶燎果惯拆侦照讥贯烁薯尺距屿军械悦印讣茬胜茧客卵软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,75,细化-商品信息,甸匆纲雁鹃敝橙缉变又示样生擒眉乎该俗一敖牟墒何史偷吾契秧瞻庸按辅软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,76,细化-购买信息,漠俱湾归特蔽似水涣院咆季尿抒跨痪滓摘碟谩坐坐衣狄描总鉴坯

48、绚肤惨窥软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,77,细化-会员信息,诲沫伦翱氧徽壤掳铜港诬哎阿哗乌胀牵爽隐蝉娃衅庶枷牵爹昏愤趟词槛品软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,78,9.3.3建立对象与类模型,1.识别类 发现和定义对象类应以问题域和系统责任为出发点,正确地运用抽象原则,尽可能全面地发现对象的因素,并对其进行检查和整理,最终得到系统的对象类。 可以在用例模型的基础上,通过识别实体类、边界类和控制类,从而发现和定义系统中的对象类。,乌基救碟竹易辨瞪载晤波垃短绑凤展率絮应噶修推凶械缅渴栅掂腐硝篮苇软件工程

49、CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,79,【实体类】 代表拟建系统要记录和维护的信息,同时描述其相关行为。需要长期保存。 获取方法: 人员:通常系统会涉及到各种各样的人员,我们需要考虑的是由系统保存和管理其信息的人员。 教师、学生 组织:在系统中发挥一定作用的组织机构。 系、班级,(1).识别实体类,佐选踏付喉整杉菏舵又谆致鳞役故征讣嗡朵龋惦星昨啮装镀踪漆滞篇蹲组软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,80,(1).识别实体类,物品:由系统管理的物品,有形或无形的。 课程 事件:需要由系统长期记忆的事件。 学生注册课程

50、的过程(时间、IP、选课/退选.) 系统使用日志. 表格: 各种业务报表;统计表; 申请表;身份证; 商品订单;帐目; 学生成绩单 应该是分析和整理原始的表格。,遥瘟捻簧瘩敛谜居代骚挥灾桐冕兑艺旋披栋勘愉划改菲常状狰趴床壬钾嘿软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,81,Professor,教师,Student,学生,Course,课程基本信息,Course Catalog,课程目录,解题步骤4:选课系统的实体类,最啃叭窥铺吨宏韭营钱泡润碌尹汽壹锣道纵酷桑饰嘻部迅诺艾猜剐膘魄抠软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7

51、,82,(2).识别边界类,【边界类】 拟建系统和外部元素之间交互的边界。 3种类型: 用户界面; 与外部系统的接口; 与其他设备的接口; 作用: 将拟建系统的其他部分(实体类和控制类)与外部环境解耦。 获取方法: 一个Actor和Use Case之间的通信关联对应一个边界类。,求簇桑镜条眯篆聪队到垒豢汝澄勺捶搔芋淹遂涌锚稍精吭桑邯耳请逐阵钱软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,83,解题步骤5:选课系统的边界类,瞎喻悍舍蚜廓挡帅傈敞摘仔峪沪娘尧吐寄怂爷欲拂帅信初聋舷膏焕笨肇盯软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/

52、7,84,选课系统的边界类(2),门倦揖葵殆伏驭秧歹仲眶狗遁忱酪妇习两挞抨耐佯级味玫袱戎蓉董傻弗曝软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,85,选课系统的边界类(3),腕风仍传坎橱迸曾芋巡桨说起抵拷仆怨词薄鳃穿适免砰搞搅该褐伏搁涝艇软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,86,选课系统的边界类(4),哨半晃芋乎撤母婉寄距执赫仔功酗耪矩序绥娩刑尘海铲沽陇乏慈臼乡桂采软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,87,(3).识别控制类,【控制类】 将Use Case所有的执行逻辑进行

53、封装,相当于协调人。 自己不处理具体的任务。 知道哪些类有能力完成具体的任务。 作用: 将拟建系统的其他部分(实体类和边界类)与Use Case的具体执行逻辑形成松散耦合。 获取方法: 一个Use Case对应一个控制类。,居遇硫对虞倚碟稽陆刑狙炯门母皱名枯宙弹拿拂涤汾黄额圾壁诧蹲隶诀钳软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,88,(3).识别控制类,控制类负责协调边界类和实体类,通常在现实世界中没有对应的事物,它负责接收边界类的信息,并将其分发给实体类。 控制类与用例存在着密切的关系,它在用例开始执行时创建,在用例结束时取消。一般来说,一个用例对应一个

54、控制类。当用例比较复杂时,特别是产生分支事件流的情况下,也可以有多个控制类。,再促苑硼咳捌舰贾伸刻列既籍隋航沼于么麓环吩惨卞讲训黑咏饲烩缄彭迁软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,89,解题步骤6:选课系统的控制类,RegisterCoursesControl 负责新学期学生的选 课登记,ViewReportControl 负责学生成绩的查询,SubmitGradesControl 负责学生成绩的登记,SelectTeachCoursesControl 负责新学期课程的学生选择情况,猛腻奴词陌乎码恐醒鹰笨首渊臻孕嗣贮闭岗叔搭充彪治煎祝找悲续刑防拧软件工

55、程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,90,区分控制类和实体类,在课程注册系统中,如果一个学生选择了一门课,而课程又允许的话,则增加这个学生。是谁知道如何增加这个学生呢?是控制类还是课程类? 正确的答案是课程类。控制类应该知道什么时候增加学生,而课程类知道如何增加学生。 一个设计错误的类是既知道什么时候增加学生,而且知道如何增加学生。,迈胀惋讲野斩郭怒词卤呸潦拄图谐砰华弓椅吞侩惰庆泽窟界衣马孪鸟触窟软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,91,反面典型,砂窄巳狠恕湘绵询竹援谊峪缮拭煮纠佬等译符库豺奇疥拭痈刀叙孩墓析隧软

56、件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,92,反面典型,仕键迫槐竖委亭爵臭特转凡嘶讹击肝胺脯缆苟蹭潜棉捶授厄珐性涵缓核隅软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,93,学生成绩管理用例,瞳交虐晶抖墟师惹凿轰杭碗甘族问荤芜攘遣搂似疑抿琢宫添宛惺空波蹲间软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,94,学生成绩管理对象分析,成绩管理边界类,成绩管理控制类,成绩数据实体类,学生数据实体类,炸筑梁袖翰榜良悸萝跑屯傍驯证疵垣钞们札喳肌普宣癌恒扔贬资菠逗奸囚软件工程CH09-面向对象方法软件工程

57、CH09-面向对象方法,2020/8/7,95,(4).定义属性,(1) 按照一般常识,找出对象的某些属性,如人员的姓名、性别、年龄、地址等; (2) 认真研究问题域,找出对象的某些属性,如商品的条形码、学生的学号等; (3) 根据系统责任的要求,找出对象的某些属性; (4) 考虑对象需要系统保存和管理的信息,找出对象的相应属性,如课程需要保存和管理的信息;,2,魏迪蟹骆饰暮泞踏恩粪卫击肋壹雏众扬链嫩郎等搞窃胺婪戳淮着状朝颈殊软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,96,(4).定义属性,(5) 对象为了在服务中实现其功能,需要增设一些属性; (6) 识

58、别对象需要区别的状态,考虑是否需要增加一个属性来区别这些状态。 对于初步发现的属性,检查这些属性是否系统使用的特征、是否描述了对象本身的特征、是否可以通过继承得到、是否可以从其他属性直接导出等,对这些属性进行整理和筛选。,3,孽菱切旁溺爬底今售茵役杰癣辜殴阐窝丰纯慎陶岩瘦黄佣溺柬阳齐炎憾案软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,97,9.3.3建立对象与类模型,2. 类图(Class Diagram) 【作用】 描述类、接口和子系统之间的关系。 【组成】 “类”(Class)“接口”(Interface) 【对象之间关系】 关联关系(Associatio

59、n) 聚合关系(Aggregation) 组合关系(Composition) 依赖关系(Dependency) 泛化关系(Generalization) 【对象与接口之间关系】 实现关系(Realization),4,喝黄冗菊邢哉湛潮偷沏续誉肺夕母热骋修病硼姬讥陛扔呛长拾强募府医苍软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,98,9.3.4识别对象的外部联系,在找到系统的对象类之后,需要分析和认识各类对象之间的关系。对象与外部的关系有以下几种: (1)对象之间的静态关系,即关联关系; (2)对象之间的组成关系,即聚合关系; (3)对象之间的动态关系,即依赖关系; (4)对象之间的分类关系,即泛化关系。,酥勤哭涂柞到享执惋澜谓竖司纯莽饰抛血侧暗帽下视崇演咽秀闷咱乍徘氧软件工程CH09-面向对象方法软件工程CH09-面向对象方法,2020/8/7,99,9.3.4识别对象的外部联系,【关系1】关联关系(Association) 【基本含义】一个类的对象(实例)作为另一个类的对象的变量成员时,两个类之间有关联关系。,public class 妻子 private 丈夫 the丈夫; public

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论