信息系统分析与设计案例201X-9ppt课件

上传人:资****亨 文档编号:132870644 上传时间:2020-05-21 格式:PPT 页数:62 大小:2.11MB
返回 下载 相关 举报
信息系统分析与设计案例201X-9ppt课件_第1页
第1页 / 共62页
信息系统分析与设计案例201X-9ppt课件_第2页
第2页 / 共62页
信息系统分析与设计案例201X-9ppt课件_第3页
第3页 / 共62页
信息系统分析与设计案例201X-9ppt课件_第4页
第4页 / 共62页
信息系统分析与设计案例201X-9ppt课件_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《信息系统分析与设计案例201X-9ppt课件》由会员分享,可在线阅读,更多相关《信息系统分析与设计案例201X-9ppt课件(62页珍藏版)》请在金锄头文库上搜索。

1、 课程案例一 内容9 编程 简介实现类图编程序列图 简介 1 目的这部分的内容不是给你在编程方面的快速课程 而是为了演示我们已经建立的一些模型是如何映射到代码 我们不解释每条指令 代码的讨论涉及它同类图和序列图的关系 对于类图 我们讨论哪些行代码是实现类 类的属性 方法和关系的 我们利用序列图作为线路图来指导我们实现程序指令被执行的序列 其它的代码讨论局限于解释没有在早期模型中表示的定义特性 简介 2 内容系统用Java语言实现 它也被我们已经在建立UML模型时使用的CASE工具支持 为了简洁 产生的代码仅仅是Wheels系统实现的部分 Issuebike 用例的一个场景 代码局限于处理一位顾

2、客租借一辆自行车 这意味着一些方法 例如Payment的方法calculateTotalPayment 似乎是无用的 因为它是设计用来处理多辆自行车租赁的 因为我们要求代码是为了表述的目的 因而简单代码比全部功能的代码更重要 简介 3 方法诸如引用其它类的细节已经添加到类 因此 我们忽略了在分析模型中表示的一些属性和方法 这允许我们保持图表在可管理的大小内 从现在起我们称方法methods而不是操作operations 这在此阶段是合适的 因为程序员是关注实现一个过程的代码部分 在早期我们谈论操作而不是方法 因为分析和设计活动更关注过程的界面 而不是它的实现 实现类图 1 类图实现在图9 1中

3、的实现类图最初是根据代码由CASE工具产生的 它表示了完整的实现细节 即属性 方法参数 带类型和返回值 以及方法返还类型的可见性 类型和初始值 为了生成类图的目的 即忽略gets和sets方法 简单地设置或返回属性的值 例如 Customer有三个get方法 getCustomerNumber getName 和getPostcode 它们都没有在类图中显示 实现类图 2 起始类 StartUp 类StartUp是一个新类 Java应用必须总有一个main 方法 当Java应用运行时 它总是第一个执行的方法 在包括main 的Java每个方法必须在一个类中 因此 我们建立StartUp类的原因

4、部分是为了放置main StartUp建立的另一个原因是模拟 如果这部分代码是带有欢迎菜单和其它显示界面层的整个可执行系统的一部分时 它模拟将会发生什么 这个类有效地模拟了在图9 2中序列图建模的接待员的功能 四个方法调用 showBikeDetails calculateCost newCust 和calcTotals 原来由Receptionist发送到 IssueBikeUI 现在由StartUp发送 实现类图 3 IssueBikeUI类这个类结合了控制类和界面类的功能 它的前四个属性chosenBike customer payment和hire都被用来存放IssueBikeUI需要

5、交互的对象的对象标识符 或引用 这些属性被用来实现在类图中表示的由IssueBikeUI发出的单向导航路径 最后的属性numberOfDays存放租借的时间长短 当calculateCost numDays 被调用时它被设置 随后被用作Hire产生的参数 实现类图 4 Payment类这是同分析模型中建立的Payment类相同的实体类 仅仅是为了简单 省略了一些属性 属性 Customer用来存放对一个Customer对象的引用 这允许每一个Payment对象被联接到正确的Customer对象 它实现了在类图中表示的到Customer类的单向导航 paymentId被用来存放惟一标识每个 Pa

6、yment的数字 这个数字是一个整数 不像一个引用 或对象标识符 仅被计算机使用 该数字能被人阅读和理解 实现类图 5 Payment类 续 属性 续 paymentCount是一个类变量 其允许应用赋值一个数字 该数字惟一标识每个 Payment paymentId 每次一个新的Payment对象产生 它就被更新 Payment cust Customer 是一个构造器 当调用时 它产生一个新的Payment对象 并将其关联到 Customer引用 该引用被作为参数传递 calculateTotalPayment hire Hire 设计用于为一位租借多辆自行车的顾客计算出总的费用 因为在这

7、个实现中 仅有一位顾客租借一辆自行车的情况 因此 本方法仅部分实现 calculateTotalPayment 调用私有方法issueReceipt issueReceipt hire Hire 打印一张收据 注意在类图中这个方法前面是一个负号 表示其是一个私有方法 这意味着它仅能被Payment类的实例所使用 实现类图 6 Bike类Bike类结合了Bike实体类 以及一个有所有 Bike标识符的清单的集合类 为了简化 我们已经限制了Bike属性仅有deposit rate和bikeNumber 方法Methods Bike dep int rat int num int 是一个构造器 当调

8、用时 它产生一个新的Bike对象 并将其属性设置成传递的参数值 findBikeByNumber bikeNum int 是集合类功能的一部分 它在表 Bikes中搜寻 直到找到一个带有相同自行车编号的自行车 showDetail 用来显示由findBikeByNumber 发现的自行车的细节calculateCost numberOfDays int 计算出自行车租借一段时间的费用 实现类图 7 Customer类Customer类是同分析模型中定义相同的实体类 同Payment对象类似 每一个 Customer有一个惟一的customerId 其是由类变量customerCount产生的

9、为了简单 我们利用邮政编码代替完整的地址 虽然在代码中有三个get方法 但在这个模型中仅表示的方法是一个构造器 Hire类Hire类是同分析模型中定义相同的实体类 同Payment和Customer对象类似 每一个 Hire有一个惟一的hireId 其是由类变量hireCount产生的 属性customer和bike被用来存放对Customer和Bike对象的引用 虽然在它有四个get方法 但在图中仅表示的方法是一个构造器 编程 1 StartUp类StartUp类的类图在图9 3中表示 StartUp类的代码在图9 4中表示 代码的行01声明StartUp是在一个名称为bikeshop的包内

10、 如同在代码中所有的类一样 StartUp类声明是在行05 在类中的每一内容必须用波形括号 括起来 这个括号告诉编译器类的开始和结束的地方 左括号在行05 右括号在行27 main 方法是在行07声明 这个方法的所有程序指令被放在第二个波形括号中 左括号在行07 右括号在行26 在main 中的第一条指令产生一个IssueBikeUI对象ui 行13 其后四条指令是对IssueBikeUI对象的调用 这四条指令实现在 Issuebike 用例场景中的主要步骤 编程 2 IssueBikeUI类IssueBikeUI类的类图在图9 5中表示 其代码在图9 6中表示 IssueBikeUI类在行3

11、4声明属性 也被称为方法的变量 37 41声明 showBikeDetails bikeNum int void方法在行42声明 这个方法调用在Bike类中的findBikeByNumber bikeNum findBikeByNumber bikeNum 反复搜寻它的bike对象数组 直到它发现一个匹配的自行车编号 一个同参数值bikeNum匹配的 匹配自行车的引用 对象标识符 被返回 并被赋给属性chosenBike 这个引用然后被用来传送消息showDetails 到匹配的自行车 编程 3 IssueBikeUI类 续 其余的方法声明是 calculateCost numDays int

12、 void在行50 createCustomer name String postcode String tel int void在行57 calculateTotalPayment void在行64注意所有这些方法是公有的 public 即它们能被任何对象调用 方法createCustomer 实际上产生一个Hire对象 一个Customer对象和一个Payment对象 编程 4 Bike类Bike类的类图在图9 7中表示 其代码在图9 8中表示 Bike类在行71中声明一个五个Bike对象的数组bikeList在行74中声明 属性 也被称作成员变量 在行76 78中声明Bike构造器在行9

13、1中声明 在行93 95中 成员变量被设置成传递给构造器的参数值 有三个get方法 getDeposit 在行98声明getRate 在行102中声明getBikeNumber 在行106中声明 编程 5 Bike类 续 方法findBikeByNumber 在行110中声明 这个方法在数组 Bikes中搜寻直到发现一个自行车带有同bikeNum 作为参数传递的 相匹配的值 当一个匹配发现后 该 Bike被返回到调用的方法 注意这个方法 findBikeByNumber bikeNum int Bike的定义 其定义了必须返回一个Bike引用 方法showDetails 在行128声明 这个方

14、法显示传送给它的 Bike的bike编号 押金和每天的租金 calculateCost 在行135中声明 这个方法计算租借传送给它的 Bike的总费用 序列图 1 序列图在编程中的作用对于新手 试图追寻面向对象程序中执行序列是非常困惑的 代码的结构式用类来表示 但执行的序列是由用例来表示 这一结果是执行序列在整个代码清单中跳转 现在我们将 Issuebike 用例场景的序列图同实现它的代码进行比较 我们将序列图中的消息同实现它的代码行进行映射 按这种方式 我们遵循计算机执行代码的序列 这证明了序列图作为引导我们阅读代码的线路图的用处 序列图 2 序列图在编程中的作用 续1 我们将要使用的序列图

15、在图9 9中表示 完整的代码在图9 10中列出 表9 1将每一序列的代码消息映射到实现它的代码行 表9 1表示 栏1 序列图中的消息栏2 实现消息的代码行的行号栏3 发送消息的对象或类栏4 接受消息的对象或类 序列图 3 序列图在编程中的作用 续2 Java应用总是从main 方法的执行开始main 方法在StartUp类中 代码行07序列图从main 方法发送的第一个消息开始 在行13 即IssueBikeUIui newIssueBikeUII 这产生一个新的 IssueBikeUI 下一条消息showBikeDetails bikeNum 在行16 是由StartUp发送到新的 Issu

16、eBikeUI 为了找出下一步发生什么 我们需要找到在IssueBikeUI类中的方法showBikeDetails bikeNum 行42 然后跟随实现这个方法的代码直到我们发现下一条消息 或方法调用 下一条消息是findBikeByNumber bikeNum 在44行的指令chosenBike Bike findBikeByNumber bikeNum 中 这个调用是从 IssueBikeUI到Bike类 序列图 4 序列图在编程中的作用 续3 然后我们到Bike类 发现方法findBikeByNumber bikeNum 并跟随实现它的代码行 直到我们遇到下一个方法调用 这个方法findBikeByNumber bikeNum 是在110行 下一个方法调用时在116行 在那里getBikeNumber 消息被传送到在bikeList数组中的每一个 Bikes 这是一个反射或自引用消息 每一 Bike的编号依次同bikeNum的值比较 当一个匹配的 Bike被发现 对该 Bike的引用被返回给 IssueBikeUI 序列图 5 序列图在编程中的作用 续4 随着返回语句 控制被返

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号