ImageVerifierCode 换一换
格式:DOCX , 页数:118 ,大小:1.02MB ,
资源ID:22020489      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22020489.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(面向对象程序设计实验指导书定稿Word文件下载.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

面向对象程序设计实验指导书定稿Word文件下载.docx

1、8MVC和Swing模型掌握Swing组件的模型-视图-控件结构,JSpinner和JList9JTable和JTree掌握JTable和JTree的用法10Java数据库程序设计掌握使用JDBC API访问数据库的基本方法11高级Java数据库程序设计掌握批处理插入数据的方法;掌握处理可更新和可滚动结果集方法12JSP基础掌握JSP程序设计基础Selective13Web应用程序开发掌握创建基于JSP的Web应用程序的方法Comprehensive实验G01: 泛型一、实验名称和性质所属课程面向对象程序设计实验名称实验学时实验性质验证 综合设计必做/选做必做 选做二、实验目的1理解为什么泛型

2、类型可以提高可靠性和可读性;2了解通配符类型并理解为什么有必要使用该类型;3理解泛型类的所有实例共享同一个运行类文件。三、实验内容1构建两个ArrayList对象list1,list2,往两个对象中各添加两个元素(如输入1,2),并输出(验证性内容)。2. 应用泛型编写程序(设计性内容)。四、实验的软硬件环境要求硬件环境要求:PC计算机;内存512MB以上使用的软件名称、版本号以及模块:操作系统:Windows 2000或Windows XP软件:JDK 6.0;Eclipse五、知识准备前期要求掌握的知识: 掌握线性表和接口。实验相关理论或原理:泛型是参数化类型的能力。表示形式泛型类型,后面

3、可以用一个实际具体类型代替它。泛型类型必须是引用类型 。六、验证性实验1实验要求构建两个ArrayList对象list1,list2,往两个对象中各添加两个元素(如输入1,2),并输出。输出结果如图1.1所示:图1.1 线性表的使用2源程序代码参考import ;public class Generic /* * 泛型应用测试 */ public Generic()ArrayList list1 = new ArrayList(); ArrayList list2 = new ArrayList list1.add(*代码3*); list1.add(*代码4*); list2.add(*代码

4、5*); list2.add(*代码6*); ; /程序入口main方法 public static void main(String args) new Generic(); 七、设计性实验 请应用泛型编写程序。首先定义一个接口,它至少包含一个可以计算面积的成员方法。然后编写实现该接口的两个类:正方形类和圆类。接着编写一个有泛型特点的类,要求利用这个类可以在控制台窗口中输出某种图形的面积,而且这个类的类型变量所在控制台窗口中分别输出给定边长的正方形的面积和给定半径的圆的面积。结果如图1.2所示:图1.2 图形的面积实验G02:1熟悉Set接口,了解何时及如何使用 HashSet, Linke

5、dHashSet, or TreeSet 来存储元素;2熟悉 List 接口, 了解何时及如何使用 ArrayList or LinkedList 存储元素;3区分 Vector and ArrayList, 了解如何使用 Vector and Stack;4. 使用 Collections、Arrays 类中的静态方法。1创建一个散列集HashSet,一个链式散列集LinkedHashSet,和一个树形集TreeSet,向各集合中添加单词,并打印。根据结果分析三个集合的不同之处(验证性内容)。2编写一程序,创建用数字填充的数组线性表ArrayList,将新元素添加到线性表的指定位置,再利用数

6、组线性表创建一个链表,最后用Foreach语法遍历该链表(验证性内容)。3. 设计一个程序,用来统计字符串“have a good day,have a good class,have a good visit,have fun!”中的每个单词出现的次数,并按照单词的升序输出(建议使用HashMap和TreeMap)(设计性内容)。4. 某中学有若干学生(学生对象放在一个List中),每个学生有一个姓名属性、班级名称属性(String)和考试成绩属性(int),某次考试结束后,每个学生都获得了一个考试成绩。请打印出每个班级的总分和平均分(设计性内容)。掌握集合架构支持的三种结构。一个集合就是一

7、个存储一组对象的容器,一般将这些对象称为集合的元素。Java集合构架支持三种类型的集合:规则集set、线性表list和图map,他们分别定义在接口Set、List和Map中。 HashSet类可以用来存储互不相同的任何元素。链式散列集 LinkedHashSet使用链表实现了对HashSet类的扩展,支持规则集内元素的排序。SortedSet 是Set的子接口,它保证规则集中的元素是有序的。 为了允许在一个集合中存储重复的元素,可以使用线性表。线性表不仅支持重复的存储,而且支持用户指定它们的存储位置。Map接口建立元素和键值的一个映射关系,键值就像下标。在List中,下标是整数,在Map中,键

8、值可以是任意类型的对象。一个图中不能有重复的键值,每个键值对应一个值。实现Map接口的具体类:散列图HashMap、链式散列图LinkedHashMap、树形图TreeMap。验证性实验1创建一个散列集HashSet,一个链式散列集LinkedHashSet,和一个树形集TreeSet,向各集合中添加单词,并打印。根据结果分析三个集合的不同之处。输出结果如图2.1所示:图2.1 集合应用2. 源程序代码参考/*Set集合*/public class SetTest * 集合测试 public SetTest() Set set1 = new HashSet set2 = new LinkedH

9、ashSet set1.add(HangzhouXiaoshanJiaxingNingbo set2.add( TreeSet treeset = new TreeSet(set1); for(Object element:set1) set2)treeset)/程序入口main方法 new SetTest();验证性实验2编写一程序,创建用数字填充的数组线性表ArrayList,将新元素添加到线性表的指定位置,再利用数组线性表创建一个链表,最后用Foreach语法遍历该链表。输出结果如图2.2所示:图2.2 线性表2. 程序参考代码/*List集合*/import java.util.*;p

10、ublic class ListTest * List测试 private ArrayList arraylist; private LinkedList linkedlist; public ListTest() arraylist = new ArrayList arraylist.add(1); arraylist.add(2); arraylist.add(3); arraylist.add(4); arraylist.add(5); arraylist.set(2, 9); linkedlist = new LinkedList(/*代码1*/); linkedlist.add(3,

11、Zhejaing display the arraylis: for(Object t:arraylist)display the linkedlist: /*代码段2(foreach遍历)*/ new ListTest(); 1实验要求(1)设计一个程序,用来统计字符串“have a good day,have a good class,have a good visit,have fun!”中的每个单词出现的次数,并按照单词的升序输出。(建议使用HashMap和TreeMap)输出结果如图图2.3所示:图2.3(2)某中学有若干学生(学生对象放在一个List中),每个学生有一个姓名属性、班

12、级名称属性(String)和考试成绩属性(int),某次考试结束后,每个学生都获得了一个考试成绩。请打印出每个班级的总分和平均分。八、思考题:第一个验证性实验中,用HashSet对象创建TreeSet和用无参构造方法来创建一个TreeSet实例有什么区别?哪个效率更高?为什么?注意:更新一个Set集合时,如果不需要保持元素的顺序关系,应该使用散列集,因为在散列集插入和删除元素的时间较少;需要保持元素中的元素排序时,可以把他们转化成树形集。实验G03:多线程设计1. 理解线程概念;了解线程的状态和生命周期;2. 学习继承Thread类来创建线程;3. 理解线程互斥与同步的含义;掌握Synchrn

13、ized同步方法。1设计一个包含多线程运行的程序,在主程序中依次创建3个线程,然后按顺序启动这3个线程,每个线程在执行时都是先睡眠(sleep)一会儿,醒来之后再继续执行(验证性实验)。2用程序模拟铁路火车票售票系统,实现通过3个售票窗口同时发售某次列车的100张车票。程序中会有3个线程同时对同一个车票对象进行操作,每个线程的操作都按相同的步骤进行,即将当前车票数加1,然后将当前车票数与剩余车票数显示出来。由于车票数是临界资源,一次只能有一个线程完成读写操作,因此必须处理好线程之间的互斥关系(设计性实验)。Ecliplse了解Java程序的运行流程。多线程是指一个程序中可以包含两个或两个以上同

14、时并发运行的程序单元,每个程序单元称之为一个线程。Java为多线程编程提供了语言级的支持,因此可以编写高效率的程序。一个线程从它被创建到运行结束的过程,称为线程的生命周期。在Java中使用多线程有如下两种方式:一是继承Thread线程类,第二是实现Runnable接口。在Thread类中有两个主要的方法,一个是run()方法,另一个是start()方法,在Thread类的派生类中要覆盖这个run()方法,将多线程代码放入其中。Start()方法的作用是启动一个线程,它会自动地去调用run()方法以执行该线程。 为了使多个线程互斥地使用临界资源,可以在临界资源上使用synchrnized修饰符。

15、编译、运行ThreeThreads.java程序,运行结果如图3.1所示。图3.1 验证性实验运行结果 2源程序代码参考class MyThread extends Thread public MyThread(String name) super(name); public void run() /让线程进入休眠状态,休眠指定的时间 int sleeptime=100; try + 将休眠 + sleeptime + 毫秒 Thread.sleep(sleeptime); catch (InterruptedException ex) ex.printStackTrace(); 结束休眠pu

16、blic class ThreeThreads MyThread thread1 = new MyThread(线程1 MyThread thread2 = new MyThread(线程2 MyThread thread3 = new MyThread(线程3 thread1.start(); thread2.start(); thread3.start(); 编译、运行程序TestSaleTicket.java ,结果如图3.2所示。并将程序中的代码1代码4补充完整。图3.2 设计性实验运行结果 2部分源程序代码/TestSaleTicket.javaclass Ticket /车票类 i

17、nt curticket; /当前票数 代码1 /总票数 public Ticket(int curticket, int ticketCount) this.curticket = curticket; this.ticketCount = ticketCount;class SaleTicket implements Runnable /售票类 private Ticket ticket; public SaleTicket(Ticket ticket) 代码2 while (true) synchronized (this) if (ticket.curticket ticket.tic

18、ketCount) Thread.sleep(50); ticket.curticket+; 正在销售第 + ticket.curticket + 张票,剩余票数: + (ticket.ticketCount - ticket.curticket); else 代码3 /退出循环public class TestSaleTicket /测试类 Ticket t = new Ticket(0, 100); SaleTicket st = new SaleTicket(t); Thread win1 = new Thread(st, 售票窗口1 Thread win2 = new Thread(s

19、t, 售票窗口2 代码4 /实例化线程对象win3 win1.start(); win2.start(); win3.start();实验G04:验证 综合 设计1、了解Java语言基于流式的套接字Socket的运行机制;了解客户机/服务器模式在网络中的应用;2、熟练掌握J包中的ServerSocket类与Socket类的使用方法。 编制一个类似QQ的即时聊天程序,该程序使用面向连接的Socket通信机制。TCP/IP套接字通信是一种面向连接的通信方式,即通信双方在数据交换之前一定要建立稳定可靠的连接。编写这类网络通信程序通常要涉及到服务器端和客户端。J包中专门提供了ServerSocket类

20、和Socket类来建立和维持服务器端和客户端之间的通信。TCP Socket通信的大致过程如下:服务器端:(1) 在指定的端口上创建ServerSocket对象;(2) 调用ServerSocket对象的accept()方法监听网络连接;(3) accept()方法返回一个有效连接socket;(4) 创建该socket的输入输出流对象;(5) 调用输入输出流对象上的方法进行通信;(6) 通信结束关闭socket对象。客户端:(1) 按照指定的主机名和端口号创建socket连接;(2) 创建该socket的输入输出流对象;(3) 调用输入输出流对象上的方法进行通信;(4) 通信结束关闭sock

21、et对象。编制一个类似QQ的即时聊天程序,该程序使用面向连接的Socket通信机制。整个程序分成服务器端和客户端两部分,通信双方能够互相发送文字进行简单的聊天,最后双方都可以输入quit结束对话。程序运行效果如图4.1和图4.2所示。图4.2 服务器端聊天程序 图4.2 客户端聊天程序 该实验要求两人为一组,一人运行服务器端程序,另一人运行客户端程序。(1) 服务器端代码:/ NetworkServer.java import java.io.*;import .*;public class NetworkServer public static void main(String args) throws IOException ServerSocket sersoc=null; Socket fsoc=null; BufferedReader fin=null; BufferedReader fsin=null; PrintWriter fout=null; InetAddress c

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1