首页 面向对象与多线程综合实验指导书

面向对象与多线程综合实验指导书

举报
开通vip

面向对象与多线程综合实验指导书《面向对象与多线程综合实验》指导书本课程旨在使学生了解软件开发的一般过程,深入理解面向对象语言的基本概念和基本原理,理解和掌握继承与多态、异常处理、输入输出流、GUI设计、JDBC数据库操作、网络编程、多线程等技术;熟练掌握在Java语言环境下,上述技术的具体实现方法,并深入领会Java程序设计实用开发技术。为达到上述目标,本课程计划让学生以迭代方式逐步编程开发一个小型档案管理系统,实现上述7个部分的训练,从而培养学生分析和解决问题的能力。该小型档案系统要求如下:系统基于C/S模式,包括客户端子系统,服务器端子系统...

面向对象与多线程综合实验指导书
《面向对象与多线程综合实验》指导书本课程旨在使学生了解软件开发的一般过程,深入理解面向对象语言的基本概念和基本原理,理解和掌握继承与多态、异常处理、输入输出流、GUI 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 、JDBC数据库操作、网络编程、多线程等技术;熟练掌握在Java语言环境下,上述技术的具体实现方法,并深入领会Java程序设计实用开发技术。为达到上述目标,本课程计划让学生以迭代方式逐步编程开发一个小型档案管理系统,实现上述7个部分的训练,从而培养学生分析和解决问题的能力。该小型档案系统要求如下:系统基于C/S模式,包括客户端子系统,服务器端子系统用户需登录,验证口令通过后才能使用系统。用户分为系统管理人员、档案录入人员,档案浏览人员系统中相关用户信息、档案属性存放于关系数据库中,档案本身以文件形式存放于服务器相关目录中客户端和服务器端基于Socket实现通信,服务器端需实现多线程功能,可同时处理、响应多个客户端的数据请求用户信息管理功能,普通用户登录后可对自己基本信息(姓名、性别、民族、出生日期、职务、密码等信息)的查询、修改。系统管理人员除上述功能外壳增加、删除用户、修改用户的相关属性和权限档案数据录入功能,档案录入人员可输入新的档案文件信息,并将档案文件上传至服务器档案数据查询功能,普通用户可按条件查询相应的档案文件信息,对相关档案文件可以下载保存封装、继承与多态知识要点(1)封装封装(Encapsulation是类的三大特征之一,即将类的状态信息隐藏在类内部,不允许外部程序直接访问,必须通过该类提供的方法来实现对隐藏信息的操作和访问。简而言之就是隐藏对象的属性和实现细节,仅向外提供访问接口。封装的好处主要有:隐藏类的实现细节;让使用者只能通过程序员规定的方法来访问数据;可以方便的加入存取控制语句,限制不合理操作。封装的具体步骤:修改属性的可见性来限制对属性的访问;为每个属性创建一对赋值(setter方法和取值(getter)方法,用于对这些属性的存取;在赋值方法中,加入对属性的存取控制、有效性检查等。(2)继承继承(Inheritanee)是Java中实现代码重用的重要手段,它是一种软件复用形式。继承是使用已存在的类的定义作为基础建立新类的技术,新类可以吸收现有类的成员,并可以增加新的功能或修改原有的功能。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。继承表达的是is-a的关系,或者说是一种特殊和一般的关系。Java中只支持单继承,即每个类只能有一个父类。在Java中所有的类都直接或间接的继承了java.lang.Object类,即Object类是所有java类的祖先。在Java中,子类可以从父类中继承的有:继承public和protected修饰的属性和方法,不管子类和父类是否在同一个包里;继承默认权限修饰符修饰的属性和方法,但子类和父类必须在同一个包里。子类无法继承父类的有:无法继承private修饰的属性和方法;无法继承父类的构造方法。(3)多态多态(Polymorphism)即多种状态,是指计算机程序运行时,系统可依据对象所属类,引发对应类的方法,从而有不同的行为。简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作。多态又可分为设计时多态和运行时多态。重载又被称为设计时多态,而对于覆盖或继承的方法,Java运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称为运行时多态。多态的优点可归纳为五个方面:可替换性、可扩充性、接口性、灵活性和简化性。在Java中实现多态的三个条件:继承的存在(继承是多态的基础,没有继承就没有多态);子类重写父类的方法(多态下调用子类重写的方法);父类引用变量指向子类对象(子类到父类的类型转换)。特别注意:子类转换成父类时的规则:将一个父类的引用指向一个子类的对象,称为向上转型,自动进行类型转换。此时通过父类引用调用的方法是子类覆盖或继承父类的方法,不是父类的方法。此时通过父类引用变量无法调用子类特有的方法。如果父类要调用子类的特有方法就得将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型,此时必须进行强制类型转换。实验目的掌握类的定义、对象的创建、对象的属性的引用和方法的调用;熟悉Java中的继承机制,方法的重载与覆盖;掌握多态、抽象类、接口的使用。实验内容编写一个程序,实现档案管理系统中的用户管理模块。要求模块中实现用户的模拟登录过程。通过用户输入,获取用户名和口令;与事先 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 在程序中的用户信息进行对比,通过口令验证后才能使用系统。用户分为系统管理人员、档案录入人员,档案浏览人员三类,相关类图如下所示。User-name-password-role+showMenu()+showFileList()+downloadFile()+changeSelflnfo()AdministratorOperatorBrowser+changeUserInfo()+delUser()+addUser()+listUser()+showMenu()+uploadFile()+showMenu()+showMenu()(1)要求在用户类中实现封装,并构造setter、getter方法实现属性的访问(2)通过继承方式加以实现上述类(3)通过多态,实现用户菜单项的展示,根据用户角色不同,系统自动调用对应showMenu()方法。在未讲数据库之前,系统中已存在用户的信息放置在Hashtable中。提供DataProcessing类实现数据的查找、插入、更新和删除。(此类可提供给学生直接使用)在未讲I/O之前,系统中的文件操作的方法可虚化,只用打印语句即可。异常处理2.1知识要点(1)异常异常指不期而至的各种状况,如:文件找不到、网络连接失败、数据库错误等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的错误条件。当条件生成时,错误将引发异常。Throwable:有两个重要的子类:Exception(异常)和Error(错误),二者都是Java异常处理的重要子类,各自都包含大量子类。Error:是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时JVM出现的问题。Exception:是程序本身可以处理的异常。异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。通常,Java的异常(包括Exception和Error)分为可查的异常(checkedexceptions)和不可查的异常(uncheckedexceptionS。不可查异常是编译器不要求强制处置的异常:包括运行时异常(RuntimeException与其子类)和错误(Error)运行时异常是不检查异常,程序中可以选择捕获处理,也可以不处理。除了RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它。(2)处理异常机制在Java应用程序中,异常处理机制为:抛出异常,捕捉异常。抛出异常当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。throws抛出异常如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常。throws语句的语法格式为:methodnamethrowsException1,Exception2,..,ExceptionN{}throw抛出异常throw总是出现在方法体中,用来抛出一个Throwable类型的异常。程序会在throw语句后立即终止,它后面的语句执行不到。throw语句的语法格式为:thrownewexceptionname;捕获异常在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器(exceptionhandle)当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。捕获异常:try、catch和finallytry{//可能会发生异常的程序代码}catch(Type1id1){//捕获并处理try抛出的异常类型Type1}catch(Type2id2){//捕获并处理try抛出的异常类型Type2}finally{//无论是否发生异常,都将执行的语句块}try块:用于捕获异常。其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。catch块:用于处理try捕获到的异常。finally块:无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。2.2实验目的理解异常的基本概念;了解Java异常的层次结构;熟悉并掌握Java异常的捕获处理方法。实验内容(1)阅读Java?Platform,StandardEdition8APISpecification文档,了解后续编程中将要处理的IOException及其子类FileNotFoundException、EOFException,SocketException,SQLException以及运行时异常RuntimeException与其子类IllegalStateException。(2)根据新提供的DataProcessing类(因还未讲SQL,此类模拟异常出现情况,以一定概率随机产生异常),在所编写的Administrator>Operator和Browser类,增加异常处理功能。3•输入输出流3.1知识要点(1)流的概念流(Stream)的概念源于UNIX。流的单向的,根据流的方向,流可以分输入流和输出流。可以从输入流中读取信息,但不能写它。相反,只能往输出流写入信息,但不能读它。按流的数据单位不同分为:字节流和字符流。在Java中,字节流读写以字节为单位的流;而字符流用于读写Unicode字符组成的文本流。(2)流的层次结构BuftaCtdRCMlCfInputStrej(nRwderfiJ^ReadefSirin^Ft^^dorReader1PipedfteadBrEyieAfrayReaderFilterd@rPu^hbjckReader字符流OutpulSiT*dWWfitffFikWriterFrinterWriterWriter|SttiiiCjWrilerPipidWritwCharArr^yWriterf'FilterWrit^fFtieCnpLitStrejm10流字节疏Pu百hbaklnputS^reaTiiObjectbiputStreamPipe^lnputStr^mSequencelnpuSSlre-amSirin^BuftadnputStfwmArriyinpucStFciniFil^Oytput$treamBulfertdOutpuIFilterOuitpiJtStreamDataOutputStreamOutputStre^mIf"~M~~M—1~!'(PrintStreamObjeclOutpulSlrram1Pip^dQulputStreaEByt^ArrjyCkjIpuiSlteamFtlleftnputSlrcjmDaijInpurStrcjmBufferFile:用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等。构造 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 :File(Stringpath)、File(Stringpath,StringFileName)、File(Filedir,Stringname)。File类提供了一种与机器无关的方式来描述一个文件对象的属性,通过类File所提供的方法,可以得到文件或目录的描述信息,这主要包括名称、所在路经、可读性、可写性、文件的长度等,还可以生成新的目录、改变文件名、删除文件、列出一个目录中所有的文件等。InputStream:抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征。主要提供文件内容操作的基本功能函数read()、ship()、close()等;一般都是创建出其派生类对象(完成指定的特殊功能)来实现文件读取。文件操作的应注意异常的捕获:由于包java.io中几乎所有的类都声明有I/O异常,因此程序应该对这些异常加以处理。流结束的判断:方法read()的返回值为-1时;readLine()的返回值为null时。Outputstream抽象类。基于字节的输出操作。是所有输出流的父类。定义了所有输出流都具有的共同特征。主要提供文件内容操作的基本功能函数write()、flush()、close()等;一般都是创建出其派生类对象(完成指定的特殊功能)来实现文件写入。文件操作的应注意异常的捕获:由于包java.io中几乎所有的类都声明有I/O异常,因此程序应该对这些异常加以处理。Reader:抽象类,基于字符的输入操作。提供文件内容操作的基本功能函数read()ship()、close()等;文件操作的应注意异常的捕获;InputStreamReader是字节流和字符流的桥梁,它使用指定的charset读取字节并将其解码为字符。Writer:抽象类,基于字符的输出操作。提供文件内容操作的基本功能函数write()、flush()、close()等;文件操作的应注意异常的捕获;OutputStreamWriter是字符流和字节流的桥梁,它使用指定的charset将要写入流中的字符编码成字节。RandomAccessFile随机文件操作,可以从文件的任意位置进行存取(输入输出)操作。RandomAccessFile类直接继承于Object类而非InputStream/OutputStream类,从而可以实现读写文件中任何位置中的数据(只需要改变文件的读写位置的指针)。由于RandomAccessFile类实现了DataOutput与DataInput接口,因而利用它可以读写Java中的不同类型的基本类型数据(比如采用readLong()方法读取长整数,而利用readInt()方法可以读出整数值等)。关于上述内容具体描述,请参看Java教材与Java?Platform,StandardEdition8APISpecification文档。实验目的了解Java中I/O流的概念和种类;掌握字节流处理和字符流处理,包括File类,InputStream/OutputStream及其子类,Reader/Writer及其子类;熟练掌握文件的顺序处理,随机访问处理;熟悉对象串行化的概念和方法。实验内容编写程序,实现档案管理系统中的文件上传/下载模块。要求用户登录系统后,可根据系统存储数据,浏览已有档案资料信息;可根据档案号,下载对应档案文件至指定目录;可输入并在系统中记录新档案信息,并将对应的档案文件上传至指定目录。要求如下:完善showFileList()方法,实现档案信息浏览,在未讲数据库之前,系统中已存在档案信息放置在Hashtable中,提供新版DataProcessing类,该类实现了对应数据的查找、插入操作。完善uploadFile()方法,实现档案数据的上传,在未讲网络之前,该方法只需实现在指定目录中读取文件,并将其拷贝至其他目录中,此外还需将相关档案信息写入对应Hashtable中。完善downloadFile(),实现档案数据下载,目前只需要实现根据档案号,在Hashtable中查找得到文件位置,然后读取文件并将其拷贝至指定目录中。GUI设计主要内容:Java图形界面程序的基本结构;Java布局管理和常用组件的使用;Java事件处理机制。重点内容:图形界面元素难点内容:事件处理机制培养能力:抽象思维、分析问题、解决问题与创新能力JDBC数据库操作主要内容:JDBC的特点,结构,应用模型;JDBC驱动程序的类型;通过JDBC访问数据库执行SQL语句的方法。重点内容:通过JDBC访问数据库难点内容:通过JDBC访问数据库培养能力:抽象思维、分析问题、解决问题与创新能力网络编程主要内容:Java网络编程基础;使用URL类访问网络资源;基于Socket的客户和服务器编程;基于Datagram客户和服务器编程。重点内容:使用URL类访问网络资源难点内容:基于Socket的客户和服务器编程培养能力:抽象思维、分析问题、解决问题与创新能力多线程主要内容:线程的基本概念;线程的构造,调度,控制方法;多线程互斥和同步处理。重点内容:线程的构造,调度,控制方法难点内容:多线程互斥和同步处理培养能力:抽象思维、分析问题、解决问题与创新能力1继承和组合(Inheritanee&Composition)本文主要说明Java中继承与组合的概念,以及它们之间的联系与区别。首先文章会给出一小段代码示例,用于展示到底什么是继承。然后演示如何通过“组合”来改进这种继承的设计机制。最后总结这两者的应用场景,即到底应该选择继承还是组合。1、继承假设我们有一个名为Insect(昆虫)的类,这个类包含两个方法:1)移动move();2)攻击attack()。代码如下:classInsect{privateintsize;privateStringcolor;567891011publicInsect(intsize,Stringcolor){this.size=size;this.color=color;publicintgetSize(){}returnsize;12}1314publicvoidsetSize(intsize){15this.size=size;16}1718publicStringgetColor(){19returncolor;20}2122publicvoidsetColor(Stringcolor){23this.color=color;24}2526publicvoidmove(){27System.out.println("Move");28}2930publicvoidattack(){31move();//假设昆虫在攻击前必须要先移动一次32System.out.println("Attack");33}34}现在,你想要定义一个名为Bee(蜜蜂)的类。Bee(蜜蜂)是Insect(昆虫)的一种,但实现了不同于Insect(昆虫)的attack。和move方法。这时候我们可以用继承的设计机制来实现Bee类,就像下面的代码一样:classBeeextendsInsect{2345678910111213}publicBee(intsize,Stringcolor){super(size,color);}publicvoidmove(){System.out.println("Fly");}publicvoidattack(){move();super.attack();}publicclassInheritanceVSComposition{publicstaticvoidmain(String[]args){Insecti=newBee(1,"red");i.attack();}}InheritanceVSComposition作为一个测试类,在其main方法中生成了一个Bee类的实例,并赋值给Insect类型的引用变量i。所以调用i的attack方法时,对应的是Bee类实例的attack方法,也就是调用了Bee类的attack方法。类的继承结构图如下,非常简单:g自mCJflAS"©Insectwpcsize:inLncater:StringC
本文档为【面向对象与多线程综合实验指导书】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
zhaofengchun
暂无简介~
格式:doc
大小:125KB
软件:Word
页数:27
分类:交通与物流
上传时间:2021-12-02
浏览量:0