书签 分享 收藏 举报 版权申诉 / 68
上传文档赚钱

类型《软件工程——理论、方法与实践》课件第7章.ppt

  • 上传人(卖家):momomo
  • 文档编号:7924400
  • 上传时间:2024-09-04
  • 格式:PPT
  • 页数:68
  • 大小:860.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《《软件工程——理论、方法与实践》课件第7章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    软件工程理论、方法与实践 软件工程 理论 方法 实践 课件
    资源描述:

    1、1 1第7章 面向对象的设计第7章 面向对象的设计7.1 设计模型7.2 类的设计7.3 设计交互7.4 接口描述7.5 设计变更7.6 用户界面设计7.7 iricher系统的设计本章小结习题2 2第7章 面向对象的设计7.1 设 计 模 型面向对象的设计一般要产生两类设计模型:静态模型:通过系统对象类及它们之间的关系来描述系统的静态结构。动态模型:描述系统的动态结构和系统对象(不是对象类)之间的交互。需要描述的交互包括由对象请求的服务序列、系统状态和这些对象交互之间的关联方式。3 3第7章 面向对象的设计7.2 类 的 设 计面向对象类的设计目标是能体现代码复用、设计良好的类和方法、数据完

    2、整性。代码复用在面向对象的系统开发中,始终都是关注的目标。在面向对象分析中体现为类以及类的继承层次。在类的设计过程中,分析的结果可以作为代码复用的基础。4 4第7章 面向对象的设计要完成类和方法的良好设计可以遵循以下设计建议:(1)始终保持数据的私有化。(2)始终在构造函数内初始化数据。(3)不要使用太多的相关联的原始数据类型。如果多个相关联的属性是原始数据类型,则尽可能将它们聚集到一个类中。例如,用一个Address类,使相关联的地址属性聚集到一个类中,这样包含客户地址信息的Customer类就可以包含类型为Address的一个属性而不是诸如街道、城市等几个单独的属性。5 5第7章 面向对象

    3、的设计(4)为所有的属性设立属性的存取/设置方法,但不是所有的属性都需要单独的存取/设置方法。存取方法就是返回对象属性值的方法,而设置方法就是修改某个对象属性值的方法。(5)对所有类一致地排列类的每个元素。例如,首先定义常量,然后是构造函数,再就是静态方法,接着是实例变量、其他方法,最后是静态变量。(6)对类、方法、属性给出有意义的名字,以便见名知义。6 6第7章 面向对象的设计7.2.1 识别设计类识别设计类的问题是根据分析类或接口定义一个或几个设计类的过程。当给定一个分析接口时,只需简单地为该接口指定一个设计类。当给定一个或多个分析类时,识别和设计类的方法则应依赖于分析类的类型。分析类的类

    4、型包括边界类、实体类和控制类。7 7第7章 面向对象的设计控制类的设计较为复杂,它们封装了控制逻辑、与其他对象的协作以及业务逻辑问题,因此主要考虑以下问题:(1)分布问题:如果控制需要被分布到网络中的几个不同节点中加以管理,那么在这些节点上需要单独的设计类来实现控制。(2)性能问题:在各个节点上使用单独的设计类来实现控制类并不一定合理,可以由一些相关的边界类或实体类的设计类来实现控制类。(3)事务问题:控制类通常封装事务,相应的设计也必须体现事务的管理。8 8第7章 面向对象的设计综合来看,如果一个“分析类”比较简单,代表着一个单一的逻辑抽象,那么可以将其映射为“设计类”。通常,主动参与者对应

    5、的边界类、控制类和一般的实体类都可以直接映射成设计类。如果“分析类”的职责比较复杂,很难由单个“设计类”来承担,则应该将其映射成“子系统接口”。通常,被动参与者对应的边界类被映射成子系统接口。子系统的划分应该符合高内聚、低耦合的原则。根据以上设计原则给出ATM系统分析类到设计类的映射,见表7.1。9 9第7章 面向对象的设计1010第7章 面向对象的设计7.2.2 识别类的方法确定了设计类后,需要定义设计类提供的方法,并用合适的语言或语法加以描述。方法定义主要基于:(1)分析类的职责。每个职责通常暗含一个或多个方法。此外,如果分析模型中为职责描述了输入和输出,那么这些输入和输出可以用作形参和方

    6、法结果值的初步定义。图7.1 BankCustomer属性和方法建模(2)分析类的特殊需求。(3)设计类需要提供的接口。接口的方法也需要由设计类提供。1111第7章 面向对象的设计一个设计类的方法需要支持该类在不同的用例实现中所扮演的所有角色。遍历用例实现,并查看类和它的对象是否包含在该用例实现图中和实现的事件流描述中。这里以ATM系统中BankCustomer类为例说明其方法的建模,如图7.1所示。1212第7章 面向对象的设计图7.1 BankCustomer属性和方法建模1313第7章 面向对象的设计7.2.3 识别属性一个属性详细说明了一个设计类的特性,并经常被类的方法访问。识别属性时

    7、应基于以下的原则:(1)设计类所关联的分析类的属性。有时,分析类的属性隐含着设计类需要的一个或多个属性。(2)对可用的属性类型加约束标记,如private。(3)当选择一个属性类型时,尽可能重用已经存在的属性类型。(4)一个类的属性不能被多个设计对象共享。如果需要共享,就需要将该属性定义成一个单独的类。1414第7章 面向对象的设计(5)如果一个设计类因为其属性的原因变得复杂而难于理解,那么其中的一些属性可以分离出来变成单独的类。(6)如果一个类存在大量的或者复杂的属性,则可以在一个单独呈现属性部分的类图中进行描述。1515第7章 面向对象的设计7.2.4 识别关联和聚合对象之间通过交互完成系

    8、统的行为,用例实现模型中(协作图或顺序图)描述了这些交互,交互通常意味着它们对应的类之间存在关联。关联的实例可用于建立与其他对象之间的引用关系,并可用来将对象分组、聚类,实现对象间的消息连接。1616第7章 面向对象的设计在识别、精化关联和聚合时,有如下的建议:(1)考察相应的分析类中的关联和聚合。这些关系通常隐含着设计类需要的一个或多个相应的关系。(2)精化关联多重性、角色名称、关联类、n元关联。当编码实现时,角色名称有时可以转变成设计类的属性,从而限定角色在“关联”类和发生关联的两个类之间有一个具有合适多重性的新关联。(3)精化关联的导航性。类之间关联的相应导航性可用以定义对象之间的消息传

    9、送方向。1717第7章 面向对象的设计最后,我们给出与ATM用例实现关联的设计类图,如图7.2所示。这个类图中类之间的关系在第6章已经说明。关于每个类的属性及其方法的确定从前面所有ATM系统的分析和设计中能够找到一部分,其他的请读者自己考虑。1818第7章 面向对象的设计图7.2 ATM系统部分设计类图1919第7章 面向对象的设计7.3 设 计 交 互当确定了实现用例所需要的设计类及类的详细定义时,应对设计对象间的交互行为进行描述和建模。在设计过程中,关注的重点是按时间顺序排列的交互序列,所以倾向于采用顺序图来建模用例实现。启动一个用例的执行一般由一个参与者向系统发送消息开始,即由参与者发出

    10、系统处理的请求。此时系统中将有相关联的设计对象接收该消息,必要时也会再调用其他的设计对象,从而实现用例的行为,将参与者以及这些对象间的交互过程,按时间顺序展开构成了用例实现的顺序图模型。2020第7章 面向对象的设计创建顺序图时应该注意以下几点:(1)用例启动执行从参与者实例向设计对象传递消息开始。(2)对于识别出的每个设计类,应该至少有一个设计对象参与到某个顺序图中。(3)消息的名称也是对象操作的名称。(4)应重点关注图中消息传送在时间上的先后顺序。(5)利用事件流描述来补充顺序图。(6)顺序图应该对所实现用例的所有交互建模。2121第7章 面向对象的设计在定义用例的交互行为中,请求对象发出

    11、消息请求,接收对象承担响应和处理消息的责任,因此可以把这种职责定义为接收对象的一个服务(或操作)。仍以ATM系统为例,图7.3为其“取款”用例的顺序图,将其中的“消息”映射成接收类的操作,可以得到如图7.4所示的设计类。2222第7章 面向对象的设计当对顺序图进行细化时,应考虑异常事件,这些异常是在需求获取或分析中无法考虑到的,异常的类型包括:(1)当连接节点时的超时处理。(2)人或设备等参与者可能产生的错误输入。(3)由中间件、系统软件或者硬件产生的出错信息。2323第7章 面向对象的设计一个用例实现的各种图(尤其是协作图)通常不够详尽。因此,往往需要解释和补充图的文字性事件流描述。然而,这

    12、些描述信息不应该提及任何有关对象的属性、操作或者关联,否则将很难维护,因为设计类的属性、操作和关联经常变化。此外,如果图中使用了接口,也不应该提及任何接口操作。这样,我们将能把因为所描述的图的变化而导致对事件流描述的修改降低到最小程度。2424第7章 面向对象的设计图7.3 ATM系统“取款”用例顺序图2525第7章 面向对象的设计图7.4 ATM系统“取款”用例涉及的类的行为分配2626第7章 面向对象的设计如果存在多个顺序图描述同样的用例实现,或者存在表示复杂流的图,则事件流描述就特别有用。在进行事件流描述时,要注意以下几点:(1)一个用例实现的事件流描述并不局限于某个特定的顺序图,因此它

    13、可以用于描述几个图是如何关联的。(2)一个顺序图的标签(例如一个动作激活时,动作的标签或描述)局限于该图。然而,如果标签很多,会让图看起来很乱。在这种情况下,一些标签的解释文字可以放到事件流描述中。2727第7章 面向对象的设计图7.3是ATM系统“取款”用例顺序图,补充此顺序图的事件流描述(仅提供部分)如下所述:(1)银行客户(BankCustomer)插卡后,卡扫描器(CardScanner)读卡。(2)ATM机的显示器显示密码输入界面(PasswdWin)。(3)银行客户(BankCustomer)输入密码后,由密码输入界面(PasswdWin)接受密码并通知卡扫描器(CardScann

    14、er)对密码进行验证,如果未通过验证,提示银行客户密码错误,ATM机的显示器重新显示密码输入界面(PasswdWin),这一操作可以重复三次2828第7章 面向对象的设计7.4 接 口 描 述对设计中不同组件之间的接口的描述是设计过程的一个重要部分。需要详细给出接口描述,以便该组件和其他的组件对象能并行地设计。一旦接口定义清楚,开发人员就可以利用定义好的接口完成与它交互的其他组件。2929第7章 面向对象的设计对象接口设计关心的是如何详细描述一个对象或一组对象的接口细节,这就需要定义服务的标记和语义。接口可以用UML中与类图一样的符号来描述。一般不包含属性部分。UML的接口标记包含在接口名字部

    15、分。图7.5为一个仪器类的接口定义,包含四个操作startup()、shutdown()、reportData()和test()。3030第7章 面向对象的设计图7.5 一个仪器类的接口定义3131第7章 面向对象的设计7.5 设 计 变 更面向对象设计方法的一个重要优势在于它能简化设计变更,对象的封装特性使得对象是内聚的,而对象之间是松散耦合的,这使得在变更对象的内部细节和引进一个新的对象时不会影响系统中的其他对象。3232第7章 面向对象的设计为了修改设计,需要做以下变更:(1)引入一个边界类TranMoneyWin,提供转入账号和转入金额数的输入。(2)对界面类TransactionWi

    16、n做些调整,加入“转账”这个用户可以选择的操作。除了界面类TransactionWin之外,这个ATM系统中没有其他的软件变更。3333第7章 面向对象的设计7.6 用户界面设计用户界面设计对于一个软件系统的成功是至关重要的,一个设计不好的软件界面可能会导致用户在使用过程中产生错误,甚至导致用户拒绝使用该系统。3434第7章 面向对象的设计7.6.1 用户界面设计的原则用户界面设计要以用户为中心,开发人员应该遵守以下原则:(1)用户控制方式。(2)一致性。(3)个性化。(4)宽容性。(5)反馈。(6)审美和可用性。3535第7章 面向对象的设计7.6.2 Web界面的设计网站设计的原则有:(1

    17、)避免服务器的错误。(2)网页内容要简单明了。(3)减少滚动的页面。(4)导航条件和顶部菜单条保持一致的设计,应该在所有用户可到达的页面上都是一致的。(5)导航条应该放在明显的位置上,随时告诉用户所处的位置并易于链接到其他内容。3636第7章 面向对象的设计(6)简单即为美。(7)内容要准确,及时。如同其他媒体一样,网站发布的信息必须准确,同时更新要及时。(8)提供交互性。(9)适当考虑带宽和客户端屏幕的分辨率。(10)在页面的构图与色彩上要考虑网页元素的布局和色彩的搭配,保持整体风格。总的来说,在Web界面设计时,需要注意美观和性能的折中平衡,因为太大的图片会造成系统时间的不必要浪费,如图7

    18、.6所示。3737第7章 面向对象的设计图7.6 Web界面的美观与性能3838第7章 面向对象的设计7.6.3 帮助系统的设计 在7.6.1节中提出了一个设计原则,即用户界面应该总是能够提供某种形式的在线帮助系统。帮助系统也就是为用户提供指导,包括以下三个方面:(1)系统产生提示消息来响应用户动作。(2)在线帮助系统。(3)随系统一起提供的文档。消息设计过程中应包括专业文字工作者和图形设计者。在设计错误消息或帮助文本时,表7.2所列出的各种因素都要考虑到。3939第7章 面向对象的设计4040第7章 面向对象的设计用户对一个软件系统的第一印象可能来自系统的错误消息。没有经验的用户开始工作时,

    19、犯了一个初始错误,应该读懂由此产生的错误消息。这对熟练的软件工程人员来说可能都有困难,而对不熟练或偶尔使用系统的用户来说通常更是不可能的。因此当设计错误消息的时候,应该预见到用户的背景和经验。例如,假设系统用户对计算机知识知之甚少,为了收邮件,系统用户在浏览器的地址栏中输入“”进入图7.7所示界面,为了进入自己的邮箱,要输入邮箱地址和密码。4141第7章 面向对象的设计图7.7 用户输入邮箱地址和密码4242第7章 面向对象的设计图7.8给出了一个简单的错误信息提示,这个提示没有考虑到上下文信息,也没有详细的错误信息,使用的是系统的专门术语,这样的设计不符合用户的技能和经验水平,不是面向用户的

    20、语言,通常用作对系统管理人员的提示。4343第7章 面向对象的设计图7.8 面向系统的错误消息4444第7章 面向对象的设计图7.9的提示信息则非常详细,不仅用用户的语言标识出问题所在,还为改正错误提供了一个简单易行的方式,同时提供使用帮助系统的方式。4545第7章 面向对象的设计图7.9 面向用户的错误消息4646第7章 面向对象的设计 一般来说,软件应提供帮助系统,以在用户无法面对当前出现的错误或无法进入下一步工作时提供帮助。帮助系统可以帮助用户获取更多的信息,根据系统上下文,提供不同类型的帮助,指导当前环境下的操作。帮助系统应该提供给用户多个不同的入口,如图7.10所示,使得用户可以从帮

    21、助信息层次结构的顶端进入帮助系统并浏览信息。也可以进入帮助系统以获取某个错误信息的解释,还可以请求解释特定的应用命令。4747第7章 面向对象的设计图7.10 帮助系统的入口4848第7章 面向对象的设计 帮助系统中的文本制作应该得到应用专家的帮助。帮助画面不应该只是人们以各种方式从书面或屏幕上读取的用户手册的简单复制。文本本身、文本编排和风格都需要仔细设计,以保证它在较小的窗口中也是易读的。在图7.11中,帮助画面(“Integrated Use Case Management”)比较简短。在任何一个帮助画面中信息都不能太多,以免让用户抓取不到他所关注的信息。4949第7章 面向对象的设计图

    22、7.11 帮助系统窗口示意5050第7章 面向对象的设计7.7 iricher系统的设计1进一步识别对象类图7.12给出了5个对象类。BudgetInfo和BudgetInfoManagerController是从系统用例和描述中识别出来的,BudgetInfoDao、BudgetInfoData和BudgetInfoManagerValidor是根据所采用的框架组件对应用域“预算管理”的设计。这些对象分别对应于系统体系结构中的不同层次。5151第7章 面向对象的设计(1)BudgetInfo类是对应budget_info数据表的Java Bean类。(2)BudgetInfoDao类是对bu

    23、dget_info数据表的操作类。(3)BudgetInfoManagerController是对页面涉及预算管理操作进行控制的类。(4)BudgetInfoData类封装用户在页面输入的预算数据,页面中的每一个输入项在此类中都有对应的属性来保存。(5)BudgetInfoManagerValidor类对用户在页面输入的预算数据的格式进行验证。5252第7章 面向对象的设计在设计阶段,需要使用应用域的知识来识别更多的对象和服务。在这个例子中:(1)网络中信息的传输采用传输值对象的方式,如添加预算。用户在页面中输入的预算信息封装在BudgetInfoData对象中传输到服务器端。(2)我们知道用

    24、户输入的信息格式可能会比较混乱,因此需要对用户输入的信息格式进行验证。(3)确定用户到底是添加预算信息、查询预算信息还是删除预算信息等等。BudgetInfoManagerController类中首先对信息类型进行判断,如果是添加预算信息,把BudgetInfoData对象中封装的信息再存入BudgetInfo对象中,之后调用BudgetInfoDao对象把BudgetInfo对象信息存入数据库。5353第7章 面向对象的设计图7.12 iricher系统“预算管理”涉及的对象类5454第7章 面向对象的设计2顺序图如图7.13所示,该图给出了“iricher系统”添加预算时相关对象之间的交互

    25、序列。5555第7章 面向对象的设计图7.13 添加预算顺序图5656第7章 面向对象的设计这个图的解释如下:(1)在Spring的配置文件webmvc-config.xml中要进行相关的配置,如:5757第7章 面向对象的设计 /budget_info_add.html=budgetInfoAdd5858第7章 面向对象的设计 5959第7章 面向对象的设计 6060第7章 面向对象的设计这就将budget_info_add.jsp页面与BudgetInfoData、BudgetInfoManagerValidor和BudgetInfoManagerController类直接关联起来,对页面

    26、的操作确定后,Spring框架直接将页面录入的信息封装到BudgetInfoData对象中,然后由BudgetInfoManagerValidor对象对页面录入的信息进行验证,之后BudgetInfoManagerController对象直接进行相关处理。(2)把BudgetInfoData对象中封装的信息存入BudgetInfo对象中。(3)调用BudgetInfoDao对象把BudgetInfo对象信息存入数据库。当描述一个设计的时候,应该为每个重要的交互产生一个顺序图。如果已经开发了用例模型,就应该为每个用例做一个顺序图。6161第7章 面向对象的设计3接口描述表7.3利用Java语言给

    27、出了iricher系统的一个接口实例。当接口变得更复杂的时候,这个方法也就显得更有效,因为可以使用编译器中的语法检查工具来发现接口描述中的错误和不一致。从这个Java描述中能看出方法可以使用不同个数或类型的参数。6262第7章 面向对象的设计6363第7章 面向对象的设计本 章 小 结面向对象设计是设计软件的一个重要方法。设计中使用的基本组件是对象类,对象类具有它们自己私有的状态和操作。面向对象的设计过程包括设计系统体系结构的活动、识别系统中对象类的活动、使用不同的模型来描述设计的活动以及对象接口设计活动。面向对象的设计过程中会产生一系列不同的模型,包括静态模型(类图)和动态模型(顺序图、状态

    28、图)。对象接口一定要精确地定义,以便由其他对象使用,程序设计语言如Java可以用于对象接口描述。6464第7章 面向对象的设计习 题1用例子解释对象和对象类之间的不同。2使用UML的图形符号来表示对象类,设计以下对象类并标明它们的属性和操作。根据自己的经验决定应该与这些对象关联的属性和操作。(1)电话。(2)图书馆的图书。(3)学生。3对ATM系统给出详细设计,要求对图7.2中的类给出接口描述,可以用Java、C+或UML。6565第7章 面向对象的设计4识别出下列系统中可能有的对象,给出这些系统的面向对象设计。在设计过程中可以给出合理的假设。(1)一个日记和时间管理系统,希望它支持一组同事的

    29、会议时间安排。当一个会议包括多人时,系统在这些人员的日记中找到共同空闲时间并将会议安排在这个时间。如果没有共同的空闲时间可用,系统就用用户交互来安排它们的日程以便腾出时间参加这次会议。6666第7章 面向对象的设计(2)准备设立一个全自动加油站,司机需要使用信用卡消费,加油泵与一读卡机相连,卡的验证是通过与信用卡公司计算机通信完成的,同时给出油量上限。司机可以按需加油。当油加完,加油软管自动回位。司机信用卡账户要被减掉相应数目。信用卡在账户计算完后退还给司机。如果卡是无效的,系统拒绝加油。6767第7章 面向对象的设计5对练习4中的对象用Java或C+语言写出它们的精确操作定义。6假设有一组人员要安排一次会议,用顺序图给出上面的日记管理系统中对象间的交互。7开发气象台系统设计,要求给出在数据采集子系统和采集数据的仪器之间的交互过程,使用顺序图来描述这个交互。8说明在什么情况下提供前后一致的界面是不明智的或是不可能的。6868第7章 面向对象的设计9在用户界面中使用颜色应该遵循什么原则?说明在你所使用的一个应用系统的界面中如何使用颜色更有效。10请为用户帮助系统的设计者写一组简短的指导原则。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《软件工程——理论、方法与实践》课件第7章.ppt
    链接地址:https://www.163wenku.com/p-7924400.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库