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