Java语言程序设计 教学课件 ppt 作者 于红 第13章_编程实例

上传人:E**** 文档编号:89243399 上传时间:2019-05-21 格式:PPT 页数:163 大小:400.51KB
返回 下载 相关 举报
Java语言程序设计 教学课件 ppt 作者 于红 第13章_编程实例_第1页
第1页 / 共163页
Java语言程序设计 教学课件 ppt 作者 于红 第13章_编程实例_第2页
第2页 / 共163页
Java语言程序设计 教学课件 ppt 作者 于红 第13章_编程实例_第3页
第3页 / 共163页
Java语言程序设计 教学课件 ppt 作者 于红 第13章_编程实例_第4页
第4页 / 共163页
Java语言程序设计 教学课件 ppt 作者 于红 第13章_编程实例_第5页
第5页 / 共163页
点击查看更多>>
资源描述

《Java语言程序设计 教学课件 ppt 作者 于红 第13章_编程实例》由会员分享,可在线阅读,更多相关《Java语言程序设计 教学课件 ppt 作者 于红 第13章_编程实例(163页珍藏版)》请在金锄头文库上搜索。

1、第13章 编程实例,本章的目标是通过适当的实例,阐述用前述各章知识解决问题的方法和技术。为便于读者将主要精力放到Java知识的运用上,选择相对简单的问题,精简需求,避开复杂的业务逻辑分析。同时,为了让读者能深入理解各个知识点应用上的差别,在设计和实现方面,给出不同的版本,分别针对不同的物理约束条件进行,以求对应教材中不同阶段的知识点。在每个版本的设计方案中,仅给出对应知识层次的一种合理的解决方案,不求利用对应章节的全部技术。 本章的很多内容,给出的不是最终的实现,而是分析思路、设计方案、API文档,实现要点会在这些内容中体现出来,最终的实现留给读者。 阅读本章内容的过程,建议与自主完成分析设计

2、实现的过程交替进行。除第1、2、8节略有特殊外,每节基本上包括需求描述、分析与设计要点、部分实现技术示例三部分。读者可以先看需求,然后自己分析形成设计方案,在完成或无法完成的情况下阅读参考书中的内容,实现的环节最好也采用类似方式。,13.1 基本需求描述与分析设计方案 1基本需求 (1) 功能概述 针对一个管理多种材料的库存问题,设计一个示意性的库存管理系统。 库存管理的基本工作就是记录每一笔材料的入库、出库信息,以及保持一个实时更新的材料库存量清单。因此,系统管理的数据主要包括库存清单和入库、出库流水账。库存清单记录每种材料的最新库存量,流水账中记录每一笔入库、出库数据。,在库存清单中,假设

3、材料名称不重复,需要记录每种材料的名称及其目前库存的数量,为方便查找,按照材料名称升序排列;在流水账中记录入库时间、出库时间、材料名称、数量,入库、出库类型。 入库时在记录流水账的同时,在库存清单中更新该材料的最新库存量,如果是新材料就要建立该材料的库存记录;出库时在记录流水账的同时,在库存清单中更新该材料的最新库存量,如果材料出库完毕(库存量为0)则删除其库存记录。 系统还要根据使用者的请求输出各种明细清单,详见下面的界面设计需求。,(2) 界面设计要求 1)系统与用户的交互采用控制台输入输出的方式,采用如下的提示符: www: 2)系统能够响应如下含义的命令: help -列出系统支持的全

4、部命令。 help 命令 -显示特定命令的帮助信息。 list -列出现有的库存清单,每行显示一种库存材料,格式为“材料名称t数量“。 increase 材料名称 数量 -入库材料命令。 decrease 材料名称 数量 -出库材料命令。,history -列出本月每日库存入出量统计。每行数据为一天内某种材料的入库总量和出库总量,格式为“日期t材料名称t入库总量t出库总量“。要求每天有入库和出库的材料,都会有且只有一条信息,输出信息首先按照日期顺序输出,每天的信息输出按照材料名称顺序。 detail_history -列出24小时内详细的出、入库操作清单,每行数据的格式为“日期 时间t材料名称

5、t出入库数量“,其中入库数量显示为正值、出库数量显示为负值。 quit -退出控制台交互方式结束程序。 3)输入无法识别的命令,按输入help命令处理;输入的命令参数格式有错,显示该命令的帮助。 4)对于没有要求输出结果的命令,这里有increase和decrease,需要有成功或失败的提示,保证使用者获得良好的用户体验。,2需求分析 这里按照简单的分析模式基于事物/事务分析的方式、层次化的认知梳理,整理出对系统的认识。 (1) 功能需求分析 1)基于功能概述发现系统中的事物层次如下: 库存管理系统是最顶级的事物,即系统本身,因而针对一个库存管理项目系统仅有一个实例; 库存清单事物是系统构成的

6、一个部分,实际上是库存管理系统的管理对象,一个库存管理系统中仅有一个实例; 流水账事物是系统构成的另一个部分,一个库存管理系统中仅有一个实例; 库存清单中有0条或n条库存记录,因而库存记录事物的实例数量不定,但每个实例与材料名称一一对应,实例排列按照材料名称升序进行; 流水账中有0条或n条入/出库记录,因而入/出库记录事物的实例数量不定,实例排列按照发生的时间升序进行,不必与时间唯一对应。,2)事物内部的简单属性: 库存清单中需要描述库存记录条数,流水账中需要表示入/出库记录数量; 库存记录中包括材料名称和数量; 入/出库记录中有时间、材料名称、数量、入/出类型。 3)基于功能概述发现系统中的

7、基本事务过程如下: 入库时顺序增加一条入库流水记录,同时更新库存清单,更新库存清单只涉及一条记录,可能修改已有库存记录,也可能插入新建立的记录;此操作一定成功,输入命令不合理除外; 出库时顺序增加一条出库流水记录,同时更新库存清单,更新库存清单只涉及一条记录,可能修改已有库存记录,也可能删除它;此操作可能失败; 为了保持系统数据的完整性,以上两种操作的任何一个必须是原子操作,同时有必要在操作期内独占整个库存系统。,(2) 界面需求分析 1)用户界面为文本交互方式(输入输出皆为文本)。 2) 从交互角度看系统的整体工作流程,工作模式为输出提示、接受输入命令、命令解析执行的循环;此流程为整个库存系

8、统的过程之一。 3) 其中quit命令将终止系统运行,打破上述循环工作模式。 4) 工作流程中最复杂的就是命令解析与执行,但命令有对有错,需要按照约定语法识别,错了对了都按照指定的逻辑安排过程;此处涉及多个过程,其中入库和出库执行时对应功能需求分析中的两个基本过程。 5)标准命令有基本语法、说明等信息,系统多处使用它们,需要统一安排。这些数据可以安排在系统中作为部分属性;也可以包装成一个事物,在系统中包含其一个实例。 6) 每条命令触发系统的一个处理过程这相当于面向对象分析的用例,具体分析见后面的第(4)条。,(3) 基本结论之一分析类 从以上的分析,可以得到基本的分析类及其主要成员变量,列表

9、如下: 1)库存管理系统库存清单、流水账; 2)库存清单库存记录的聚集,库存记录数量; 3)流水账入/出库流水记录的聚集,流水记录数量; 4)库存记录材料名称、数量; 5)入/出库流水记录时间、材料名称、数量、记录类型; 6)命令信息命令动词、语法、注解。 (4) 基本结论之二关键事务方法 1)实现基本工作模式的方法代表着库存系统的核心流程,因而适合安排在库存管理系统类中,并且是一个公共方法。 2)命令解析执行功能是一个复杂的分支结构,应该独立成内部方法,安排在库存管理系统类中。,3)入库操作是系统的主要事务之一,同时涉及库存清单和流水账两个对象的状态变化,因而在库存管理系统、库存清单、流水账

10、三个类中都要安排有方法,并且库存管理系统类中的方法为内部的,它调度库存清单、流水账两个类中的另外两个公共方法。 4)出库操作也是系统的主要事务之一,同时涉及库存清单和流水账两个对象的状态变化,其安排策略同上。 5)history操作不改变系统的状态,却是系统的重要查询功能,使用流水账对象的数据,因而可以安排成流水账类的公共方法。 6)detail_history命令的特征同history完全一致。 7)list命令与history命令的特征相似,但是使用的对象是库存清单。 8)help命令的处理不改变系统的状态,仅使用命令信息对象,所以可以定义成命令信息类的公共方法。 9)quit命令的处理将

11、改变整个系统的状态,因而要定义成库存管理系统类的一个内部方法,由于是改变整个系统的状态,因而也将改变系统中库存清单和流水账两个可变对象的状态,按理说库存清单和流水账两个类中应该建立对应退出处理的公共方法。同对象的析构操作相联系,这里所要建立的逻辑就是析构逻辑,但不必是析构方法。,(5) 基本文档分析类API描述 类图作为面向对象分析文档的首要展示形式,其特点适合于类的简要信息展示以及类间的主要关系展示,除了展示之外,工程设计工具中的类图设计过程中需要填写大量附属信息,通过这些信息最终可以自动生成完整的API代码与相关文档,因而本文中直接使用API文档展示分析或设计结果。 类的API文档的展示按

12、理是可以不列出私有成员,本书中适当进行私有成员的展示主要是为了体现关键的分析设计方案。,以下这些类数量不多,关联程度较强,因而安排在同一个包中,命名为storage。 1)库存管理系统类StorageSystem public class StorageSystem private StorageList myStorageList; /库存清单 private HistoryList myHistoryList; /流水账 /主控方法:核心的事务过程,循环地处理发生的各种业务;也是系统中唯一的外部调用控制流,将来线程安全处理时候需要考虑的控制流。控制流程是一个几乎不停的三段循环输出提示符、获

13、取命令、命令处理。 public void mainProc();,/统一的命令处理方法:可以处理所有的命令,c=命令;private的理由-仅需内部调用。 private void commandProc(String c); /quit命令处理方法。 private void quit(); /increase命令处理方法:m=材料名、n=数量。 private void increase(String m, int n); /decrease命令处理方法:m=材料名、n=数量。 private void decrease(String m, int n); ,2)库存清单类Storage

14、List public class StorageList /此种成员变量定义是库存清单的实现方式之一。 private StorageRecord myList; /库存记录数组,按名字从小到大顺序排列 private int count=0; /库存记录条数 /list命令处理方法。 public void list(); /入库方法,按照一条入库信息修改库存清单:m=材料名称,n=数量。 public void addItem(String m, int n); /出库方法,按照一条出库信息修改库存清单:m=材料名称,n=数量。 /返回:1=没有库存,2=库存不足,0=成功。 publi

15、c int subItem(String m, int n); ,3)流水账类HistoryList public class HistoryList /此种成员变量定义是流水账的实现方式之一。 private HistoryRecord myList; /流水账记录数组 private int count=0; /流水账记录条数 /记录一条流水账:m=材料名称,n=数量,入库时候n0,出库时候n0。 /返回:true=成功,false=失败。 public boolean addItem(String m, int n); /history命令处理方法。 public void histor

16、y(); /detail_history命令处理方法。 public void detail_history(); ,4)库存记录类StorageRecord public class StorageRecord String name; /材料名称 int count; /库存数量 public StorageRecord(String n, int c); public String toString(); 5)入出库流水记录类HistoryRecord public class HistoryRecord String dt; /日期时间,格式:“yyyy-MM-dd hh:mm:ss“ String name; /材料名称 int count; /数量,入库时候n0,出库时候n0 public HistoryRecord(String n, int c); pub

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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