第9章 面向对象方法学引论_第1页
第9章 面向对象方法学引论_第2页
第9章 面向对象方法学引论_第3页
第9章 面向对象方法学引论_第4页
第9章 面向对象方法学引论_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

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

文档简介

1、主讲:刘悦主讲:刘悦Programming MethodologyProgramming Methodology程序设计方法学程序设计方法学第第9 9章章 面向对象方法学引论面向对象方法学引论2 - 2回顾回顾结构化开发方法结构化开发方法2 - 3数数 据据 设设 计计体系结构设计体系结构设计接口设计接口设计过程设计过程设计2 - 4本章目标本章目标? 掌握面向对象的基本概念掌握面向对象的基本概念?了解面向对象的建模技术了解面向对象的建模技术2 - 5主要内容主要内容面向对象方法学概述面向对象的概念面向对象建模2 - 6内容线索内容线索面向对象方法学概述面向对象方法学概述面向对象方法学产生的背

2、景面向对象方法学产生的背景面向对象方法学的要点面向对象方法学的要点面向对象方法学的优点面向对象方法学的优点面向对象的软件过程模型面向对象的软件过程模型面向对象的概念面向对象建模2 - 7传统的软件工程方法学传统的软件工程方法学传统方法部分地缓解了软件危机传统程序设计方法存在的问题生产率提高的幅度远不能满足需要软件重用程度很低软件维护困难软件不能真正满足用户的需要2 - 8面向对象方法学发展面向对象方法学发展雏形阶段(60后期):OO语言Simula-67出现(类,对象)完善阶段(80s):面向对象分析和设计,SmallTalk繁荣阶段(90s):面向对象方法学普遍应用, C+、Java2 -

3、9问题问题为什么面向对象软件工程方法优于传统软件工程方法呢?2 - 10两个概念两个概念问题空间(问题域)实体及实体间相互间的关系实体具有静态的属性和动态的行为解空间(求解域)计算机中的实体称为解空间的对象解空间的对象取决于所用的程序设计语言2 - 11面向对象方法学面向对象方法学面向对象软件开发方法OMT(Object Modeling Technique)包括2 - 12面向对象问题求解过程面向对象问题求解过程对象对象客观世界对象运行时程序类程序实现抽象数据类型概念世界抽象模拟实现实例化2 - 13面向对象方法学的要点面向对象方法学的要点OO+communication with mess

4、agesinheritance2 - 142 - 15 Initialize system; Create and draw interface;2 - 16(3)while QUIT not selected do case Mouse event: create shape structure; read mouse movements for data; store newly created shape on list of shape records; KeyPress event: if key = q then exit loop; else ignore; Expose eve

5、nt: refresh display by drawing each shape structure; Shut down system;2 - 172 - 18喷泉模型喷泉模型阶段内的迭代阶段内的迭代(或求精)(或求精)2 - 19面向对象方法学的优点面向对象方法学的优点总存在用错误的数据调用正确的模块,总存在用错误的数据调用正确的模块,或用正确的数据调用错误的模块的危险。或用正确的数据调用错误的模块的危险。与人类习惯的思维方法一致,解空间与问与人类习惯的思维方法一致,解空间与问题空间一致题空间一致v 以对象为核心,数据以及数据上的操作以对象为核心,数据以及数据上的操作封装为一个统一体封装

6、为一个统一体-对象对象v 软件系统由对象组成,以对象间的消息软件系统由对象组成,以对象间的消息模拟实体间的联系模拟实体间的联系v 抽象思维,归纳思维,演绎思维抽象思维,归纳思维,演绎思维v 开发围绕建立问题领域的对象模型,是开发围绕建立问题领域的对象模型,是一个逐步深化的渐进过程一个逐步深化的渐进过程解空间与问题空间不一致解空间与问题空间不一致v 以算法为核心,数据和过程分离以算法为核心,数据和过程分离v 软件系统由模块组成,模块间通过调软件系统由模块组成,模块间通过调用来集成系统用来集成系统v 自顶向下按部就班自顶向下按部就班较差较差v基于功能分解,需求变化大多针对功能基于功能分解,需求变化

7、大多针对功能v功能变化引起软件结构的整体修改功能变化引起软件结构的整体修改较好较好v功能需求变化仅需要作一些局部性的修改功能需求变化仅需要作一些局部性的修改v可派生子类以实现功能扩充或修改可派生子类以实现功能扩充或修改较差较差v标准函数库标准函数库不是自含的和独立的不是自含的和独立的v模块重用,则相应的数据也必须重用模块重用,则相应的数据也必须重用较好较好v通过对象实例或派生类通过对象实例或派生类v方便修改和扩充,且不影响原有类的使用方便修改和扩充,且不影响原有类的使用较易较易v可分解成相互独立的小产品可分解成相互独立的小产品较难较难v分而不解分而不解较好较好v稳定性好,易修改,易理解稳定性好

8、,易修改,易理解较差较差v稳定性较差,较难修改,较难理解稳定性较差,较难修改,较难理解思维方法思维方法特性特性面向对象方法面向对象方法传统方法传统方法稳定性稳定性开发大型软件开发大型软件可维护性可维护性可重用性可重用性2 - 20课外阅读:后面向对象时代课外阅读:后面向对象时代面向方面程序设计(Aspect-Oriented programming, AOP)方法面向Agent的程序设计(Agent-Oriented programming)方法其它后面向对象程序设计泛型程序设计(generic Programming,GP)面向构件程序设计敏捷方法(Agile Methodologies)2

9、 - 21内容线索内容线索面向对象方法学概述面向对象的概念面向对象的概念抽象抽象封装封装继承继承多态多态面向对象建模2 - 22面向对象的概念面向对象的概念对象 (Object)类(Class)封装(E Encapsulation)继承(I Inheritance)多态性(P Polymorphism)抽象(抽象(Abstraction)2 - 231 1、对象、对象对象是在系统执行过程中根据需要而动态产生的对象是类的一个实例化:是变量和相关方法的软件组合2 - 24对象对象对象是封装了数据结构及可以施加在这些数据结构上的操作(服务或方法)的封装体对象 =ID,MS,DS,MIID:对象标识或

10、名字:对象标识或名字MS:操作集合:操作集合DS:对象的数据结构:对象的数据结构MI:对象受理的消息名:对象受理的消息名集合集合(即对外接口即对外接口)2 - 25对象例子对象例子: : 雇员雇员具有成员变量:姓名、雇佣日期、薪金、部门某些成员变量值是固定的numberOfCompanyHolidays (公司员工节假日固定为9天)某些成员变量对于不同的对象值不同Name, ID, hireDate(雇员姓名可以是张三也可以是李四)具有方法:计算休假时间(calculateAccruedVacationTime)和提交周工作报告(submitWeeklyReport)某些方法对于所有对象来说都

11、是相同的submitWeeklyReport某些方法对于不同对象来说是不同的calculateAccruedVacationTime不同级别的雇员计算休假时间的方法是不同的2 - 262 2、类、类-Class-Class类的属性通过成员变量来表示。如:每个雇员的属性有姓名(可能是张三)、职工号(20030001)等类的行为通过方法来表示,如雇员什么时候可以享受休假,就要通过计算休假时间这个方法来获得:一组具有相同数据结构和相同操作的对象的集合2 - 27区别区别类和对象在软件中类和对象有时是难以区分的软件对象只是显示对象或抽象概念的电子化模型它们不象现实对象那样触手可及,而比较接近蓝图那样的

12、思想产品有时“对象”这个术语用于指类和实例两者对象和实例实例是某个具体类所描述的一个具体对象。例如:“张三”、“李四”是类“雇员”的实例对象既可以是一个具体的对象,也可以泛指一般的对象;而实例只能是一个具体的对象2 - 28消息(消息(MessageMessage)要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明对象通过相互发送消息(messages)进行相互交互和通信消息通过方法调用来实现通常一个消息由三部分组成接收消息的对象要执行的方法的名称(即消息名)需要由此方法来传递的任何参数(零个或多个变元)2 - 29方法(方法(MethodMethod)对象所能执行的操作,也就是类中

13、所定义的服务例如C+的成员函数Java的方法2 - 30属性(属性(AttributeAttribute)类中所定义的数据例如C+的数据成员Java的成员变量2 - 31属性:鳕鱼肝油树皮儿童用药行为:退烧止咳喷嚏3 3、封装、封装(encapsulation) (encapsulation) 封装的目的是打包-Bundling封装:将对象的变量置于它的方法的保护之下2 - 32封装封装隐藏-Hiding儿童用药泡泡糖很可口2 - 332 - 34信息隐藏信息隐藏 - Information Hiding- Information Hiding信息隐藏的优点 将界面和实现细节分离开来 程序员不

14、能访问被隐藏的信息直接的访问会产生意想不到的行为和不希望的代码依赖性因此,封装可以减少程序错误 对象可以维护私有的信息和方法,而不依赖于其他对象信息隐藏的例子雇员的薪金是隐藏的其它雇员类不能直接访问和修改薪金但是可以编写方法accessor和mutator来读写薪金2 - 35对象与类对象与类对象是类的实例化实例化一个Date对象my_DateDate myDate;myDateMemoryStackHeapmyDate = new Date( );2 - 36JavaJava中的信息隐藏中的信息隐藏Specifierclasssubclasspackageworldprivateprotec

15、ted *publicpackage2 - 37同步练习同步练习package packageA; / Case 1public class ReachMe public static int myStaticInt =5; public int myInstanceInt = 10;import packageA.ReachMe; / Case 1class TryAccess TryAccess() / constructor int anInt = ReachMe.myStaticInt; Is myStaticIntvisible?package packageA; / Case 2/

16、*package*/ class ReachMe public static int myStaticInt =5; public int myInstanceInt = 10;import packageA.ReachMe; / Case 2class TryAccess TryAccess() int anInt = ReachMe.myStaticInt; Is myStaticIntvisible?package packageA; / Case 3public class ReachMe public static int myStaticInt = 5;/protected con

17、structor protected ReachMe() import packageA.ReachMe; / Case 3class TryAccess TryAccess() ReachMe rm = new ReachMe();Can I instantiate?2 - 38封装的优点封装的优点模块化一个对象的源代码可以独立于其他对象的源代码进行编写和维护隐藏信息对象有一个公共的接口,其他对象可以使用这个接口与它通信对象可以维护私有的信息和方法,可以在任何时候改变信息和方法,而不影响依赖于它的其它对象2 - 39回顾回顾OO+communication with messagesinhe

18、ritanceAbstractEncapsulationPolymorphismInheritance2 - 40内容线索内容线索面向对象方法学概述面向对象的概念面向对象的概念抽象抽象封装封装继承继承多态多态面向对象建模2 - 414 4、继承、继承-Inheritance-Inheritance面向对象程序设计允许类获得另一个类的属性和行为继承将类组成一个层次结构的系统(类等级) :广义地说,继承指能够直接获得已有的性质和特征而不必重复定义它们。在面向对象中,继承是子类自动地共享父类中定义的变量和方法的机制。 雇员雇员 Employee 经理经理 工程师工程师Manager Engineer

19、2 - 42单继承单继承-Single Inheritance-Single Inheritance一个类只允许有一个父类 Employee | Manager Engineer | Director2 - 43多继承多继承- Multiple Inheritance- Multiple Inheritance多继承:一个类允许有多个父类子类具有所有父类的属性2 - 44继承的优点继承的优点提高软件的可重用性便于软件维护 “站在巨人的肩膀上” 开发新系统2 - 45继承实例继承实例class Bird public: virtual void fly(); / 鸟会飞 . ;class Pen

20、guin:public Bird / 企鹅是鸟 . ;鸟会飞,企鹅是鸟,所以企鹅会飞。鸟会飞,企鹅是鸟,所以企鹅会飞。2 - 46继承实例继承实例class Bird . / 没有声明fly函数; class FlyingBird:public Bird public:virtual void fly(); .;鸟会飞,并不是说所有的鸟会飞,鸟会飞,并不是说所有的鸟会飞,通常,只有那些有飞行能力的鸟才会飞通常,只有那些有飞行能力的鸟才会飞, ,实际上有很多种不会飞的鸟。实际上有很多种不会飞的鸟。企鹅是没有飞行能力的鸟,企鹅是没有飞行能力的鸟,所以企鹅不会飞。所以企鹅不会飞。class NonF

21、lyingBird: public Bird . / 没有声明fly函数;class Penguin: public NonFlyingBird . / 没有声明fly函数;2 - 47继承实例继承实例 class Bird class Bird public:public: virtual void fly(); / virtual void fly(); / 鸟会飞鸟会飞 . . ;void error(const string &msg); / void error(const string &msg); / 在别处定义在别处定义 class Penguin: publi

22、c Bird class Penguin: public Bird public: public: virtual void fly() virtual void fly() error(Penguins cant fly!); error(Penguins cant fly!); . . ; ;所有鸟都会飞,所有鸟都会飞,企鹅是鸟,企鹅不会飞,企鹅是鸟,企鹅不会飞,让企鹅飞是错误的。让企鹅飞是错误的。继承不是copy&paste2 - 48内容线索内容线索面向对象方法学概述面向对象的概念面向对象的概念抽象抽象封装封装继承继承多态多态面向对象建模2 - 495 5、多态性、多态性(Po

23、lymorphism)(Polymorphism) “工作!” 对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为2 - 50JavaJava中的方法覆盖中的方法覆盖例一例一abstract class Human public abstract String greet ();class American extends Human public String greet() return Hello; class Spaniard extends Human public String greet() return Buenos Dias; cla

24、ss Converse public static void main (String args) Human h = new American();System.out.println(American greeting: +h.greet();h = new Spaniard();System.out.println(Spanish greeting: + h.greet(); 2 - 51JavaJava中的方法覆盖中的方法覆盖例二例二class Employee private int vacationDays = 10; protected int getVacation() ret

25、urn vacationDays; class Manager extends Employee public int getVacation() return super.getVacation() + 5; 2 - 52JavaJava中的方法重载中的方法重载一个类中不同的方法具有不同的方法签名()方法签名包括:方法名和参数列表class StaticTest public static int aMethod(int x, int y) return x/y; public static int aMethod(int x, int y, int z) return x/z; class

26、 StaticTestDescendant extends StaticTest public static int aMethod(int x) return x*2; 子类又实现了另一个版本的aMethod()方法父类定义了两个不同的aMethod()方法2 - 53课外阅读:课外阅读:C+C+中方法覆盖中方法覆盖同一方法,不同的子类有不同的实现ShapefillpatDrawCircleradiusDrawRectangleLength,widthDraw/Shapevirtual void Draw(void)setfillstyle(fillpat);/Circlevirtual v

27、oid Draw(void)Shape:Draw();DrawCircle(x, y, radius);/Rectanglevirtual void Draw(void) Shape:Draw(); DrawRectangle(x, y, length, width);void main(void)Shape *one, *two;one=new Circle(1,1,0.5,4);two=new Rectangle(2,2,0.5,0.5,6);one-Draw();two-Draw();动态联编(绑定)动态联编(绑定)VB示例示例2 - 54课外阅读:课外阅读: C+C+中的重载中的重载函

28、数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字class Studentboolean print();void print(String fileName);void print(int detailLevel);void print(int detailLevel, String fileName); int print(String reportTitle, int maxPages);2 - 55课外阅读:课外阅读: C+ C+中的重载中的重载class CPoint int x, y ;public: CPoint operator + ( CPoint p

29、1);CPoint CPoint : operator + (CPoint p1) CPoint p; p.x = x + p1.x; p.y = y + p1.y; return p;运算符重载:是指同一个运算符可以施加于不同类型的操作数上面2 - 56多态的优点多态的优点利用多态性,用户能够发送一般形式的消息,而将所有的实现细节都留给接受消息的对象优点多态性机制增加了面向对象软件系统的灵活性,进一步减少了信息冗余显著提高软件的可重用性和可扩展性2 - 57内容小结内容小结面向对象编程概念主要包括1) 抽象(Abstraction)2) 封装(Encapsulation)3) 继承(Inhe

30、ritance)4) 多态(Polymorphism)2 - 58内容线索内容线索面向对象方法学概述面向对象的概念面向对象建模面向对象建模功能模型对象模型动态模型3种模型之间的关系2 - 59面向对象建模面向对象建模三种模型功能模型:描述系统的功能做什么对象模型:描述系统的数据结构对谁做动态模型:描述系统的控制结构何时做对象模型始终都是最重要、最基本、最核心的对象模型始终都是最重要、最基本、最核心的2 - 60内容线索内容线索面向对象方法学概述面向对象的概念面向对象建模面向对象建模对象模型对象模型动态模型动态模型功能模型3种模型之间的关系2 - 61对象模型对象模型对象模型表示静态的、结构化的

31、系统的数据性质它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构通常使用类图表示对象模型类图描述类及类与类之间的静态关系2 - 622 - 63动态模型动态模型回顾:系统状态图通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为类的状态图通过描绘对象的状态及引起对象状态转换的事件,来表示对象的行为2 - 64AbstractEncapsulationPolymorphismInheritance回顾回顾n面向对象建模v对象建模:描述系统的数据结构,“对谁做”v动态建模:描述系统的控制结构,“何时做”v功能建模:描述系统的功能,“做什么”2 - 65内容线索内容

32、线索面向对象方法学概述面向对象的概念面向对象建模面向对象建模对象模型动态模型功能模型功能模型3种模型之间的关系2 - 66功能模型功能模型功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么数据流图用例图(Use Case Diagram)用例模型描述的是外部行为者(actor)所理解的系统功能一幅用例图包含的模型元素有系统行为者用例:脚本用例之间的关系2 - 67售货供货顾客供货人收银员取货款自动售货机系统自动售货机系统用例图自动售货机系统用例图1、?2、?3、?4、?系统用例(Use Case)行为者(Actor)通信联系2 - 68用例建模用例建模用例模型由若干用例图组成创建用

33、例模型的工作1、定义系统2、寻找行为者和用例3、描述用例4、定义用例之间的关系5、确认模型2 - 69示例:订单处理系统示例:订单处理系统问题陈述公司从各种供应商购买产品,然后再推销每季度向客户发布一次产品目录客户以提交商品列表并向公司付费的方式购买商品,公司填写订单并把商品送到客户所在的地址订单处理软件记录从收到订单直到商品被运送到客户的整个过程运输公司提供快捷服务,以最快、最有效的方法来运送客户订购的商品客户可能退货,要求重新订货,但有时要付费2 - 70示例:订单处理系统示例:订单处理系统假设一种电子接口,如Web可能对某些客户更合适希望使用多家运输公司和多种保险方法2 - 711. 1

34、. 确定系统边界确定系统边界系统中有什么?系统中有什么? 必须创建它们系统外有什么?系统外有什么? 不需要创建,但必须考虑与它们的接口确定行为者(Actor) :角色/参与者确定用例(Use-case)简述行为者和用例2 - 72确定行为者确定行为者行为者总在系统外,不是系统的一部分可能的行为者谁使用系统谁维护系统谁启动或关闭系统谁从系统获取信息谁为系统提供信息是否有事情自动在预计时间发生2 - 73确定行为者确定行为者客户客户代表(公司)运输公司供应商客户客户代表订单处理执行者订单处理执行者供应商运输公司2 - 74确定用例确定用例可能的用例行为者希望系统提供什么功能行为者要创建、读取、更新

35、或删除(CRUD)什么信息系统给行为者通知什么信息系统需要从行为者那得到什么信息所有的用例描述从所有的用例描述从行为者行为者看到的系统全部功能看到的系统全部功能2 - 75确定用例确定用例行为者行为者想要系统提供的功能想要系统提供的功能客户客户客户代表客户代表运输公司运输公司供应商供应商订购货物订购货物检查订单状态检查订单状态获取产品目录获取产品目录取消订单取消订单退货退货记录投诉记录投诉运送货物运送货物发送货物发送货物同客户同客户2 - 76确定用例确定用例订单处理用例图客户代表客户代表订购货物订购货物获取订单状态获取订单状态获取目录获取目录取消订单取消订单退货退货运送货物运送货物发送货物发

36、送货物订单处理订单处理客户客户运输公司运输公司供应商供应商记录投诉记录投诉2 - 77确定用例确定用例是否需要直接与供应商接口库存系统获取产品信息更新商品数量接受退订项记账系统更新帐目职员计算邮费打印信件标签2 - 78确定用例确定用例订购货物订购货物获取订单状态获取订单状态获取目录获取目录取消订单取消订单退货退货运送货物运送货物更新商品数量更新商品数量订单处理订单处理客户客户运输公司运输公司客户代表客户代表库存系统库存系统记账系统记账系统 职员职员获取产品信息获取产品信息接受退订货接受退订货更新帐目更新帐目计算邮费计算邮费打印信件标签打印信件标签记录投诉记录投诉2 - 79确定用例确定用例处

37、理时间每季度向客户发布一次产品目录是否有事情自动在预计时间发生季度末发送目录 客户发送目录季度末发送目录 客户2 - 80简述行为者简述行为者行为者描述客户:从公司订购商品的人客户代表:公司处理客户请求的雇员职员:公司负责包装订货的雇员运输公司:联邦快递等库存系统:管理公司库存的软件记账系统:记录公司帐目的软件2 - 81简述用例简述用例订单处理用例描述订购货物:客户建立一个商品订单,并为那些商品付费运送包裹:运输公司将商品运送到客户手中2 - 822. 2. 用例描述用例描述事件流事件流是Use Case完成需求的行为的事件的描述事件流是指示系统要完成什么,而不是如何完成事件流的表示用文档表

38、示,也可以作为附加文档添加在Rose中事件流包括基本路径可选路径描述完成用例功能需要的步骤描述完成用例功能需要的步骤2 - 83基本路径基本路径基本路径:基本路径:当一切运转正常时,使用用当一切运转正常时,使用用例的步骤例的步骤(快乐场景快乐场景)订购货物基本路径订购货物基本路径1,当客户选择订购货物时用例开始,当客户选择订购货物时用例开始2,客户输入自己的姓名和地址,客户输入自己的姓名和地址3,客户输入产品代码,客户输入产品代码a) 系统显示产品描述和价格系统显示产品描述和价格b) 系统在客户订单中添加该产品的价格系统在客户订单中添加该产品的价格循环结束循环结束4,客户输入信用卡支付信息,客

39、户输入信用卡支付信息5,客户选择提交,客户选择提交6,系统检验输入的信息,把该订单作为未完成的订单保存,同,系统检验输入的信息,把该订单作为未完成的订单保存,同时向记账系统提供支付信息时向记账系统提供支付信息7,支付确认后,订单也被标记为已确认,返回客户一个订单,支付确认后,订单也被标记为已确认,返回客户一个订单ID,用例结束用例结束2 - 84可选路径可选路径可选路径:可选路径:不同于基本路径而允许不不同于基本路径而允许不同的事件序列的路径。客户可以从用同的事件序列的路径。客户可以从用例的若干事情中挑选一件来做。例的若干事情中挑选一件来做。订购货物可选路径订购货物可选路径寻找可选路径该点上是

40、否有别的活动?该点上有无可能出错?有无随时可能发生的行为?在选择提交(第在选择提交(第5步)前的任何时候,客户可选择步)前的任何时候,客户可选择“取消取消”。这次订购没被保存,用例结束。这次订购没被保存,用例结束。在第在第6步,如果有任何不正确的信息,系统提示客步,如果有任何不正确的信息,系统提示客户修改这些信息。户修改这些信息。在第在第7步,如果支付没被确认,系统将提示客户去步,如果支付没被确认,系统将提示客户去修正支付信息或取消。如果客户选择修正信息,就修正支付信息或取消。如果客户选择修正信息,就回到基本路径的第回到基本路径的第4步,否则用例结束。步,否则用例结束。2 - 85事件流事件流

41、联合方法方法1直接将可选路径插入到基本路径,并重新编号方法2在基本路径段落中添加可选项方法3单独使用可选路径部分联合基本路径和可选路径2 - 86 采用的是第几种联合方法?用例描述模板用例描述模板前置条件前置条件:一个合法的客户已登录到系统事件流:事件流:基本路径1,当客户选择订购货物时,用例开始2,客户输入自己的姓名和地址 可选路径在选择提交(第5步)前的任何时候,客户可选择“取消”。这次订购没被保存,用例结束。在第6步,如果有任何不正确的信息,系统提示客户修改这些信息后置条件:后置条件:如果订单没有被取消,它将被保存在系统里,并做上标记订购货物用例描述订购货物用例描述如果采用其他两种方法如

42、何描述?2 - 87通信关联通信关联谁开始用例行为者、系统或两者都有 客户订购货物 客户记录投诉 客户支持经理更新帐目 记账系统2 - 883. 3. 细节层次细节层次应考虑的问题谁需要阅读和审批该文档?谁使用该文档?我们需要这个文档做什么?用例细化到何种程度恰当?2 - 89细节层次细节层次1,当客户选择订购货物时用例开始,当客户选择订购货物时用例开始2,客户输入自己的姓名和地址,客户输入自己的姓名和地址3,如果客户键入邮编,系统提供城市和区,如果客户键入邮编,系统提供城市和区4,客户键入想要订购的产品代码,客户键入想要订购的产品代码5,对每一个键入的产品代码,对每一个键入的产品代码a) 系

43、统显示产品描述和价格系统显示产品描述和价格b) 系统把产品价格加入总价中系统把产品价格加入总价中循环结束循环结束6,客户输入信用卡支付信息,客户输入信用卡支付信息7,客户选择提交,客户选择提交8,系统检验信息,把该订单作为未完成的订单保存,同时向记账系统提供支付,系统检验信息,把该订单作为未完成的订单保存,同时向记账系统提供支付信息信息9,支付确认后,订单也被标记为已确认,返回客户一个订单,支付确认后,订单也被标记为已确认,返回客户一个订单ID,用例结束,用例结束订购货物用例订购货物用例-行为者角度行为者角度2 - 90细节层次细节层次订购货物用例订购货物用例-开发者角度开发者角度3,如果客户

44、键入邮编,系统使用,如果客户键入邮编,系统使用“邮编在线邮编在线” 从邮局得到城市名和区名,系统从邮局得到城市名和区名,系统把城市名和区名加到订单中把城市名和区名加到订单中4,客户键入想要订购的产品代码,客户键入想要订购的产品代码5,对每一个键入的产品代码,对每一个键入的产品代码a) 系统使用产品代码查询库存系统,得到产品描述和价格。系统显示描述和系统使用产品代码查询库存系统,得到产品描述和价格。系统显示描述和价格,并把描述和价格加入订单价格,并把描述和价格加入订单b) 系统把产品价格加入总价中系统把产品价格加入总价中8,系统确信所有需要的信息都已输入,它必须包括一个完整的发货地址、信用,系统

45、确信所有需要的信息都已输入,它必须包括一个完整的发货地址、信用卡信息和至少一种产品,把该订单作为未完成的订单保存,同时向记账系统提供卡信息和至少一种产品,把该订单作为未完成的订单保存,同时向记账系统提供支付信息支付信息9,记账系统计算税和送货数量,并返回成功接受支付的信息及订单总量。订单,记账系统计算税和送货数量,并返回成功接受支付的信息及订单总量。订单也被标记为已确认,返回客户一个订单也被标记为已确认,返回客户一个订单ID,用例结束,用例结束如果客户键入邮编,系统提供城市和区如果客户键入邮编,系统提供城市和区系统显示产品描述和价格系统显示产品描述和价格系统检验信息,把该订单作为未完成的订单保

46、存,系统检验信息,把该订单作为未完成的订单保存,同时向记账系统提供支付信息同时向记账系统提供支付信息支付确认后,订单也被标记为已确认,支付确认后,订单也被标记为已确认,返回客户一个订单返回客户一个订单ID,用例结束,用例结束2 - 91Rational RoseRational Rose中用例描述中用例描述2 - 924. 4. 确定用例之间的关系确定用例之间的关系包含(Include)扩展(Extend)继承(Inheritance)2 - 93包含包含多个用例可以重用的行为段。多个用例可以重用的行为段。包含关系是无条件的:如果用例实例到达基本包含关系是无条件的:如果用例实例到达基本用例中定

47、义了包含关系的位置,就总会执行包用例中定义了包含关系的位置,就总会执行包含含。搜索订单用例搜索订单用例1,当客户键入订单ID客户ID或客户姓名时用例开始2,客户点击Find3,如果客户键入订单IDa) 系统显示订单,用例结束4,如果客户键入客户名或客户IDa) 系统返回当前客户的所有订单表b) 客户在这个列表中选择一个订单c) 系统显示这个订单,用例结束2 - 94包含包含1,当客户键入取消一个订单,用例开始2,包含搜索订单包含搜索订单3,如果这个订单状态被确认取消订单用例取消订单用例 客户取消订单搜索订单 包含2 - 95用于有条件地扩展已有用例的行为,这是一种在不改变原始用例的情况下增加用

48、例行为的方法。扩展扩展1,系统得到产品的销售折扣信息时,用例开始2,系统在订单上显示折扣3,系统计算折扣数4, 系统从订购总价格中减去折扣,用例结束 每季度销售价格每季度销售价格 老顾客打折老顾客打折1,系统得到顾客折扣信息时,用例开始2,系统在订单上显示折扣3,系统计算折扣数4, 系统从订购总价格中减去折扣,用例结束2 - 96扩展扩展订购货物扩展点销售项:第5步前特殊顾客:所有产品输入后每季度销售价格老顾客打折扩展(特殊顾客)在特殊顾客列表中的顾客扩展(销售项)每季度销售列表中的产品2 - 97继承继承继承可以用于行为者和用例。继承是一种继承可以用于行为者和用例。继承是一种“种种属属”关系,其中一个元素是另一个的一种。关系,其中一个元素是另一个的一种。订购货物获取订单状态获取目录客户客户代表销售报表电话订购

温馨提示

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

评论

0/150

提交评论