《第2章面对象方法学导论》由会员分享,可在线阅读,更多相关《第2章面对象方法学导论(64页珍藏版)》请在金锄头文库上搜索。
1、纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论第2章 面向对象方法学引论绒龋上轨继索少销境简啥交斗谢桐帆讲崎崔赎廉撬皋健谴面罗阅伎仪所捕第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论本章概要 传统的软件工程方法学曾经给软件产业带来巨大进步,部分传统的软件工程方法学曾经给软件产业带来巨大进步,部分地缓解了软件危机,使用这种方法学开发的许多中、小规模软件地缓解了软件危机,使用这种方法学开发的许多中、小规模软件项目都获得了成功。但是,
2、人们也注意到当把这种方法学应用于项目都获得了成功。但是,人们也注意到当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功。大型软件产品的开发时,似乎很少取得成功。 在在2020世纪世纪6060年代后期出现的面向对象编程语言年代后期出现的面向对象编程语言Simula-67Simula-67中中首次引入了类和对象的概念,自首次引入了类和对象的概念,自2020世纪世纪8080年代中期起,人们开始年代中期起,人们开始注重面向对象分析和设计的研究,逐步形成了面向对象方法学。注重面向对象分析和设计的研究,逐步形成了面向对象方法学。到了到了2020世纪世纪9090年代,面向对象方法学已经成为人们在开发
3、软件时年代,面向对象方法学已经成为人们在开发软件时首选的范型。面向对象技术已成为当前最好的软件开发技术。首选的范型。面向对象技术已成为当前最好的软件开发技术。回撬保砚乓老婶承禹擞撬梳徊陵细葱趁钝掺终倦给骨蜕姑尿挂娠睁娥铅曰第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论2.1 面向对象方法学概述 2.1.1 2.1.1 面向对象方法学导论面向对象方法学导论 面向过程程序设计:面向过程程序设计: 根据计算机的要求,围绕算法进行程序设计。根据计算机的要求,围绕算法进行程序设计。 开发软件的方法与
4、过程不同于人类开发软件的方法与过程不同于人类认识世界解决问题时习惯采用的方法与过程,因此使得描述问题的问题空间与实现解认识世界解决问题时习惯采用的方法与过程,因此使得描述问题的问题空间与实现解法的解空间在结构上明显不同。法的解空间在结构上明显不同。 遏绽翻寅艰玫汞个翁饲倘下韭石挚宗够账痈翱撂虹袄昭融煽求版粗逐骡作第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论人类习惯的解决问题的方法 让我们观察一个日常生活中常见的事例:让我们观察一个日常生活中常见的事例: 一位厨师的头发长了需要理发,他会走
5、进理发馆,告诉理一位厨师的头发长了需要理发,他会走进理发馆,告诉理发师要理什么发式。也就是说,为了解决头发过长的问题,厨师发师要理什么发式。也就是说,为了解决头发过长的问题,厨师只需向理发师提出要求,告诉他只需向理发师提出要求,告诉他“ “做什么做什么” ”(即,理什么发式),(即,理什么发式),并不需要告诉理发师并不需要告诉理发师“ “怎样做怎样做” ”,理发师自己知道第一步做什么,理发师自己知道第一步做什么,第二步做什么。类似地,理发师肚子饿了,只需走进餐馆点好自第二步做什么。类似地,理发师肚子饿了,只需走进餐馆点好自己要吃的饭菜,厨师自己知道该怎样做,并不需要顾客告诉他做己要吃的饭菜,厨
6、师自己知道该怎样做,并不需要顾客告诉他做菜的具体步骤,事实上,顾客无需知道做菜的具体步骤。菜的具体步骤,事实上,顾客无需知道做菜的具体步骤。 勿柞搁靶撩指叮剑喇帕肃擦撼娇槐溢眉妆浸拣拳拥躁千郭晾盾哗陷恕玲垢第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论 面向对象程序设计方法模拟人类习惯的解题方法,用对象分解取代功能分解,也面向对象程序设计方法模拟人类习惯的解题方法,用对象分解取代功能分解,也就是把程序分解成许多对象,不同对象之间通过发消息向对方提出服务要求,接受消就是把程序分解成许多对象,
7、不同对象之间通过发消息向对方提出服务要求,接受消息的对象主动完成指定功能,程序中的所有对象分工协作,共同完成整个程序的功能。息的对象主动完成指定功能,程序中的所有对象分工协作,共同完成整个程序的功能。面向对象程序设计方法模拟人类习惯面向对象程序设计方法模拟人类习惯拇悟悲巳厌椭橡廖群忱我丘棒裤冀厉暂蹄板报骸猛鱼践复堪囚宁洒爷吸从第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论2.1.2 面向对象方法概述 面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使面向对象方法学的出发点
8、和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称求解域)在结构上尽述问题的问题空间(也称为问题域)与实现解法的解空间(也称求解域)在结构上尽可能一致。可能一致。豁十典卖耿虫矮纸撬锚愿舰典畅因蓟欲法卑邢脱灾需中终墙芒桑棉叭赡澳第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论面向对象方法具有下述面
9、向对象方法具有下述4 4个要点:个要点: 认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。较简单的对象以某种方式组合而成。 把所有对象都划分成各种对象类(简称为类,把所有对象都划分成各种对象类(简称为类,ClassClass),每个对象类都定义了一),每个对象类都定义了一组数据和一组方法。组数据和一组方法。 按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等
10、级)。一个层次结构的系统(也称为类等级)。 对象彼此之间仅能通过传递消息互相联系。对象彼此之间仅能通过传递消息互相联系。穗姚泽呵漱九借改妥稻唬畜桨瞧赌衣脑英增签及晌筛虽鳞衰光赤作嚏获汉第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论2.1.3 2.1.3 面向对象方法的主要优点面向对象方法的主要优点 与人类习惯的思维方法比较一致与人类习惯的思维方法比较一致 面向对象方法学的基本原则是按照人们习惯的思维方式建面向对象方法学的基本原则是按照人们习惯的思维方式建成立问题域的模型,开发出尽可能直观、
11、自然地表现求解方法的成立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统。面向对象的软件系统中广泛使用的对象,是对客观世软件系统。面向对象的软件系统中广泛使用的对象,是对客观世界中实体的抽象。界中实体的抽象。 稳定性好稳定性好 面向对象方法基于构造问题领域的对象模型,以对象为中面向对象方法基于构造问题领域的对象模型,以对象为中心构造软件系统。它的基本作法是用对象模拟问题领域中的实体,心构造软件系统。它的基本作法是用对象模拟问题领域中的实体,以对象间的联系刻画实体间的联系。因此,以对象为中心构造的以对象间的联系刻画实体间的联系。因此,以对象为中心构造的软件系统也是比较稳定的。软件系统
12、也是比较稳定的。 怠与硬蔑驻碍靠供皿沼填挫鲁兵凤兴阅拒觉压叼泊塌贿蛙呵凿平渊结对莎第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论 可重用性好可重用性好 面向对象的软件技术在利用可重用的软件成分构造新的软件面向对象的软件技术在利用可重用的软件成分构造新的软件系统时,有很大的灵活性。其中,有两种方法可以重复使用一个系统时,有很大的灵活性。其中,有两种方法可以重复使用一个对象类:一种方法是创建该类的实例,从而直接使用它;另一种对象类:一种方法是创建该类的实例,从而直接使用它;另一种方法是从它派生
13、出一个满足当前需要的新类。方法是从它派生出一个满足当前需要的新类。 较易开发大型软件产品较易开发大型软件产品 可维护性好可维护性好 面向对象还有如下突出优点:面向对象还有如下突出优点: 面向对象软件稳定性比较好;面向对象软件稳定性比较好; 面向对象的软件比较容易修改;面向对象的软件比较容易修改; 面向对象的软件比较容易理解;面向对象的软件比较容易理解; 易于测试和调试。易于测试和调试。厉拦烫痢旬缝轰硫立徘透赫屠睡态谆吟木拔剃昭蔼筋堑陆勒男瓢署呐匣诲第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学
14、导论2.1.4 2.1.4 喷泉模型喷泉模型 喷泉模型体现了面向对象方法所固有的迭代和无间隙的特征。喷泉模型体现了面向对象方法所固有的迭代和无间隙的特征。 迭代是软件开发过程中普遍存在的一种内在属性。即,软件开发活动需多次重复,迭代是软件开发过程中普遍存在的一种内在属性。即,软件开发活动需多次重复,每次重复都从分析开始,依次进行设计、实现,逐渐细化,演化出最终系统。每次重复都从分析开始,依次进行设计、实现,逐渐细化,演化出最终系统。庆蜀轧腺圣鼠本萤缅肩窘宫籍斥搓禾耸裳测滁北悼零箱氮喇春苹埔砰莹捏第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌
15、果季颜天第2章面对象方法学导论第2章面对象方法学导论图图2.12.1喷泉模型喷泉模型拐浮仲妥册狂熙葱月氛破懦啸突骗簇个赚图水葬径间拧诸响鲸秋保拂沂蚌第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论2.2 2.2 面向对象的概念面向对象的概念 2.2.1 2.2.1 对象对象 在应用领域中有意义的,与所要解决在应用领域中有意义的,与所要解决 的问题有关系的任何事物都可以作为对象的问题有关系的任何事物都可以作为对象(ObjectObject),它既可以是具体的物理实体的抽象,也可以是人为的概念,
16、或者是任何有明),它既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明确边界和意义的东西。例如,一名职工、一家公司、一个窗口、一座图书馆、一本图书、确边界和意义的东西。例如,一名职工、一家公司、一个窗口、一座图书馆、一本图书、贷款、借款等等,都可以作为一个对象贷款、借款等等,都可以作为一个对象 。 总之,对象是对问题域中某个实体的抽象,设立某个对象就反映了软件系统具有保总之,对象是对问题域中某个实体的抽象,设立某个对象就反映了软件系统具有保存有关它的信息并且与它进行交互的能力。存有关它的信息并且与它进行交互的能力。 荤闽舅串借枣芍严夯谈诱涟亡裤描控装庙哟寄谢疯情盎沾爆吓龄祭肥才手
17、第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论 面向对象方法学中的对象:面向对象方法学中的对象: 是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。的统一体。对象可以作的操作表示它的动态行为,通常称为服务或方法。对象可以作的操作表示它的动态行为,通常称为服务或方法。 靠嗡菠去捉临窟汽袁位谈胸完迷瘪饺哨抗霸个叁堤逐捷蔚霹赡噎疟图纽艾第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺
18、实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论对象的形象表示(举例)对象的形象表示(举例) 一个对象很像一台录音机。当在软件中使用一个对象的时候,只能通过对象与外一个对象很像一台录音机。当在软件中使用一个对象的时候,只能通过对象与外界的界面来操作它。对象与外界的界面也就是该对象向公众开放的操作,例如,界的界面来操作它。对象与外界的界面也就是该对象向公众开放的操作,例如,C+ C+ 语言中对象的公有的(语言中对象的公有的(PublicPublic)成员函数。一个对象好象是一个黑盒子,表示它内部状)成员函数。一个对象好象是一个黑盒子,表示它内部状态的数据
19、和实现各个操作的代码及局部数据,都被封装在这个黑盒子内部,在外面是看态的数据和实现各个操作的代码及局部数据,都被封装在这个黑盒子内部,在外面是看不见的,更不能从外面去访问或修改这些数据或代码。不见的,更不能从外面去访问或修改这些数据或代码。 住骤唤章择隋戳婶榴享脚瞎胃惋婿吭症满幼咎罕遍爽安起亦捍馅搞驻偏拧第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论对象的形象表示:对象的形象表示:图图2.2 2.2 对象的形象表示对象的形象表示尾肛事膘陕瘫饿粟侥掐经角用沼毒阐矢品某搽弛拈婆催痒裂叛能央碳老
20、煽第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论对象的定义对象的定义 人们从不同角度给出对象的不同定义:人们从不同角度给出对象的不同定义: 1 1、定义、定义1 1:对象是具有相同状态的一组操作的集合。:对象是具有相同状态的一组操作的集合。 2 2、定义、定义2 2:对象是对属性值和操作的封装。:对象是对属性值和操作的封装。 3 3、定义、定义3 3:对象:对象 = =IDID,MSMS,DSDS,MIMI 其中,其中,IDID是对象的标识或名字,是对象的标识或名字,MSMS是对象中的操作
21、集合,是对象中的操作集合,DSDS是对象的数据结构,是对象的数据结构,MIMI是对象受理的消息名集合(即对外接口)是对象受理的消息名集合(即对外接口),注意:这个定义是一个形式化的定义。,注意:这个定义是一个形式化的定义。铆惟余榜每暖荆栖拐积测鸿格捅蔷盈桑徽诀俭选氟瘦共德小颜贞引樱疹翰第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论 总之,对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这总之,对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地
22、标识它的名字,而且向外界提供一组服务(即公有的操作)。对个封装体有可以唯一地标识它的名字,而且向外界提供一组服务(即公有的操作)。对象中的数据表示对象的状态,一个对象的状态只能由该对象本身的操作来改变。象中的数据表示对象的状态,一个对象的状态只能由该对象本身的操作来改变。琅牧汀航浩单木持仍倍聂绩残伺焙闸威呕吊颅承问栗涸泳琅膝视彩憾俭狐第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论对象的特点对象的特点 以数据为中心,操作是为数据服务的。以数据为中心,操作是为数据服务的。 对象是主动的,为了完
23、成某个操作,不能从外部直接加工它对象是主动的,为了完成某个操作,不能从外部直接加工它的私有数据,而是必须通过它的公有接口向对象发消息,请求它的私有数据,而是必须通过它的公有接口向对象发消息,请求它执行它的某个操作,处理它的私有数据。(举例:厨师与理发匠)执行它的某个操作,处理它的私有数据。(举例:厨师与理发匠)。 实现了数据封装。对象好像是一只黑盒子,它的私的数据完实现了数据封装。对象好像是一只黑盒子,它的私的数据完全被封装在盒子内部,对外是隐藏的、不可见的,对私有数据的全被封装在盒子内部,对外是隐藏的、不可见的,对私有数据的访问或处理只能通过公有的操作进行。抽象数据类型的概念,无访问或处理只
24、能通过公有的操作进行。抽象数据类型的概念,无须知道数据的具体结构以及实现操作的算法。须知道数据的具体结构以及实现操作的算法。卢佳享零傣怠刁时汞面艺贯浸羔傻训龟缀氰唯毅惑赃啦惟桩恳歹榆冯晴搀第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论 本质上具有并行性。不同对象各自独立地处理自身的数据,彼此通过发消息本质上具有并行性。不同对象各自独立地处理自身的数据,彼此通过发消息传递信息完成通信。因此,对于不同的对象来说,本质上具有并行工作的属性。传递信息完成通信。因此,对于不同的对象来说,本质上具有并
25、行工作的属性。 模块独立性好。对象是面向对象的软件的基本模块。模块独立性好。对象是面向对象的软件的基本模块。出瘟幽俏咳爷幻无牵栽灌雁施岿汽毛善稀应慌难晰墅纫乙钢岩势拨隧宗陨第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论2.2.2 2.2.2 其他概念其他概念 类类(class)(class) “ “类类”就是对具有相同数据和相同操作的一组相似对象的定就是对具有相同数据和相同操作的一组相似对象的定义,也就是说,类是对具有相同属性和行为的一个或多个对象的义,也就是说,类是对具有相同属性和行为的
26、一个或多个对象的描述。描述。 例如:张三、李四、王五等,虽说每个人职业、性格、爱好、例如:张三、李四、王五等,虽说每个人职业、性格、爱好、特长等等各有不同。但是,他们的基本特征是相似的,都是黄皮特长等等各有不同。但是,他们的基本特征是相似的,都是黄皮肤、黑头发、黑眼睛,于是人们把他们统称为肤、黑头发、黑眼睛,于是人们把他们统称为“ “中国人中国人” ”。甄捏畦我鸵变贼层麦长析猾推诊疚礼抢蚌伶知梧呀鸣帽褒将企胜缕当养斗第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论 实例(实例(instanc
27、einstance) “ “实例实例” ”是由某个特定的类所描述的一个具体的对象。是由某个特定的类所描述的一个具体的对象。 “ “对象对象” ”这个术语,既可以指一个具体的对象,也可以泛指一般这个术语,既可以指一个具体的对象,也可以泛指一般的对象,而的对象,而“ “实例实例” ”这个术语,必然是指一个具体的对象。这个术语,必然是指一个具体的对象。 C+ C+中,要定义一个对象或实例,必须先建立一个这类对象的中,要定义一个对象或实例,必须先建立一个这类对象的类。类。 床醋赢轰渣憨昌褥早哑到讳庶隶乳吼馁方絮简哇坟茸治峡酣宠愁优增檀串第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰
28、彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论 消息(消息(messagemessage):): 要求某个对象执行其中某个操作的规格的说明,一个消息由下要求某个对象执行其中某个操作的规格的说明,一个消息由下述三部分组成:述三部分组成: 接收消息的对象;接收消息的对象; 消息选择符(也称为消息名);消息选择符(也称为消息名); 零个或多个变元。零个或多个变元。 例如例如 : MyCircle.Show(GREEN) MyCircle.Show(GREEN) ; 其中:其中: MyCircle MyCircle是是CircleCircle类的对象,也是类的对
29、象,也是 Circle Circle类的一个实例。类的一个实例。 Show Show是消息选择符(即消息名);是消息选择符(即消息名); GREEN GREEN是消息的变元。是消息的变元。 躺铺峡住蔓室淬穿苞杭某丸寐郎啄堆膜颖靶颂焦犬匙滩豁早疹尚隧质栽唉第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论 方法(方法(methodmethod) 方法,就是对象所能执行的操作,也就是类中所定义的服方法,就是对象所能执行的操作,也就是类中所定义的服务。务。 在在C+ C+ 语言中把方法称为成员函数。
30、通常,一个函数对应语言中把方法称为成员函数。通常,一个函数对应一个操作,实现一个功能。一个操作,实现一个功能。例如:为了例如:为了MYCircleMYCircle这个对象能够显示一个圆,在这个对象能够显示一个圆,在CircleCircle类类中必须定义成员函数中必须定义成员函数Show(int color)Show(int color)。袭皑轩诚红崭琴树识侗萌氢颗贸鸥齐怪菌栖纠颓铆遗诈顶厢匡泼瓶松卖症第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论 属性(属性(attributeattrib
31、ute) 属性,就是类中所定义的数据,它是对客观世界实体所具属性,就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。有的性质的抽象。 例如:例如:CircleCircle类中定义代表圆心坐标、半径、颜色等属性。类中定义代表圆心坐标、半径、颜色等属性。 在在C+ C+ 语言中把属性称为数据成员。语言中把属性称为数据成员。 函住广劲翼哩帐小缕蔽买壳褒糠狰羽撂愉亏咽碎凶牢垃泥爪淹婆呜肮棘谗第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论 封装性(封装性(encapsulationenca
32、psulation) 从字面上理解,所谓封装就是把某个事物包起来,使外界不从字面上理解,所谓封装就是把某个事物包起来,使外界不知道该事物的具体内容把数据和实现操作的代码集中起来放在对知道该事物的具体内容把数据和实现操作的代码集中起来放在对象内部。使用一个对象的时候,只需知道它向外界提供的接口形象内部。使用一个对象的时候,只需知道它向外界提供的接口形式而无须知道它的数据结构细节和实现操作的算法式而无须知道它的数据结构细节和实现操作的算法 。 实现封装的条件实现封装的条件 : 有一个清楚的边界。有一个清楚的边界。 有确定的接口(这些接口就是对象可以接受的消息,用户有确定的接口(这些接口就是对象可以
33、接受的消息,用户只能通过向对象发送消息来使用它)。只能通过向对象发送消息来使用它)。 受保护的内部实现。受保护的内部实现。肇晌篇扔瀑厢鳖耙乒秃诸包韵朱宰粗缩身样破采姆蓑靳俏苔侩肢沁迁奠牲第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论 继承(继承(inheritanceinheritance) 继承是指能够直接获得已有的性质和特征,而不必重复定义继承是指能够直接获得已有的性质和特征,而不必重复定义它们。子类自动地共享基类中定义的数据和方法的机制。它们。子类自动地共享基类中定义的数据和方法的机
34、制。 (举例:(举例:父与子)父与子) 继承具有传递性,如果类继承具有传递性,如果类C C继承类继承类B B,类,类B B继承类继承类A A,则类,则类C C继承类继承类A A。一个类除了具有该类所描述的性质外,还具有类等级。一个类除了具有该类所描述的性质外,还具有类等级中该类上层全部基类描述的一切性质。中该类上层全部基类描述的一切性质。枚篆烦僳塘敢奸护耽干应孵沼贡就汗杏问页闻楔饯鞘享驹宅谴成暴篙窒悍第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论继承机制的原理继承机制的原理图图2.42.4
35、 实现继承机制的原理实现继承机制的原理锄剃梆耳侯褥摊枷颓许骗寿量狸撰澜蝎蛰獭幸魁议羌挑香哉耸他滑结聊债第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论 多态性多态性(polymorphism )(polymorphism ) 多态性是指子类对象可以像父类对象那样使用。同样的消息多态性是指子类对象可以像父类对象那样使用。同样的消息既可以发送给父类对象也可以发送给子类对象。既可以发送给父类对象也可以发送给子类对象。 在类等级的不同层次中,相同的消息,被不同的类(属同一在类等级的不同层次中,相同的
36、消息,被不同的类(属同一簇)的对象接收,产生了不同的行为。簇)的对象接收,产生了不同的行为。 在在C+ C+ 语言中,多态性是通过虚函数来实现的。虚函数机制语言中,多态性是通过虚函数来实现的。虚函数机制使得程序员能在一个类等级中使用相同函数的多个不同版本,在使得程序员能在一个类等级中使用相同函数的多个不同版本,在运行时刻才根据接收消息的对象所属于的类,决定到底执行哪个运行时刻才根据接收消息的对象所属于的类,决定到底执行哪个特定的版本,这称为动态联编,也叫滞后联编。特定的版本,这称为动态联编,也叫滞后联编。 谰字高湘然林乎隘妊凹格饶笼举尸楚变竟极双园秩矮四幢铲哭赵藤兜疾参第2章面对象方法学导论第
37、2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论 重载(重载(overloadingoverloading)( (有两种重载有两种重载) ) 函数重载是指在同一作用域内的若干个参数特征不同的函函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;数可以使用相同的函数名字; 运算符重载是指同一个运算符可以施加于不同类型的操作运算符重载是指同一个运算符可以施加于不同类型的操作数上面。数上面。 在在C+ C+ 语言中函数重载是通过静态联编实现的,也就是在编语言中函数重载是通过静态联编实现的,也就是在
38、编译时根据函数变元的个数和类型译时根据函数变元的个数和类型 ,决定到底使用函数的哪个实现,决定到底使用函数的哪个实现代码;对于重载的运算符,同样是在编译时根据被操作数的类型,代码;对于重载的运算符,同样是在编译时根据被操作数的类型,决定使用该算符的哪种语义。决定使用该算符的哪种语义。 如如: cout“2”; : cout“2”; 表示向屏幕输出字符串表示向屏幕输出字符串2 2 x2; x2; 表示将表示将x x中的二进制左移中的二进制左移2 2位位甘旁盆倚阳睛映揪稽梦伯饶项柒仗墟澄钢漂蚜秸次惑尚柜绽素璃邪武矾泼第2章面对象方法学导论第2章面对象方法学导论熟悉并使用类熟悉并使用类C+标准库提供
39、了标准库提供了string类,类, string类的属性是一类的属性是一个字符串个字符串str,同名函数,同名函数string是用来初始化符串,是用来初始化符串,另外另外3个成员函数用来对个成员函数用来对属性属性str进行操作。进行操作。当定义了一个对象后,这当定义了一个对象后,这 个个对象可以通过这些成员函对象可以通过这些成员函数展现自身的特性。数展现自身的特性。stringstrstring()find ()size()substr()声窿吴第络旬肾演嫡益锄盐标愧受宗叙稍尼臼哩料戏慧咎卉怂苦雏贮含疹第2章面对象方法学导论第2章面对象方法学导论使用使用stringstring类的例子类的例子
40、#include #include using namespace std;void main( )string str1(We are here!);string str2;coutstr10str111,str1endl;coutstr2;/输入输入 一个单词给对象一个单词给对象str2coutlength of str2 isstr2.size()endl;string newstr=str2.substr(3,1);/从从 str2的第的第3位开始截取位开始截取1个字符个字符coutnewstr=newstrendl;int i=str1.find(“are”,0);/从字符串从字符串
41、str1的位置的位置0开始检索开始检索arecouti=iendl; 注意:注意:注意:注意:C+C+规定符串的计数是从零开始的规定符串的计数是从零开始的规定符串的计数是从零开始的规定符串的计数是从零开始的孩喻痊誉沦倚赃公秀辉遭讶到晋筏龟窜爆梅诞晃榜尹淖痛默喊哉短峡嚣腥第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论2.3 2.3 面向对象建模面向对象建模 所谓模型,由一组图示符号和组织这些符号的规则组成,利所谓模型,由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语
42、和概念。模型是一种思考工用它们来定义和描述问题域中的术语和概念。模型是一种思考工具,利用这种工具可以把知识规范地表示出来。具,利用这种工具可以把知识规范地表示出来。 为了开发复杂的软件系统,系统分析员应该抽象出目标系统为了开发复杂的软件系统,系统分析员应该抽象出目标系统的特性,使用精确的表示方法构造系统的模型,并在设计过程中的特性,使用精确的表示方法构造系统的模型,并在设计过程中逐渐把和实现有关的细节加进模型中,直至最终用程序实现模型。逐渐把和实现有关的细节加进模型中,直至最终用程序实现模型。 耻秩阻苇弹断碑出顶篓磐毕伯纹凯当足哭远纳措赣柳编仇女讼眼峭撅甭威第2章面对象方法学导论第2章面对象方
43、法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论 用面向对象方法开发软件,通常需要建立三种形式的模型,用面向对象方法开发软件,通常需要建立三种形式的模型,它们分别是:它们分别是: 描述系统数据结构的对象模型描述系统数据结构的对象模型( (基本、核心基本、核心) ) 描述系统控制结构的动态模型描述系统控制结构的动态模型 描述系统功能的功能模型描述系统功能的功能模型 一个典型的软件系统组合了上述三方面内容:它使用数据结一个典型的软件系统组合了上述三方面内容:它使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变构(对
44、象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。化(功能模型)。 褒募褪谤牛皱貉铂川荚恰孟蚤彩裔跨泊潘羚蛰奄冗莫晶婪忘背俐芒奎局仇第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论2.4 2.4 对象模型对象模型 对象模型是上述三种模型中最重要、最基本、最核心的模型,对象模型是上述三种模型中最重要、最基本、最核心的模型,是表示静态的、结构化的系统的是表示静态的、结构化的系统的“ “数据数据” ”性质。性质。 它是对模拟客观世界实体的对象以及对象彼此间的关系的映它是对模拟客观世
45、界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。面向对象方法强调围绕对象而不是射,描述了系统的静态结构。面向对象方法强调围绕对象而不是围绕功能来构造系统。对象模型为建立动态模型和功能模型,提围绕功能来构造系统。对象模型为建立动态模型和功能模型,提供了实质性的框架。供了实质性的框架。傻甩鬃嗣多烃款蛛俐臂秩恬嫌秩菌汉拈敖良踌琶新萌揉必婆潘佣捻菏珊俺第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论2.4.1 2.4.1 类图的基本符号类图的基本符号 定义类定义类 UML UML中类的
46、图形符号为长方形,用两条横线把长方形分成中类的图形符号为长方形,用两条横线把长方形分成上、中、下上、中、下3 3个区域(下面两个区域可省略),个区域(下面两个区域可省略),3 3个区域分别放类个区域分别放类的名字、属性和服务。的名字、属性和服务。朗纶朽粳拥池敲颗栈块矿艇与馅鞭逗聚榨政颐甘镁炯犬馏拿佣幸唐汀诣撤第2章面对象方法学导论第2章面对象方法学导论2.4.1 2.4.1 类图的基本符号类图的基本符号类命名时应遵守以下几条准则:类命名时应遵守以下几条准则:使用标准术语。使用标准术语。使用具有确切含义的名词。使用具有确切含义的名词。 必要时用名词短语作名字。必要时用名词短语作名字。 总之,名字
47、应该是富于描述性的、简洁的而且无二义总之,名字应该是富于描述性的、简洁的而且无二义性的。性的。 察过览六愧迄咳特掇动惦凯星皆厚盟靖拐草太林蒸黍祷水训区郴俩丁尊苏第2章面对象方法学导论第2章面对象方法学导论2.4.1 2.4.1 类图的基本符号类图的基本符号定义属性定义属性UMLUML描述属性的语法格式如下:描述属性的语法格式如下:可见性可见性 属性名属性名: :类型名类型名 = = 初值初值 性质串性质串 属性的可见性(即可访问性)通常有下述属性的可见性(即可访问性)通常有下述3 3种:种: 公有的(公有的(publicpublic)用加号)用加号(+)(+)表示表示私有的(私有的(priva
48、teprivate)用减号)用减号( () )表示表示和保护的(和保护的(protectedprotected)用井号)用井号( () )表示表示如果未声明可见性,则表示该属性的可见性尚未定义。如果未声明可见性,则表示该属性的可见性尚未定义。例如:例如:“学生学生”类的属性类的属性“学号学号”,可以这样描述:,可以这样描述:学号:学号:String=“020010” String=“020010” 莫钱懂囊咋套严蛮害耀盎胰饵迭裸丛优咀箕丛山河秆六啥网敝欧拱撞坝捕第2章面对象方法学导论第2章面对象方法学导论2.4.1 2.4.1 类图的基本符号类图的基本符号定义服务定义服务服务也就是操作,服务也
49、就是操作,UMLUML描述操作的语法格式如下:描述操作的语法格式如下: 可见性可见性 操作名操作名( (参数表参数表):):返回值类型返回值类型 性性质串质串 操作可见性的定义方法与属性相同。操作可见性的定义方法与属性相同。参数表是用逗号分隔的形式参数的序列。参数表是用逗号分隔的形式参数的序列。描述一个参数的语法如下:描述一个参数的语法如下: 参数名参数名: :类型名类型名= = 默认值默认值寨颂掉驶站娩翱杠挪礁妆木椰将左农亥铅腰戌扑奏稠滚置暑讽鸿擅取耪弧第2章面对象方法学导论第2章面对象方法学导论2.4.2 2.4.2 表示关系的符号表示关系的符号 关联关联关联表示两个类的对象之间存在某种语
50、义上的联系。关联表示两个类的对象之间存在某种语义上的联系。 普通关联普通关联普通关联是最常见的关联关系,只要在类与类之间存在连普通关联是最常见的关联关系,只要在类与类之间存在连接关系就可以用普通关联表示。普通关联的图示符号是连接两接关系就可以用普通关联表示。普通关联的图示符号是连接两个类之间的直线个类之间的直线 。图图2.62.6 普通关系示例普通关系示例掀蔓彤兄抠艘缝工由弟恒邮巷撂眷羹二蔗胶额譬霖村穷抵船肋艇茫饿塘缸第2章面对象方法学导论第2章面对象方法学导论2.4.2 2.4.2 表示关系的符号表示关系的符号 关联的角色关联的角色 例如:一个人与另一个人结婚,必然一个人扮演丈夫例如:一个人
51、与另一个人结婚,必然一个人扮演丈夫的角色,另一个人扮演妻子的角色。的角色,另一个人扮演妻子的角色。 图图2.72.7 关联的角色关联的角色库境以粟嚎膊航姬嘿茧栓窍候房春创域啡灸重有药钦胁酞诗鼻泳打铡矫凝第2章面对象方法学导论第2章面对象方法学导论2.4.2 2.4.2 表示关系的符号表示关系的符号 限定关联限定关联 限定关联通常用在一对多或多对多的关联关系中,可限定关联通常用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变成一对一,或从多对多简化以把模型中的重数从一对多变成一对一,或从多对多简化成多对一。成多对一。例如,某操作系统中一个目录下有许多文件,一个文件仅属于一例如,某操作系
52、统中一个目录下有许多文件,一个文件仅属于一个目录,在一个目录内文件名确定了惟一一个文件。个目录,在一个目录内文件名确定了惟一一个文件。 图图2.82.8 一个受限的关联一个受限的关联格黄歹腆慑员赶遭病取叁吠最嘉龙挂棒渝呵察筷媒匿蹿址绽拖镜祟婪堑玲第2章面对象方法学导论第2章面对象方法学导论2.4.2 2.4.2 表示关系的符号表示关系的符号 关联类关联类为了说明关联的性质可能需要一些附加信息。可以引为了说明关联的性质可能需要一些附加信息。可以引入一个关联类来记录这些信息。入一个关联类来记录这些信息。 例如,图例如,图2.92.9是一个电梯系统的类模型,队列就是电梯控制器类与是一个电梯系统的类模
53、型,队列就是电梯控制器类与电梯类的关联关系上的关联类。电梯类的关联关系上的关联类。 图图2.9 2.9 关联类示例关联类示例门犊炔赁枕蕊聂止毋懦蚌涎倪采纂赴疥蝎砰族霞励右穗爷麦朔俗绒喧耽湿第2章面对象方法学导论第2章面对象方法学导论2.4.2 2.4.2 表示关系的符号表示关系的符号聚集聚集聚集也称为聚合,是关联的特例。聚集表示类与类之聚集也称为聚合,是关联的特例。聚集表示类与类之间的关系是整体与部分的关系。间的关系是整体与部分的关系。 共享聚集共享聚集如图如图2.102.10所示。一般聚集和共享聚集的图示符号,都所示。一般聚集和共享聚集的图示符号,都是在表示关联关系的直线末端紧挨着整体类的地
54、方画一个是在表示关联关系的直线末端紧挨着整体类的地方画一个空心菱形。空心菱形。 图图2.10 2.10 共享聚集示例共享聚集示例撬缅柴烃嚏裤酿绳止秋玖陋捶孽证申山缴丙烃廖儿腰宠邦最溜头峙深绢边第2章面对象方法学导论第2章面对象方法学导论2.4.2 2.4.2 表示关系的符号表示关系的符号 组合聚集组合聚集 图图2 2. .1111是窗口的组成,从图上可以看出组成关系用实心棱形是窗口的组成,从图上可以看出组成关系用实心棱形表示。表示。 图图2.11 2.11 组合聚集示例组合聚集示例蹿吵拇筑咆矿酚涵剁赢辫诫篇螺锦邵滦讯芋轨隐今硫彩敌寿阵嚷夯汕涂瘦第2章面对象方法学导论第2章面对象方法学导论2.4
55、.2 2.4.2 表示关系的符号表示关系的符号泛化泛化 UMLUML中的泛化关系就是通常所说的继承关系,中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的分类关系。它是通用元素和具体元素之间的分类关系。泛化可进一步划分成普通泛化和受限泛化。泛化可进一步划分成普通泛化和受限泛化。 臻拎踏够猫互老锯雹娘工酥油仲癸灿解赃聊桐耗打侵臻怔惧酗丽绸隙草策第2章面对象方法学导论第2章面对象方法学导论2.4.2 2.4.2 表示关系的符号表示关系的符号图图2.12 2.12 抽象类示例抽象类示例普通泛化扮啼氢恨蝗岂枕准挪撕驴托箕谱窍佰际佯掖范虽僚涸坠游梭株糕钡霖滇畴第2章面对象方法学导论第2章面
56、对象方法学导论2.4.2 2.4.2 表示关系的符号表示关系的符号图图2.13 2.13 复杂类图示例复杂类图示例 窥盼汁铝八擎永规盎拴挟视汞熊县尝奢准跋肩绷友柑锈纵丘坐追箕诡碱魄第2章面对象方法学导论第2章面对象方法学导论2.4.2 2.4.2 表示关系的符号表示关系的符号图图2.14 2.14 多重继承示例多重继承示例 受限泛化局捶进脱佐蔡涵疥浆湿胺稗舒阿何链贤遁菊渐支谣匝庄侍鲁短揩攀勤糟合第2章面对象方法学导论第2章面对象方法学导论2.4.2 2.4.2 表示关系的符号表示关系的符号 依赖和细化依赖和细化 依赖关系依赖关系 依赖关系描述两个模型元素(类、用例等)之间的语依赖关系描述两个模
57、型元素(类、用例等)之间的语义连接关系。义连接关系。图图2.15 2.15 友元依赖关系友元依赖关系鸟岁肘离乌爹钧彤婉娟岸笨偿出宙蹈心纽汛伏贬猎继妥淌咬就没新跳切校第2章面对象方法学导论第2章面对象方法学导论2.4.2 2.4.2 表示关系的符号表示关系的符号 细化关系细化关系 当对同一个事物在不同抽象层次上描述时,这些描述当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系。之间具有细化关系。 图图2.16 2.16 细化关系示例细化关系示例敏叠拎灰誓涂邢鬃佳敢姚永庸刮霉坑移采界担盗例桶每京权蓟渡瓣幢另鼻第2章面对象方法学导论第2章面对象方法学导论2.5 2.5 动态模型动态模型
58、动态模型表示瞬时的、行为化的系统的动态模型表示瞬时的、行为化的系统的“控制控制”性质,它规定了对象模型中的对象的合性质,它规定了对象模型中的对象的合法变化序列。法变化序列。 壮缕琳徽静恳述蠕西辞山棺管猎牲抢件紫台屿笑太攒为放姥僳吴罪鹅靛张第2章面对象方法学导论第2章面对象方法学导论2.5.1 2.5.1 状态状态 状态是任何可以被观察到的系统行为模状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。式,一个状态代表系统的一种行为模式。 钎高渊搬笨亲谦寿依痉千舍辜蓬渊狮稻鸟廓藩俱妹辈瘩刚针踞幸恳鳞懦销第2章面对象方法学导论第2章面对象方法学导论2.5.2 2.5.2 事件事件
59、事件是在某个特定时刻发生的事情,它是事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。另一个状态的外界事件的抽象。 恃梁琼疯逗因腔胜丰嚷凋趟宁卖手票沼萄惋号静瑟喧斋移榴粕嘘稀呜窘池第2章面对象方法学导论第2章面对象方法学导论2.5.3 2.5.3 符号符号 在状态图中,初态用实心圆表示,终态用在状态图中,初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示。一对同心圆(内圆为实心圆)表示。 活动表的语法格式如下:活动表的语法格式如下:事件名事件名( (参数表参数表)/)/动作表达式动作表达式事件表达
60、式的语法如下:事件表达式的语法如下:事件说明事件说明 守卫条件守卫条件/动作表达式动作表达式其中,事件说明的语法为:事件名其中,事件说明的语法为:事件名( (参数表参数表) )题咋黔幻蓝柞岗烧猜惫点刃眺替侧抱肠揩膀佩处亮榴撇镜摹猴窿成竭勒肩第2章面对象方法学导论第2章面对象方法学导论2.5.3 2.5.3 符号符号图图2.172.17状态图中使用的主要符号状态图中使用的主要符号扶野敢懦薪定还豺居攫丹懈绕白膨荚吾队啄逐士伏四田就剪匪钳蹿祈名竖第2章面对象方法学导论第2章面对象方法学导论图图2.18 2.18 学生选毕设课题的状态图学生选毕设课题的状态图鬃钾匆寅埔奉翌品瞬甫粕揪场聊询姐识专箔宛攘嫁
61、魂换簿稻唾空骸莫诚辞第2章面对象方法学导论第2章面对象方法学导论2.6 2.6 功能模型功能模型 功能模型表示变化的系统的功能模型表示变化的系统的“功能功能”性质,性质,它指明了系统应该它指明了系统应该“做什么做什么”,因此更直接地反,因此更直接地反映了用户对目标系统的需求。映了用户对目标系统的需求。诽盾淹吩旅碌粹本摊加埃支讶薛邵为滚蚂冗磷地夷当略植岿吨刊末锨涩燥第2章面对象方法学导论第2章面对象方法学导论2.6.1 2.6.1 用例图用例图系统系统系统被看作一个提供用例的黑盒子,内部如何系统被看作一个提供用例的黑盒子,内部如何工作对于建立用例模型都不重要。工作对于建立用例模型都不重要。嚷妆付
62、摔替郎敦者只呈轨锗木加遥铡剩侮泛芥穆股饵昨冬撩蔽软澜述辕多第2章面对象方法学导论第2章面对象方法学导论2.6.1 2.6.1 用例图用例图用例用例用例具有下述特征用例具有下述特征: : 用例代表某些用户可见的功能,实现一个具用例代表某些用户可见的功能,实现一个具体的用户目标;体的用户目标;用例总是被行为者启动的,并向行为者提供用例总是被行为者启动的,并向行为者提供可识别的值;可识别的值;用例必须是完整的。用例必须是完整的。衅委询免致镇菩脑脚跨侵妆历爵侨辛氛如革场社类沛棍犀埔稳撤雷腕胸骋第2章面对象方法学导论第2章面对象方法学导论2.6.1 2.6.1 用例图用例图行为者行为者 行为者是指与行为
63、者是指与系统交互的人或其系统交互的人或其他系统,它代表外他系统,它代表外部实体。使用用例部实体。使用用例并且与系统交互的并且与系统交互的任何人或物都是行任何人或物都是行为者。为者。图图2.19 2.19 自动售货机系统用例图自动售货机系统用例图抛刷予叫寄达到舍躺次壹情履杰创甫属蝶驳保围钙己超栅睹泌朔磅菩零廓第2章面对象方法学导论第2章面对象方法学导论图图2.20 2.20 含扩展和使用关系的用例图含扩展和使用关系的用例图用例之间的关系用例之间的关系 扩展关系扩展关系使用关系使用关系顶饭多上卡剃膊虏淮帅憋扦铬织视千诗负筹止类着怎额撩傅袄擦庐补掏佯第2章面对象方法学导论第2章面对象方法学导论2.6
64、.2 2.6.2 用例建模用例建模寻找行为者寻找行为者寻找用例寻找用例注意注意: : 最后这两个问题并不意味着没有行为者也可最后这两个问题并不意味着没有行为者也可以有用例,只是在获取用例时还不知道行为者是以有用例,只是在获取用例时还不知道行为者是谁。事实上,一个用例必须至少与一个行为者相谁。事实上,一个用例必须至少与一个行为者相关联。关联。 幂代殖此荷事冶稻铜碳寄怖斌轩镶霹噎蘸蔚曳洪重算眉版咆我莫请渊堪试第2章面对象方法学导论第2章面对象方法学导论2.7 2.7 三种模型之间的关系三种模型之间的关系 针对每个类建立的动态模型,描述了类实例的生命周期或针对每个类建立的动态模型,描述了类实例的生命
65、周期或运行周期。运行周期。状态转换驱使行为发生,这些行为在用例图中被映射成用状态转换驱使行为发生,这些行为在用例图中被映射成用例,它们同时与类图中的服务相对应。例,它们同时与类图中的服务相对应。功能模型中的处理(或用例)对应于对象模型中的类所提功能模型中的处理(或用例)对应于对象模型中的类所提供的服务。通常,复杂的处理(或用例)对应于复杂对象提供的服务。通常,复杂的处理(或用例)对应于复杂对象提供的服务,简单的处理(或用例)对应于更基本的对象提供供的服务,简单的处理(或用例)对应于更基本的对象提供服务。有时一个处理(或用例)对应多个服务,也有一个服服务。有时一个处理(或用例)对应多个服务,也有
66、一个服务时应多个处理(或用例)的时候。务时应多个处理(或用例)的时候。用例图中的行为者,可能是对象模型中的对象。用例图中的行为者,可能是对象模型中的对象。功能模型中的处理(或用例)可能产生动态模型中的事件。功能模型中的处理(或用例)可能产生动态模型中的事件。愉匿柜判何痹捞柿啃豫尔房阮她缄雪辞帖戈舶罚胶命爽抵唆痕亏挪慈吩竿第2章面对象方法学导论第2章面对象方法学导论纬疥夯词啡饥牧屉渺实铰彰蔓抡膛督第套孕涧斤粱得剁罕猛洛萌果季颜天第2章面对象方法学导论第2章面对象方法学导论P43P43:1 1 EmailEmail:vrlab_vrlab_作 业京考瑟戎钳喝数漂乡更努您屯郑领玖速蔫堑哲蛆努晕颖虞扭田佣鞘瓢地撮第2章面对象方法学导论第2章面对象方法学导论