




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE目录摘要: IAbstract: II第一章前言 11.1选题背景 11.2国内外研究现状及发展趋势 11.2.1国外研究现状及发展趋 11.2.2国内研究现状及发展趋势 11.3选题意义 2第二章系统分析 32.1系统的可行性分析 32.1.1技术可行性 32.1.2经济可行性 32.2系统的关键技术 32.3业务流程分析 4第三章系统设计 53.1软件模型概述 53.2功能结构设计 53.3数据库设计 7第四章详细设计 94.1系统总体实现 94.1.1开发平台与开发工具 94.1.2系统架构图 94.2系统实现主要功能如下: 104.2.1服务器端界面 114.2.2客户端登录界面 124.2.3客户端登录后显示好友界面 134.2.4客户端好友聊天界面 13结论 15致谢 16参考文献(Reference) 17附录 18PAGEII 基于J2SE的即时通信软件 摘要:信息时代的到来引发了一场知识和信息革命,计算机和现代网络技术的广泛应用极大地促进了社会经济的发展,同时也带来了一些新兴产业的发展,比如网络间的即时通讯软件。即时通讯已经慢慢成为人们生活的一部分,呈现出良好的势头和广阔的发展前景。即时通讯是一个通过国际互联信息网络进行多人通讯的一款软件,它具有其他传统通讯方式无法比拟的优势,快速,便捷、信息多元化等。正是这些特点,使它能够成为当今最流行的信息交流方式。Java因其简单,安全,跨平台等特点成为当今最流行的编程语言之一,已广泛用于PC,Internet,移动设备上。因为Java的“一次编写到处运行”的特点,所以已编写的软件不用修改或只需少量的修改就可以在其他设备上和操作系统上成功运行,可以极大的减少开发商的开发和维护成本。在当今硬件设备和软件平台(操作系统)多元化的时代,用Java开发即时通信软件是明智之举关键词:即时通信,Java,Access,网络,Socket编程Abstract:Theadventoftheinformationagehasprovokedastormofknowledgeandinformationrevolution,thecomputerandthewideapplicationofmodernnetworktechnologyhasgreatlypromotedthedevelopmentofsocialeconomy,butitalsobringssomeemergingindustries,suchasinstantmessagingsoftwarebetweennetworks.Instantmessaginghasbeenslowlybecomepartofpeople'slife,showingagoodmomentumandbroaddevelopmentprospects.InstantmessagingisaninternationalInternetinformationnetworkthroughaparagraphofmultiplayercommunicationssoftware,ithasothertraditionalcommunicationandincomparableadvantage,quick,convenient,informationdiversification,etc.Itisthesefeaturesthatmakeitcanbecomethemostpopularinformationcommunication.Javabecauseofitssimplicity,security,cross-platformandsobecomeoneofthemostpopularprogramminglanguages,hasbeenwidelyusedinPC,Internet,mobiledevices.
BecauseJava's"writeonce,runanywhere"feature,sothesoftwarehasbeenpreparedwithoutmodificationorwithlittlemodificationtootherdevicesandcanrunsuccessfullyonoperatingsystems,developerscangreatlyreducethedevelopmentandmaintenancecosts
.
Intoday'shardwareandsoftwareplatform(operatingsystem)awiderangeofage,withinstantmessagingsoftware,Javadevelopmentisawisemove.
Keywords:IM,Access,Java,SocketPAGE19第一章前言1.1选题背景要问到网络时代发展最快的领域,无疑的,答案是即时通讯。即时通讯工具的实时交互、资费低廉等优点深受用户的喜爱,已经成为网络生活中不可或缺的一部分,比如大家都很熟悉的腾讯QQ,MSN等。网民们通过即时通信进行沟通交流、结识新朋友、娱乐消遣时间、实现异地文字、语音、视频的实时互通交流。同时,人们也认识到即时信息工具能够带来极高的生产力,诸多企事业单位借助它的使用,来提高业务协同性及反馈的敏感度和快捷度。作为使用频率最高的网络软件,即时通讯已经突破了作为技术工具的极限,被认为是现代交流方式的象征。即时通讯软件是通过即时通讯技术来实现在线聊天、交流的软件。目前有2种架构形式,1、一种是C/S架构,采用客户端/服务器形式,用户使用过程中需要下载安装客户端软件,典型的代表有:QQ、百度HI、Skype、Gtalk、新浪UC、MSN等;2、采用B/S架构,即浏览器/服务端形式,这种形式的即时通讯软件,直接借助互联网为媒介、客户端无需安装任何软件,既可以体验服务器端进行沟通对话,一般运用在电子商务网站的服务商,典型的代表、53KF、live800等。1.2国内外研究现状及发展趋势1.2.1国外研究现状及发展趋自1996年11月全球范围内推出的第一款即时通讯软件以来,即时通讯软件得到了迅速的发展。随着各大互联网巨头公司的崛起,各互联网公司根据各公司主要业务推出不同的即时通讯软件。雅虎公司:雅虎通(Yahoo!Messenger)是一款比较流行的即时通讯软件,允许用户与朋友、家人、同事及其朋友经行即时的交流。用户只需麦克风、扬声器或耳机,就能轻松地与好友语音通话,且设有语音留言与呼叫记录。即使用户不在线,也可以收到好友的语音留言。雅虎通内置了股票、新闻、计分板等选项卡,不论用户在何处浏览,都可以监视用户所有个性化信息。微软公司:MSN是微软公司开发的即时聊天工具,由于微软产品用户众多,操作简单,运行稳定,且与WindowsXP进行了无缝结合,使得MSN的普及速度非常快,现在已经是世界主流的聊天工具,MSN支持手写功能,但与其他即时通讯软件最大的不同是不支持离线消息。MSN采用邮件地址作为用户名,借此建立MSN与Hotmail之间的连接,当对方不在线时,你可以选择给对方的MSN邮箱或Hotmail发送邮件。这样MSN就不仅是一个简单的即时通讯软件,而演变为以MSN为中心的整合服务。谷歌公司:谷歌公司出的一款即时通讯工具。支持文字信息以及网络语音交流。GoogleTalk与Gmail进行了整合应用,使用Gmail账号登录,并支持检查Gmail邮件。虽然Google公司在搜索引擎方面是绝对的龙头,不过在即时通讯领域的产品还是有蛮多缺憾的。国外即时通讯软件技术上已发展得相当成熟,技术上的发展空间相对来说比较的少,即时通讯软件今后将会更多的用来弥补和整合本公司的主要业务。1.2.2国内研究现状及发展趋势腾讯公司:据腾讯QQ官方消息,2005年,QQ在国内已拥有2.4亿多的注册用户,7000多万活跃用户,同时在线人数700万以上。目前,腾讯QQ已成为国内用户最多的个人即时通讯工具,占据着国内约65%以上的市场份额。1999年2月,腾讯推出基于互联网的即时通讯工具——QQ,支持在线消息收发,即时传送语音、视频和文件,并且整合移动通讯手段,可通过客户端发送信息给手机用户。目前QQ已开发出穿越防火墙、动态表情、给好友放录像、捕捉荧屏、共享文件夹、提供聊天场景、聊天时可显示图片等强大的使用功能。另外,QQ还增加了QQ群、QQ秀、QQ宠物、QQ游戏等娱乐功能。由于QQ良好的开放功能、休闲娱乐服务,使其拥有了庞大的用户群,在近几年内突飞猛进,牢牢占据着国内即时通讯霸主地位。阿里巴巴:阿里巴巴推出的软件阿里旺旺是将原先的淘宝旺旺与阿里巴巴贸易通整合在一起的新品牌。它是淘宝和阿里巴巴为商人度身定做的免费网上商务沟通软件。它能帮您轻松找客户,发布、管理商业信息;及时把握商机,随时洽谈做生意!即时通讯软件市场结构分为个人应用和企业应用两部分,因此它的发展趋势也必然要围绕这两部分应用进行探讨。我认为未来的即时通讯市场发展趋势包括:综合化、专业化、互联互通和安全化这四个方面的内容。他们之间有着很强的逻辑关系,个人应用领域的综合化和企业应用领域的专业化导致了用户对互联互通的需求,而互联互通的实现需要安全技术作为保证。1.3选题意义21世纪是信息的时代,人与人之间的交流越来越密切,传统的通信方式,如电话,电报等在实时上虽仍占有一定的优势,但是在信息高速发展的今天,传统通信方式由于其成本过高,方式单一的缺点,越来越暴露其弊端。传统的通讯方式的缺点: (1)成本高。目前人们所使用的通讯方式普遍价格过高,移动通信的价格更是不菲。这就在某种程度上限制了用户的使用和数量。作为用户来讲,消费水平是一个很重要的选择标准。(2)使用方式单一。我们现在使用的传统通信方式主要是电话,电报,传真等。这些方式只能听到声音或看到文字,用户并不能感受到对方,缺乏身临其境的感觉。(3)传输数据量少。传统的通讯方式的带宽并不高,所以传输的数据量大大受到限制。新兴的网络通讯的优点:(1)成本低。网络具有价格便宜,对于大多数用户来说,购买一台电脑不仅可以成为日常的通信工具,更重要的是电脑可以作为很多方面的用途,如处理日常的文件,存储个人的资料等,而网络通讯仅仅是一个很小的附加功能,更由于随着经济的发展,拥有电脑就像拥有电视机一样普遍,电脑的价值已经被普遍认可。(2)方便快捷。网络聊天非常方便,传统的手机短信编辑相比电脑键盘来说具有很大的劣势,电脑打字要更加地快速,同时网络也可以进行语音聊天,更加省去了输入的麻烦。视频聊天也是网络通信的一个很大的优势,拉近了聊天双方的距离,使交流更加亲切。(3)传输的信息量大。和传统的方式相比较,其数据量提高了数十倍,并且随着科技的进步,这种优势将会继续扩大。我国拥有世界上最多的网络用户,目前正在进行高速信息化建设,因此对网络的使用将会进一步扩大。网络通讯软件具有上述的优势,因此其发展的前景将是广阔的,这也是研究它的意义所在。第二章系统分析分析即综合采用系统的思想和方法,把一个比较复杂的系统对象拆解成若干个简单易懂的组成部分,并定义这些组成部分的基本属性和相互之间的关联,进而按照软件开发流程对软件系统进行开发和设计。分析过程一半包括研究当前同类别系统的特点和不足,进而对所要开发的系统进行完善化的设计,使开发出的软件的在最节省资源的情况下开发出符合需求的产品。2.1系统的可行性分析综合即时通讯软件发展形势和对即时通讯市场的调研,本即时通讯软件在技术上,经济上,操作方面均具备可行性,具备了软件开发实施的条件。2.1.1技术可行性WinXP操作系统的稳定性,安全性可满足用户的要求。后台的数据库使用的是OfficeAccess2003。软件开发工具语言选用的是当前最流行的开发工具语言——Java。Java是一种简单的面向,分布式,解释型的,健壮安全的,结构中立的,可移植的,性能优异的,多线程的动态语言。JavaSwing具有良好的图形编程能力,可以实现良好的用户界面,JavaSocket可以实现网络间的通信。综上,完全具备技术可行性。2.1.2经济可行性费用:本系统要求的计算机配置并不高(400MHz以上处理器。64M内存及以上,硬盘空间100M以上),当前中低档计算机即可满足要求。设备的安装调试工作简单,软件的价格不高,操作简单,对用户进行少量的培训讲解即可较为熟练的操作本软件,因而培训费用较低。而且,Java是跨平台的语言,编写好的软件不需要改动或只需要少量改懂就可以在移植到其他平台上,对于程序开发来说,可以减少大量的开发和维护成本。收益:用户使用本软件以后,能较大的用户之间的传播效率,节省较多的人力资源,为企业创造经济效益,利于企业单位的发展,因而在经济上是可行的。2.2系统的关键技术(1)TCP传输协议。TCP协议是面向连接的协议,即在点点进行连接之前必须首先建立数据通路,就向我们平时打电话一样,在通话之前必须先拨号,等待对方的接听以后才能进行通话。它的数据传输采取的是同步方式,当数据发送到对方时,必须等待接收方的应答信号后才能继续下一次的发送工作,即我们平时所说的“握手”方式。由于TCP协议采用的是这种连接方式,因此由它建立的连接,是可靠的,在网络不是十分理想的情况下,速度牺牲很大,但是却能够保证所传输的数据的正确性。(2)UDP传输协议。UDP协议采用的是面向无连接的通信方式,它在通信前不需要提前建立通信链路,它是异步的,数据的发送比较迅速,不需要等待应答信号。优点是发送速度较快,但是在数据的一致性方面不好,在网络差的情况下,容易丢失数据包。一般用于远程视频等对一致性要求并不是很高的数据传输方面。2.3业务流程分析业务流程分析是对业务功能分析的进一步细化,从而得到业务流程图,是一个反映软件业务处理过程的“流水帐本”,帮助确定流程工作与合作建模的基本要素,更好地分析理解其同其他要素的关系。业务流程图反映了实际业务活动的整个流程,它以业务处理过程为中心。业务流程分析的目的是:形成合理、科学的业务流程。通过分析现有业务流程的基础上进行业务流程重组,产生新的更为合理的业务流程。本即时通讯软件业务流程图反映了软件内部各功能之间的关联以及业务处理的流程。流程图如图2.1所示:是否有帐号是否有帐号注册登录验证用户名和密进入显示好友列表点击好友聊天查看好友信息添加删除好友是否成功返回信息将好友添加到列表中返回好友信息开启聊天窗口发送信息退出登录图2.1业务流程图第三章系统设计系统的设计通常是自顶向下逐步细化的,使一个较为复杂的问题分解成若干个比较简单、容易解决的小问题。概要设计的主要任务是得到系统的软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。总体设计的目标是建立系统的逻辑模型。3.1软件模型概述在基于C/S模型的网络通信软件中,包括客户端和服务器端,其中服务器在整个系统的作用很关键,处于中心位置,客户端主要用来获取从服务器传过来的数据,提供给用户友好的界面,显示用户的好友信息,并且接受用户的各种操作,用户操作完毕软件会把各种操作封装成信息,并把这个请求信息发送到服务器端。服务器端主要接受客户端的请求,并且解析其封装的信息内容,并根据信息内容做相应的操作(例如:转发信息,查询好友资料等等),最后将这些信息发送到指定的客户端上,最终实现各用户之间通讯的目的。下图展示了C/S结构的模型图:客户端客户端客户端登录登录服务器信息交换信息交换 图3.1C/S结构模型图3.2功能结构设计本软件适用于中小型局域网的聊天软件,为中小型企业提供局域网沟通软件,该软件可以为客户提供文字信息交流,震动窗口,文件传输等信息交流。数据流图,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。本系统总功能结构数据流图如图3.1所示:服务器服务器客户端客户端客户端ACCESS数据库维护数据库文件传送检索检索文件传送登录登录登录图3.2系统总功能结构图系统各功能详细数据流图如下登录界面好友界面查看好友信息信息登录界面好友界面查看好友信息信息添加删除好友好友聊天界面连接到服务器线程通信Socket客户端通信Sock通信Socket连接到客户端线程验证用户密码数据库操作服务器端控制台服务器端图3.3各功能详细结构和数据流图3.3数据库设计数据库是用户所需要的各种数据管理的方式的总称,它是数据库应用系统的核心部分。数据库结构的设计是相当重要的一个环节,它将直接影响到系统的数据处理效率和系统的总体性能,良好的数据库结构应该选择合理的数据库范式,减少数据的存储量,同时保证恰当的数据冗余。数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。数据库设计的基本步骤如下:需求分析:首先明确用户对数据的需求。概念结构设计:概念模型主要是用来反映用户的现实环境和需求,它独立于具体的数据库管理系统,并且与数据库怎样实现无关。逻辑结构设计:在逻辑结构设计阶段,主要完成建立数据库的逻辑模型,并解决数据的完整性、一致性、安全性和有效性等问题;物理结构设计:该阶段的任务是为系统逻辑结构模型确定合理的存储结构、存取方法、以及数据表示和数据存储空间分配等内容,从而得到具体的数据库物理结构。数据库实施:数据库实施主要包括用DDL定义数据库结构、组织数据入库、编制与调试应用程序、数据库试运行等步骤。数据库运行与维护:数据库投入运行标着开发任务的基本完成和维护工作的开始,数据库物理存储也会不断变化,对数据库设计进行评价、调整、修改等维护工作是一个长期的任务。该系统的E—R图如图3.2所示:账户账户账户号码账户密码用户信息账户号用户名性别出生日期头像个性签名拥有好友关系关系账户好友账户好友关系在线状态用户状态账号状态图3.4E-R图数据库最终要存储于存储设备上,数据库在物理设备上的存储结构和存取方法称为数据库的物理结构。以下是本系统的物理结构的具体实现:表3.1账户表字段名称数据类型长度说明账户号码文本10主键账户密码文本10表3.2用户信息表字段名称数据类型长度说明用户号文本10主键用户名文本10主键性别文本10主键出生日期文本10个性签名文本10头像文本10表3.3用户好友表字段名称数据类型长度说明账户号文本10主键好友账户文本10主键关系文本10主键第四章详细设计4.1系统总体实现4.1.1开发平台与开发工具 1.操作系统:WindowsXP 2.系统开发环境:MyEcplise8.5 3.数据库:MicrosoftAccess2003 4.开发语言:Java 5.界面开发:Photoshopcs4.1.2系统架构图该软件是基于J2SE编写的程序,Java是纯面向对象的语言,一切皆为对象。面向对象的思想更加符合人们的思维方式,封装的思想可以比较好保证代码的安全性而且可以更好地实现代码的复用。软件是基于网络Socket编程实现网络通信,由服务器端程序和客户端程序构成。服务器端的主要任务是监听客户端传来的信息,并且根据信息的类型做出相应的处理,实现转发功能。客户端程序的主要任务是接受服务器端的信息,并且向服务器发送信息,通过服务器实现转发功能。 本系统采用简单的MVC设计模式,具体架构图如图4.1图4.1系统整体架构图 备注:client为客户端程序1.login,friendlist,chitchat包分别是登录,好友列表和聊天窗口的视图层2.model包是业务逻辑层3.common主要是存储客户端和服务器端传输的信息类4.tools包主要是字体定义等工具类 server为服务器端程序1.common主要是存储客户端和服务器端传输的信息类2.db包进行数据库进行操作的类3.model包主要是服务器端的业务逻辑层4.2系统实现主要功能如下:通过调查分析研究,本系统主要实现以下功能:客户端各功能模块如下:用户登录:用户必须输入自己的用户号和密码,当用户点击登录按钮以后,软件会把用户和密码封装成一条信息,传到后台服务器验证用户和密码,服务器验证完会返回一个结果。如果结果为真,会进入好友界面窗口。如果结果为假,会弹出对话框,告知用户信息(用户号或密码输入错误)注册:通过登录界面的注册按钮,可以进入注册画面。进入注册画面,用户可以填入账户号,账户昵称,性别,生日等信息,当用户点击注册画面的按钮时,如果用户号已存在会提示用户重新输入用户号。好友界面(登录成功会显示自己的头像和好友界面)
1.查看自己的账户信息:点击自己的头像,会弹出窗口显示自己的信息。
2.查看好友的信息:右键好友的名字,弹出快捷菜单,在点击查询好友信息菜单,会弹出窗口显示被点击的好友的信息。3.聊天:右键点击好友头像,弹出快捷菜单,点击“发送信息”菜单,会弹出聊天窗口,在文本框输入文字信息,在点击发送按钮,文字会显示在好友的窗口中,且显示在自己的已发送窗口。4.删除好友:点击头像右键,弹出快捷菜单,点击“删除好友”,就可以实现删除好友操作。5.查询好友:可以在文本框输入ICQ号码,点击查询就可以实现查询功能,如果该ICQ不是自己的好友,可添加为好友服务端各功能模块如下:(一)开启服务端:点击服务器端菜单可以开启和关闭服务器监听。
(二)显示用户的在线状态:可以通过界面的小窗口显示用户的在线状态。
(三)显示用户的行为:可以监听用户之间传输的信息。4.2.1服务器端界面服务器端有控制菜单,通过菜单可以控制服务器的开启和关闭。通过显示面板可以查看用户的在线的状态和用户的通信记录。图4.1服务器端界面服务器端监听代码:
publicvoidrun() { while(true) { //服务器通过该线程可以不断的接受客户端发来的信息 ObjectInputStreamois=null; try{ ois=newObjectInputStream(s.getInputStream()); }catch(IOExceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } try{ Messagems=(Message)ois.readObject(); if(ms.getMesType()==MessageType.message_comm){//普通聊天 ServerList.jtext.append(ms.getTime()+"--"+ms.getFormUser()+"对"+ms.getToUser()+"说"+ms.getCon()+"\n"); SenMesToFri(ms); } elseif(ms.getMesType()==MessageType.message_zd){//震动窗口 ServerList.jtext.append(ms.getTime()+"--"+ms.getFormUser()+"对"+ms.getToUser()+"发送震动窗口!\n"); SenMesToFri(ms); }elseif(ms.getMesType()==MessageType.message_file){//服务器接受发送的文件并转发给接受方 ServerList.jtext.append(ms.getTime()+"--"+ms.getFormUser()+"对"+ms.getToUser()+"发送文件:"+ms.getCon()+"\n");SenMesToFri(ms);} elseif(ms.getMesType()==MessageType.message_personalImformation); ServerList.jtext.append(ms.getTime()+"--"+ms.getFormUser()+"查看好友"+ms.getToUser()+"的信息"+ms.getCon()+"\n"); //GetMesToSer(ms); }}catch(Exceptione){ e.printStackTrace(); } }}4.2.2客户端登录界面用户需要通过输入正确的用户名和密码才能登进软件。如果没有账号,可以点击注册新号按钮,进入注册界面,填入相应的信息完成注册,然后再使用新注册的账户和密码登录。图4.2客户端登录界面验证用户名和密码代码:publicbooleancheckUser(Stringuser,Stringpsw)//user是用户的登录账号(Icq账号),psw是用户的登录密码 { booleanb=false; try{ //组织sql语句访问数据库和条件参数列表 Stringsql="selectIcq_No,Icq_Nc,Icq_IconfromIcqwhereIcq_No=?andIcq_Psw=?";//通过用户名和密码要求数据库返回用户的:账号,昵称,头像 String[]paras={user,psw}; shp=newSqlHelper(); ResultSetrs=shp.query(sql,paras); if(rs.next()) { ch[0]=rs.getString(1);//用户Icq账号 ch[1]=rs.getString(2);//用户的昵称 ch[2]=rs.getString(3);//用户的头像 b=true; } } catch(Exceptione) {e.printStackTrace();} finally{ shp.close(); } returnb; }4.2.3客户端登录后显示好友界面用户登录后显示本账户头像信息,好友列表,和搜索好友栏。点击好友列表可以进行查看好友信息,删除好友,和好友聊天等操作。用户可以在搜索栏输入账号进行好友搜索,如果存在该账号,就显示该账号信息,而且如果好友列表不存在该账号,可以添加该好友。如果好友列表存在该账号,“添加好友”按钮为不可点击状态。图4.3登录后好友显示界面4.2.4客户端好友聊天界面双击好友头像,或先点击好友头像再右键鼠标弹出快捷菜单,点击“发送信息”,会弹出好友聊天界面。通过好友聊天界面,可以发送信息,发送信息是通过Socket实现客户端和服务器端的通信,然后对Socket添加输入流和输出流,使信息显示在客户用户界面上或者对磁盘进行文件写入操作。4.4用户聊天界面说明:发送的信息包括三种信息:文本,文件,抖动窗口发送文件代码主要如下:elseif(e.getSource()==this.file){//发送文件 filedialog_load.setVisible(true); Messagems=newMessage(); if(filedialog_load.getFile()!=null){ try{ Filefile_load=newFile(filedialog_load.getDirectory(),filedialog_load.getFile()); DataInputStreamdis=newDataInputStream(newBufferedInputStream(newFileInputStream(filedialog_load.getDirectory()+filedialog_load.getFile()))); byte[]bf=newbyte[(int)file_load.length()]; while(true){ intnum=0; if(dis!=null){ num=dis.read(bf); ms.setBuf(bf); } if(num==-1){ break; } //dos.write(bf,0,num); } ms.setMesType(MessageType.message_file);//发送文件,message_file==6 ms.setFormUser(Fu);//发送者 ms.setToUser(toChat);//接收者 ms.setTime(this.date.toLocaleString());//发送的时间 ms.setCon(file_load.getName());//传输文件的名称 }catch(Exceptione1){ e1.printStackTrace(); } try{ ObjectOutputStreamoos=newObjectOutputStream(ManageClientToSerThread.getClientToSerThread(Fu).getS().getOutputStream()); oos.writeObject(ms); }catch(IOExceptione1){ e1.printStackTrace(); } System.out.println("文件名:"+filedialog_load.getFile()); System.out.println("文件路径:"+filedialog_load.getDirectory()); this.showpane.append("给"+Tu+"传送了文件:"+filedialog_load.getDirectory()+filedialog_load.getFile()+"\n"); } }参考文献(Reference)[1]西尔伯沙茨(美).数据库系统概念[M].机械工业出版社,2006[2]陈志泊.数据库原理及应用教程[M].人民邮电出版社2008[3]埃克尔(美).Java编程思想[M].机械工业出版社2007[4]李刚.Java疯狂讲义[M].电子工业出版社2008[5]哈诺德.Java网络编程.中国电力出版社2005[6]王鹏,何昀峰.JavaSwing图形界面开发与详解[M].清华大学出版社2008[7]徐峰.UML面向对象建模基础[M].水利水电出版社2006[8]王少锋.面向对象技术UML教程[M].清华大学出版社,2005[9]罗依.JavaSwing[M].清华大学出版社,2004[10]潘志军.数据库应用基础—Access[M].北京理工大学出版社,2010[11]付博.Access开发实例完全剖析[M].中国电力出版社,2006[12]特罗特著,徐言声译.设计模式解析[M].人民邮电出版社,2004年[13]伽玛著,李英军译.设计模式--可复用面向对象软件的基础[M].机械工业出版社,2005[14]卡尔弗特等著,周恒民译.JavaTCP/IPSocket编程[M].机械工业出版社,2009[15]方晨.PhtoshopCS3中文版入门提高[M].上海科学普及出版社,2008[16]丹尼斯著,干红花译.系统分析与设计[M].人民邮电出版社,2009附录:ParsingJavaAbstractionoftheDifferenceBetweenClassesandInterfacesInJavalanguage,abstractscale-upandwithsupportclassabstractiondefinitionoftwomechanisms.Becauseofthesetwokindsofmechanismofexistence,justgivesJavapowerfulobject-orientedskills.Abstractscale-upandwithbetweenclassabstractiondefinitionforsupporthasgreatsimilarities,eveninterchangeable,somanydevelopersintolinenonabstractclassdefinitionforabstractscale-upanditisbecomingmorecasualwithchoice.Infact,bothbetweenstillhastheverybigdifference,fortheirchoiceevenreflectedinproblemdomainessenceofunderstanding,todesigntheintentionsoftheunderstandcorrectlyandreasonable.Thispaperwillforthedifferenceanalysis,tryingtogiveadeveloperwithachoicebetweenthemarebased.UnderstandclassabstractionAbstractclassandinterfaceinJavalanguageisusedforabstractclasses(inthisarticlenonabstractclassnotfromabstractscale-uptranslation,itrepresentsanabstractbody,andabstractscale-upforJavalanguageusedtodefineclassabstractioninoneway,pleasereadersdistinguish)defined,thenwhataretheabstractclasses,useabstractclassesforusanygood?Inobject-orientedconcept,weknowallobjectsisthroughclasstodescribe,butinturnnotsuch.Notallclassesareusedtodescribeobject,ifaclassdoesnotcontainenoughinformationtoportrayaconcreteobject,thisclassisabstractclasses.Abstractclassesareoftenusedtocharacterizationofproblemfieldinouranalysis,designthattheabstractconcepts,istotheserieswilllookdifferent,butessentiallythesameexactconceptionofabstraction.Forexample:ifwecarryoutagraphicaleditingsoftwaredevelopment,willfindproblemdomainexistsround,trianglesosomespecificconcept,theyaredifferent,buttheyallbelongtoshapesuchaconcept,shapethisconceptinproblemdomainisnotexist,itisanabstractconcept.Preciselybecausetheabstractconceptsinproblemfieldnocorrespondingspecificconcept,sotocharacterizationabstractconceptsnonabstractclasscannotbeinstantiated.Inanobject-orientedfield,mainlyusedforclassabstractiontypeshidden.Wecanconstructafixedagroupofbehaviorofabstractdescription,butthisgroupofbehaviorbutcanhaveanyapossibleconcreteimplementation.Thisabstractdescribeisabstractclasses,andthisanarbitraryapossibleconcreterealizationisbehavedforallpossiblederivedclass.Modulescanbeoperatinganabstractbody.Duetothemoduledependentonafixedabstractionbody,soitcanarenotallowedtomodify,Meanwhile,throughtheabstractderivedfromthebody,alsocanexpandthebehaviorofthismodulefunction.FamiliarwithOCPreadersmustknow,object-orienteddesigntobeabletoachieveacoreprinciplesOCP(Open-Closedflying),classabstractionisoneofthekey.FromtheperspectivesofgrammardefinitionabstractclassandinterfaceIngrammaticalperspective,Javalanguageforabstractscale-upandwithgivesdifferentdefinitionsbelowtodefineaway,calledproduceprofessionalDemoabstractclassasanexampletoillustratethedifference.Usetheabstractscale-upproduceprofessionalDemoabstractclassdefinedasfollows:abstractclassDemo{
abstractvoidmethod1();
abstractvoidmethod2();
…
}UsethewaywithproduceprofessionalDemoabstractclassdefinedasfollows:interfaceDemo{
voidmethod1();
voidmethod2();
…
}Intheabstractscale-upmanner,produceprofessionalDemocanhavetheirowndatamembers,alsocanhavethemembersoftheabstractmethod,andwiththerealizationoftheway,produceprofessionalDemocanhaveonlystaticcannotbemodifieddatamembers(i.e.mustisstatic,immigration,butinwithgenerallydoesn'tdefinedatamembers),allthemembersofthemethodsisabstract.Inasense,withaspecialkindofabstractclass.Fromprogramming,fromtheperspectiveofabstractscale-upandwithcanbeusedtoachieve"cancel"thoughtsmakethemselves.Butinthespecificusetopstillhavesomedifference.First,abstractclassinJavalanguagesuggestsisakindofinheritingrelationship,aclasscanbeusedonlyonceinheritancerelationship(becauseJavadonotsupportmoreinheritanceZhuanZhu).-However,aclassbutcanimplementmultiplewith.MaybeitisJavalanguagedesignersinconsideringJavaformultipleinheritancesupportofacompromisetoconsiderit.Secondly,inthedefinitionofabstractscale-up,wemaygivemethodsofdefaultbehavior.Butinwiththedefinitionofmethodcannothavethedefaultbehaviour,tobypassthislimits,mustuseentrust,butitwilladdsomecomplexity,sometimescancausealotoftrouble.Inclassabstractioncannotdefinethedefaultbehaviouristhereanotherseriousproblemthatmaycauseonthemaintenanceoftrouble.Becauseiflaterwanttomodifytheinterface(usuallybysuchabstractscale-uporwithtorepresent)toadapttothenewsituation(e.g.,addingnewmethodsortohavealreadyusedthemethodtoaddnewparameters),willbeverytroublesome,mightspendalotoftime(foraderivedclassmanysituation,especially).Butiftheinterfaceisthroughscale-upabstracttorealize,thenmayjustneedtomodifydefinedintheabstractscale-updefaultbehaviorisok.Similarly,ifnotinabstractclassdefinedinthedefaultbehavior,canleadtothesamemethodtoappearintheabstractclasseveryaderivedclass,violated"a-oneru
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年黑龙江省五常市辅警招聘考试试题题库有答案详解
- 2024年湖南有色金属职业技术学院单招职业适应性测试题库参考答案
- 2025年河北省定州市辅警招聘考试试题题库附答案详解(能力提升)
- 2024年海南健康管理职业技术学院单招职业倾向性测试题库(500题)含答案解析
- 物料分拣试题及答案
- 广东省清远市佛冈县高中联考2024-2025学年高一下学期6月月考英语试卷 - 原卷
- 2025企业培训协议范本员工培训合同
- 促进工程设计企业的信息化建设与数字化转型
- 2025年中国水性环保油漆行业市场前景预测及投资价值评估分析报告
- Phenylpyropene-B-生命科学试剂-MCE
- 人工智能在审计工作中的应用
- 2024在役立式圆筒形钢制焊接储罐安全附件检验技术规范
- 汛期开车安全教育课件
- 制冷与空调设备运行操作作业
- 学院食堂排油烟管道清洗项目招投标书范本
- 实施方案与目标:降低温室气体排放
- 办公生活区临建设施施工方案(附详细施工图纸)01
- 全国教育科学规划课题申报书:34.《高质量数字教材建设研究》
- 酒店运营管理第八章
- 反恐程序文件一览表
- 基于核心素养的小学数学大单元教学设计研究
评论
0/150
提交评论