




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用java开发小件寄存系统系统寄存管理模块Uses Java to develop the Small Hosting systemHosting management module目录摘要I关键词IAbstractIIKey WordsII前言1第1章 小件寄存系统需求分析21.1小件寄存管理系统简介21.2模块简介21.2.1寄存业务设置21.2.2寄存管理21.2.3意外处理21.2.4结账21.2.5交接班21.2.6业务统计分析2第2章 用到的工具32.1 JAVA编程语言32.2 SQLServer2005数据库32.3 Struts2框架技术32.4 Ibatis数据库操作技术42.5 EXJ-JS界面设计技术42.6 JBoss服务器42.7 Tomcat服务器4第3章 系统总体设计63.1系统流程图63.2数据结构与表设计6第4章 寄存管理模块详细设计114.1功能描述114.1.1数据库操作设计114.1.2 功能模块设计124.2设计说明134.2.1实体类设计134.2.2接口设计144.2.3Ibatis配置文件的编写144.2.4数据访问类设计154.2.5界面树形菜单设计154.2.6主要操作界面设计154.2.7程序调用流程15第5章 使用手册21第6章 额外问题的讨论256.1取件时会遇到的问题256.2关于取件后的结算问题256.3问题的解决方案256.4关于EXT-JS的讨论25结论27参考文献28谢辞29附录1程序源代码30附录2外文资料31附录3外文资料中文翻译37小件寄存系统寄存管理模块摘要随着各个汽车客运站的客流量日趋增大,旅客出行所携带的随身物品越来越多,为保障旅客在客运站内能够安全的暂时存放其随身物品,因此便设计开发一个以小件寄存为主的旅客物品存取系统。该系统主要是为了将旅客携带的物品进行一个统一、安全、规范的存取管理,为旅客的出行解除后顾之忧。开发该系统使用J2EE系统架构、Ibatis、EXT-JS、Struts2、SQLServer2005数据库。Ibatis主要是对数据库进行增、删、改、查操作;EXT-JS用于界面设计,并有助于界面风格的统一和美观;Struts2作为一个框架技术,主要用于充当控制器的角色,它为该系统的前后台数据交互提供一个中间渠道。关键词:小件寄存,J2EE,Ibatis,EXT-JS,Struts2,SQLServer2005Small Hosting System-Hosting management moduleAbstractAs each car passenger volume is increasing, passenger travel carries a carry-on is more and more, to ensure passengers on the bus to safety in temporary storage of its belongings, therefore design development mainly with small hosting a passenger items access system. The system is mainly to objects passengers carrying a unified, safety, regulate access management, for passenger travel remove trouble back at home. Development of the systems use the J2EE system structure, EXT - JS, Ibatis, Struts2, SQLServer2005 database. Ibatis is mainly to the database, and changed, increase, delete operation; check EXT - JS for interface design, and help interface the unity of the style and beautiful; Struts2 as a frame technology, mainly for the role, it ACTS as a controller for this system provides a QianHouTai data interaction among channels.Key Words: Small Hosting, J2EE, Ibatis, EXT-JS, Struts2, SQLServer2005II前言根据道路运输业“十二五”发展规划纲要指出:“十二五”期将是我国经济社会全面转型发展的攻坚阶段,也是加快推进现代交通运输业发展的重大战略机遇期,道路运输业必须着力于推进转型与升级。“十二五”期间,云南省将初步建成以道路运输管理信息系统、统计系统、道路运输GPS监控管理系统、机动车驾驶员培训计算机监督管理系统为手段的现代化的行业管理决策平台;以GPS监控平台、全省汽车客运站联网售票和客运管理相互支撑的动静态相结合的监督平台。昆明市西部客运站作为整个联网系统的一份子,扮演了举足轻重的角色。而隶属于西客站的小件寄存系统更是为其正常流畅的运作提供了坚实的后勤保障。为保证旅客携带物品的安全存取,本系统是针对客运站内旅客某时间段内,物品存放安全而开发的管理系统。分为寄存业务设置、小件寄存、结账、交接班、业务统计分析。提高客运系统的服务质量,高效、安全周密的管理顾客物品,增强了客运站的管理规范。本系统是使用Eclipse作为开发平台,J2EE为技术架构开发的系统,并且使Struts2作为前后台交互的中间键,Ibatis数据库操作技术,使得开发更加方便快捷。第1章 小件寄存系统需求分析1.1小件寄存管理系统简介本系统是针对客运站内旅客某时间内,物品存放安全而开发的管理系统。整个系统分为寄存业务设置、小件寄存管理、结账、交接班、业务统计分析。1.2模块简介1.2.1寄存业务设置寄存业务设置是小件寄存管理系统及其关联业务的基础设置。操作员可以对业务设置进行新增、编辑、删除、查看、查询等业务功能进行操作。1.2.2寄存管理为了保障物品存放的安全,需要进行寄存业务管理。包括:寄存登记、寄存记录检索、修改、取件。 1.2.3意外处理作废、物件清理、遗失登记。1.2.4结账操作人员把自己在某段时间内所发生的寄存业务费用进行业务结算。包括:个人结账(个人)、结账查询(查询所有人员)。操作人员有权对结账业务进行登记、查询等操作。1.2.5交接班为了保障寄存物品在交接班后不发生错误(寄存物品的安全),需要进行交接班管理。包括:交接班信息检索、交接班登记。操作人员有权对交班业务进行登记、编辑、查询等操作。1.2.6业务统计分析为了实时了解小件寄存总体统计分析情况,需要进行业务统计分析。该业务系统于报表形式呈现。第2章 用到的工具2.1 JAVA编程语言Java是一种编程语言,被特意设计用于互联网的分布式环境。Java具有类似于C+语言的“形式和感觉”,但它要比C+语言更易于使用,而且在编程时彻底采用了一种“以对象为导向”的方式。使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的服务器端和客户端运行。2.2 SQLServer2005数据库SQL(Structured Query Language),结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。绝大多数流行的关系型数据库管理系统都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select, Insert, Update, Delete, Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。SQL Server 2005 数据引擎是本企业数据管理解决方案的核心。此外 SQL Server 2005 结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的 BI 解决方案,帮助您的团队通过记分卡、Dashboard、Web services 和移动设备将数据应用推向业务的各个领域。2.3 Struts2框架技术Struts 2是Struts的下一代产品。是在 struts 和WebWork的技术基础上进行了合并,全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。因为Struts 2和Struts 1有着太大的变化,但是相对于WebWork,Struts 2只有很小的变化。2.4 Ibatis数据库操作技术Ibatis是以SQL为中心的持久化层框架。能支持懒加载、关联查询、继承等特性。Ibatis不同于一般的OR映射框架。OR映射框架,将数据库表、字段等映射到类、属性,那是一种元数据(meta-data)映射。Ibatis则是将SQL查询的参数和结果集映射到类。所以,Ibatis做的是SQL Mapping的工作。它把SQL语句看成输入以及输出,结果集就是输出,而where后面的条件参数则是输入。Ibatis能将输入的普通POJO对象、Map、XML等映射到SQL的条件参数上,同时也可以将查询结果映射到普通POJO对象(集合)、Map、XML等上面。Ibatis使用xml文件来映射这些输入以及输出。2.5 EXJ-JS界面设计技术ExtJS可以用来开发RIA也即富客户端的AJAX应用,是一个用javascript写的,主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用中。ExtJs最开始基于YUI技术,由开发人员JackSlocum开发,通过参考JavaSwing等机制来组织可视化组件,无论从UI界面上CSS样式的应用,到数据解析上的异常处理,都可算是一款不可多得的JavaScript客户端技术的精品。2.6 JBoss服务器JBoss是全世界开发者共同努力的成果,一个基于J2EE的开放源代码的应用服务器。 因为JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用它,而不用支付费用。2006年,Jboss公司被Redhat公司收购。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3.0的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。2.7 Tomcat服务器Tomcat因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。Tomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。我们可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。第3章 系统总体设计3.1系统流程图流程介绍:1、选择业务设置进行寄存登记,如果没有对应的业务,则添加业务。2、进行寄存登记。3、检索出已登记的寄存信息。4、根据检索条件进行遗失、清理和清理还原操作。流程图如图所示:图3-1系统流程图3.2数据结构与表设计表结构如图3-2:图3-2数据库表关系业务设置表(BusinessSetting)如图3-3:图3-3业务设置表设计寄存登记表(Hosting)如图3-4:图3-3寄存表设计数据字典如下表:编号名称解释数据类型J1物品名称存入的是什么物品VARCHAR2(20)J2数量存入物品的个数NUMBERJ3存放位置物品在寄存处,所摆放的位置VARCHAR2(20)J4物品计价单位物品寄存的单位 如:按件、公斤、KG进行计价NUMBERJ5计费办法寄存物品按小时、按次 、按天进行计费NUMBERJ6物品费率J7寄件人姓名寄件人的名字VARCHAR2(20)J8证件号寄件人的有效证件号码VARCHAR2(50)J9联系电话寄件人的联系电话VARCHAR2(20)J10物品预取时间dateJ11存入时间完成此次寄存的时间dateJ12预估预付款寄存物品时,根据设置业务和输入值,系统自动计算得出款NUMBERJ13预付款物品寄存时,旅客对物品寄存费用进行预付NUMBERJ14付款状态将用于结算,状态(未付、预付(结算)、付清(结算)NUMBERJ15票号根据寄存登记产生号码NUMBER表3-1寄存表编号名称组成W1物品信息J1+J2+J3W2寄存人信息J7+J8+J9W3寄存信息J1+J2+J3+J14表3-2数据元表第4章 寄存管理模块详细设计4.1功能描述4.1.1数据库操作设计1、添加操作:对数据库进行添加数据操作。这个部分主要用于寄存登记,寄存登记就是把需要登记的数据添加到数据库里。该过程是通过Ibatis配置文件实现的。实现的SQL语句如下:BEGININSERT INTO Hosting(businessId,itemName,itemsCount,senderName,idCardNumber, phone,completeExchage,prefetchTime,address,exchange,state, prefetchBill,advance,operator,depoistTime,paymentState, settlementState,processUser,processTime,processPrice,remark)VALUES(#businessId#,#itemName#,#itemsCount#,#senderName#,#idCardNumber#,#phone#,#completeExchage#,#prefetchTime#,#address#,#exchange#,#state#,#prefetchBill#,#advance#, #operator#,#depoistTime#,#paymentState#,#settlementState#, #processUser#,#processTime#,#processPrice#,#remark#);END;2、查询操作:该操作就是检索出数据库里的数据,这个操作涉及到两种查询,一种是检索所有数据,另一种是更具条件检索具体的数据,具体实现的SQL语句如下:SELECT * FROM Hosting; /该查询语句做的操作是查询所有Hosting表里数据SELECT * FROM Hosting where exchange=#exchange#;/该查询语句是通过票号查询具体的数据3、修改操作:该操作是对数据库里的数据进行修改,在该系统中涉及到的修改主要是更具业务修改寄存物品的状态,具体实现的SQL语句如下:BEGINUPDATE Hosting SET businessId=#businessId#,itemName=#itemName#,itemsCount=#itemsCount#,senderName=#senderName#,idCardNumber=#idCardNumber#,phone= #phone#,completeExchage=#completeExchage#,prefetchTime=#prefetchTime#,address=#address#,exchange=#exchange#,state=#state#,prefetchBill=#prefetchBill#,advance=#advance#,operator=#operator#,depoistTime=#depoistTime#,paymentState=#paymentState#,settlementState=#settlementState#, processUser=#processUser#,processTime=#processTime#, processPrice=#processPrice#,remark= #remark#WHERE id = #id#;END;4.1.2 功能模块设计1、寄存登记:根据事先设置好的业务,进行登记操作,在登记操作时,需要填写顾客的基本信息(顾客的姓名、证件号码和联系电话)和物品信息(物品名称、数量、存放货架、预估款和预付金额)。登记流程如图4-1:图4-1寄存登记流程图2、寄存信息检索:当寄存的物品过多有需要精确的查找出一条寄存信息的时候,根据检索条件,检索出需要查看的物品,以便需要变更寄存信息时可以对已登记的物品进行寄存信息的修改和意外处理操作。3、取件:顾客取出寄存物品,当进行这项操作时,需要根据前置约束和检索条件检索出需要取出的物品,在这个过程中,操作人员需要根据寄件人信息进行核对,操作成功后,允许顾客取件,同时寄存信息改变(如:取件之前的物品状态为未取,取件后状态为已取,同时结算信息变更为已结算)。取件流程如图4-2:图4-2取件流程图4.2设计说明4.2.1实体类设计更具事先设计好的数据库设计寄存登记的实体类Hosting。在这个实体类中,包含了对应数据库Hosting表字段的属性和get、set方法,实体属性具体设计如图4-3:图4-3 寄存管理实体设计4.2.2接口设计接口是业务层的表现形式,它为数据访问层和实体类的交互提供了一个通道,接口的设计如图4-4:图4-4 寄存管理接口设计4.2.3Ibatis配置文件的编写Ibatis配置文件是对数据库进行操作的文件,它包含连接数据库的驱动文件和映射文件,具体设计见附录。4.2.4数据访问类设计数据访问类是实现业务的类,它通过接口实现Hosting的具体业务,具体设计见附录4.2.5界面树形菜单设计1、寄存管理菜单:该菜单是寄存管理的一个根菜单,其中包含了寄存登记、寄存信息检索和取件三个子菜单。2、子菜单:子菜单是寄存管理根菜单的分支菜单,中包含了寄存登记、寄存信息检索和取件这三项子菜单。其中,寄存登记子叶链接到寄存登记的操作界面,寄存信息检索子叶链接到条件检索页面,取件子叶链接到取件页面。4.2.6主要操作界面设计1、寄存登记页面:该页面显示了选择业务类型的下拉菜单和一个登记按钮。2、寄存信息检索页面:在这个页面中显示的首先是一个所有寄存信息的列表,在这个列表上面包含了条件检索的文本框,操作员可以通过过滤条件:票号来查询具体的寄存信息。3、取件管理:该页面显示了一个查询条件,这个条件是票号和证件号,操作员输入相应的号码查询出具体的寄存信息,确定以后页面跳转到显示具体的寄存信息页面,在这个页面里会列出相应的寄存记录,选择后便可以进行取件操作。4.2.7程序调用流程1、寄存登记程序调用过程:该过程分为两部分,首先是选择业务并到数据库里读取与所选业务对应的数据(如图4-5所示),其次是填写登记信息,完成后提交表单并将所填写的信息添加的数据库(如图4-6所示)。图4-5读取业务信息程序流程图4-6寄存登记程序流程2、寄存信息检索程序调用过程:该检索分为全部检索和条件检索。首先是全部检索,到数据库里检索出寄存信息,然后全部列与页面(如图4-7所示),其次,通过输入票号检索,然后根据输入的票号到数据库里检索出与该票号对应的数据并列与页面(如图4-8所示)。图4-7检索全部寄存信息程序流程图4-8通过票号检索寄存信息程序流程4、取件程序调用过程:通过输入票号,到数据库里检索出与该票号对应的数据并列与页面,选中提交后,便将该调寄存记录的寄存状态修改(入图4-9所示)。图4-9取件程序调用流程5、取件记录程序调用过程:访问数据库,检索出所有已经取件的记录(如图4-10所示)。图4-10取件记录程序流程第5章 使用手册点击左侧树形菜单中的寄存登记,在又边就会出现下图所示的选择业务界面:图5-1选择业务页面选择则业务后点击登记按钮(如图5-2)便会跳转到填写登记信息界面(如图5-3),登记成功后便会跳转到一个物品列表(图5-4)图5-2选择一个业务图5-3登记页面图5-4寄存信息列表页面点击左侧树形菜单中的寄存信息检索,右边呈现出来物品列表(如图5-5),在文本框里输入票号,便可查询出与输入票号对应的物品信息(如图5-6),点击新增就跳转到选择业务界面。图5-6查询页面点击取件管理就出现输入票号的界面,在文本框中输入票号(如图5-7)便可先查询出与该票号对应的物品(如图5-8),选择该条寄存信息,点击取件就跳转到物品列表,此时,状态就更改为已取件,结算状态更改为已结算(如图5-9)。图5-7取件界面1图5-8取件界面2图5-9取件成功过后的列表点击取件记录,右边便跳转到状态和结算状态为已取件和已结算的物品列表(如图5-10)图5-10取件记录页面第6章 额外问题的讨论6.1取件时会遇到的问题该小件寄存系统的核心模块是寄存管理部分,在该部分中实现了物品的寄存,寄存信息的检索、修改及取件。在取件这个各部分,只实现了通过寄存票号来检索寄存物品并进行取件操作。但是在面对实际运用操作时,来寄存物品的旅客会出现票号丢失的请款,那么旅客要来取件的时候就提供不出票号,这时就需要旅客提供自己的姓名或是证件号码给操作员,有操作员根据旅客提供的姓名和证件号检索出对应的寄存信息,然后给予取件操作。6.2关于取件后的结算问题在实际情况里,旅客来取件,当取件成功时,就会进行相应结算程序。结算时要根据寄存登记信息来进行结算,需要参与结算的信息有:提前取件控制、预估款、预付款和付款状态,其中付款状态包括:预付、未付、付清。如果旅客需要提前取件和预付了一部分费用的话,那最后结算就会与正常结算有所不同。6.3问题的解决方案由于时间的关系,在6.1和6.2小节中提到的问题并没有实现,在程序的后期优化中,我将根据在实际的寄存管理中,通过对业务的重新认识及理解,将整个业务流程完善,在取件部分添加可能发生的异常处理,并在取件后进行金额结算,使得这个系统更加适用于真实的操作的环境,更加满足旅客的要求。6.4关于EXT-JS的讨论Ext-JS是一种主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。无论是界面之美,还是功能之强,ext的表格控件都高居榜首。单选行,多选行,高亮显示选中的行,推拽改变列宽度,按列排序,这些基本功能咱们就不提了。自动生成行号,支持checkbox全选,动态选择显示哪些列,支持本地以及远程分页,可以对单元格按照自己的想法进行渲染,这些也算可以想到的功能。再加上可编辑grid,添加新行,删除一或多行,提示多行数据,推拽改变grid大小,grid之间拖拽一或多行,甚至可以在tree和grid之间进行拖拽。其实从ext3开始就支持各种方式的统计,且有控件支持excel导出。结论经过半年的学习和实习,使我的java编程技术得以提升。通过和老师与同学的沟通交流,使我充分了解到了在程序开发过程中的流程步骤。需求分析的了解对程序的开发起到了关键作用。程序开发都是以业务为基础而开发的。通过对需求分析的理解,可以是开发人员知道整个业务流程,以至于可以将业务通过代码来实现。在学习结束后,我参与了西客站的小件寄存系统开发。在开发过程中,使我体会到了团队沟通合作的重要性,并在开发过程中,学习到了开发该系统需要的知识,例如:Ibatis、Struts2框架技术,EXT-JS界面设计技术。通过对这些技术的学习与实验,对知识进行了重新储备。最终在小件寄存系统开发的过程中将这些技术付诸实际,以完成了该系统中我负责的模块。总体而言,该系统基本上可以实现了核心功能,但是还有些欠缺。由于时间和学习到的知识有限,这些欠缺的部分将在以后的深入学习研究和对程序的优化中加以弥补,最终使该系统更加完善。参考文献1 邵丽萍,邵光亚,张后扬JAVA语言课程设计北京:清华大学出版社,2008:2332 石志国,刘翼伟,王志良. JSP应用教程(修订本)M. 北京:清华大学出版社,2008:162.3 池雅庆,周珺,岳元媛. JSP项目开发实践M.北京:中国铁道出版社,2006:2264 李钟蔚,马文强,王殊宇.JAVA项目开发实例M.北京:人民邮电出版社,2008:94-1475 苗春义.JAVA项目开发全程实录M.北京:清华大学出版社,2008:193-2456 程茂,杨学全.JSP编程技术M.北京:清华大学出版社,20097 ibatis2.0开发指南.pdf8 徐会生 康爱媛 何启伟.深入浅出ext-js 第二版北京:人民邮电出版社,20109 人民邮电出版社的SQLServer2005数据库系统管理10 苗春义.JAVA项目开发全程实录M.北京:清华大学出版社,2008:BBS系统:403-45211 EJB 3 基础教程 . (美)科达利. 马朝晖 等译.北京:人民邮电出版社,2008-1012J2EE参考手册13session对象简介及调用方法.14叶乃文.JAVA核心技术(卷一).北京:机械工业出版社,200615陈昊鹏,王浩,姚建平.JAVA核心技术(卷二).北京:机械工业出版社,2006谢辞时间飞逝,转眼间,四年的大学生活接近尾声,而在这最后的时间里,以毕业设计为我的大学生活画上一个圆满的句号。在进行毕业设计的这段时间里,通过对新知识的学习了解,使我顺利的完成了毕业设计,而在这个过程中,感谢学校推荐我去公司培训实习,并在真实项目中锻炼了自身的能力,提高了自己对所学知识的理解,同时掌握了程序开发的基本流程,使我在进行毕业设计的时候得心应手。在此,我要感谢我的学校,感谢我的班主任,老师及同事给予了我很大的帮助,还要感谢指导我毕业设计的X老师。在每个星期三的例行见面和知道中,我又充分了认识到了自己的不足,并在老师的指导帮助下,对我的毕业设计进行了完善。在即将走出校门踏入工作岗位的我,认识到了实践经验的重要性,这一切都来源与学校的老师和同学,以及实习单位的同事。我将在以后的学习工作中更加努力,不辜负大家的期望。附录1程序源代码1、数据库驱动代码DBConn.java,该类是实现将数据库驱动指向Ibatis配置文件。2、业务层代码HostingImpl.java,该类定义了实现业务的接口。3、数据访问层代码HostingDao.java,该类通过HostingImpl.java接口实现对数据的访问。4、表现层代码设计页面。5、Ibatis配置文件该配置文件包括两个部分,第一部分是sqlMapConfig.xml,这个配置文件是用来配置连接数据库的驱动及访问用户名和密码。第二部分是Hostig.xml,这个配置文件是对数据库进行具体的操作,所有的sql语句都写在这个文件里。6、Struts2配置文件该配置文件是Struts.xml,其作用是接收界面提交来的跳转请求,让后通过自定义类将接收来的请求去和相应的Action类匹配。7、Action类Action类是用来处理页面提交来的请求,在Action里面,通过调用数据访问层来实现具体功能。附:源代码具体见论文附件光盘附录2外文资料1. Capitalize the first letter of class names. The first letter of fields, methods, and objects(handles) should be lowercase. All identifiers should run their words together, andcapitalize the first letter of all intermediate words. For example:ThisIsAClassNamethisIsAMethodOrFieldNameCapitalize all the letters of static final primitive identifiers that have constant initializersin their definitions. This indicates they are compile-time constants.Packages are a special case: they are all lowercase letters, even for intermediate words.The domain extension (com, org, net, edu, etc.) should also be lowercase. (This was achange between Java 1.1 and Java 1.2.)2. When creating a class for general-purpose use, follow a “canonical form” and includedefinitions for equals( ), hashCode( ), toString( ), clone( ) (implement Cloneable), andimplement Serializable.3. For each class you create, consider including a main( ) that contains code to test thatclass. You dont need to remove the test code to use the class in a project, and if youmake any changes you can easily re-run the tests. This code also provides examples ofhow to use your class.4. Methods should be kept to brief, functional units that describe and implement a discretepart of a class interface. Ideally, methods should be concise; if they are long you mightwant to search for a way to break them up into several shorter methods. This will alsofoster reuse within your class. (Sometimes methods must be large, but they should stilldo just one thing.)5. When you design a class, think about the client programmers perspective (the classshould be fairly obvious to use) and the perspective of the person maintaining the code(anticipate the kind of changes that will be made, to make them easy).6. Try to keep classes small and focused. Clues to suggest redesign of a class are:1) A complicated switch statement: consider using polymorphism2) A large number of methods that cover broadly different types of operations: considerusing several classes3) A large number of member variables that concern broadly different characteristics:consider using several classes7. Keep things as “private as possible.” Once you publicize an aspect of your library (amethod, a class, a field), you can never take it out. If you do, youll wreck somebodysexisting code, forcing them to rewrite and redesign. If you publicize only what youmust, you can change everything else with impunity, and since designs tend to evolvethis is an important freedom. Privacy is especially important when dealing withmultithreading only private fields can be protected against un-synchronized use.8. Watch out for “giant object syndrome.” This is often an affliction of proceduralprogrammers who are new to OOP and who end up writing a procedural program andsticking it inside one or two giant objects. With the exception of application frameworks,objects represent concepts in your application, not the application.9. If you must do something ugly, at least localize the ugliness inside a class.10. Anytime you notice classes that appear to have high coupling with each other, considerthe coding and maintenance improvements you might get by using inner classes (see“Improving the code with an inner class” on page 605).11. Use comments liberally, and use the javadoc comment-documentation syntax toproduce your program documentation.12. Avoid using “magic numbers,” which are numbers hard-wired into code. These are anightmare if you need to change them, since you never know if “100” means “the arraysize” or “something else entirely.” Instead, create a constant with a descriptive name anduse the constant identifier throughout your program. This makes the program easier tounderstand and much easier to maintain.13. In terms of constructors and exceptions, youll generally want to re-throw anyexceptions that you catch while in a constructor if it causes failure of the creation of thatobject, so the caller doesnt continue blindly, thinking that the object was createdcorrectly.14. If your class requires any cleanup when the client programmer is finished with theobject, place the cleanup code in a single, well- defined method with a name likecleanup( ) that clearly suggests its purpose. In addition, place a boolean flag in the classto indicate whether the object has been cleaned up. In the finalize( ) method for theclass, check to make sure that the object has been cleaned up and throw a class derivedfrom RuntimeException if it hasnt, to indicate a programming error. Before relying onsuch a scheme, ensure that finalize( ) works on your system. (You might need to callSystem.runFinalizersOnExit(true) to ensure this behavior.)15. If an object must be cleaned up (other than by garbage collection) within a particularscope, use the following approach: Initialize the object and, if successful, immediatelyenter a try block with a finally clause that performs the cleanup.16. When overriding finalize( ) during inheritance, remember to call super.finalize( ) (thisis not necessary if Object is your immediate superclass). You should callsuper.finalize( ) as the final act of your overridden finalize( ) rather than the first, toensure that base-class components are still valid if you need them.17. When you are creating
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025餐饮服务员劳动合同范文
- 2025甲供材料采购合同协议书范本
- 2025年交易啤酒的合同模板
- 2025授权合同协议书范本
- 2025年版合同样本:人事档案保管协议
- 2025年版幼儿园教师试用期合同样例
- 2025国际能源勘探开发合同
- 山东省安全生产考试试题及答案
- 火灾安全培训会议记录课件
- 供用电电子技术考试题及答案
- 现场切削液管理办法
- 2024年湖南省泸溪县事业单位公开招聘工作人员考试题含答案
- 宣传委员竞选课件
- 隧道施工安全教育
- 肠内营养病例临床实践分享
- 金融理论与政策课件
- 2025年陕西中考道德与法治真题解读及答案详解讲评(课件)
- 燃气锅炉事故应急专项预案
- 吸入性肺炎的护理查房
- 2025年天津市中考物理试卷真题(含标准答案)
- 循环经济与绿色生产方式
评论
0/150
提交评论