面向对象程序设计及WINDOWS编程实验指导书.doc_第1页
面向对象程序设计及WINDOWS编程实验指导书.doc_第2页
面向对象程序设计及WINDOWS编程实验指导书.doc_第3页
面向对象程序设计及WINDOWS编程实验指导书.doc_第4页
面向对象程序设计及WINDOWS编程实验指导书.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计及WINDOWS编程实验指导书(java程序设计)2012.2目 录第二部分 Java程序设计实验项目2实验一 熟悉Java程序开发环境2实验二Java基本数据类型及运算5实验三 流程控制语句7实验四 面向对象程序设计初步9实验五 类与对象的设计11实验六 类的继承15实验七 抽象类和接口19实验八 数 组22实验十二 用户图形界面GUI标准组件及事件处理24实验十四Java网络编程技术25实验十五JDBC 数据库编程28第二部分 Java程序设计实验项目实验一 熟悉Java程序开发环境一、实验目的1了解和使用J2sdk1.6.0(JDK)集成环境;2熟悉J2sdk集成环境的基本命令、功能和基本用法。并学会配置path 等环境变量;3学习并熟练掌握使用J2SDK环境进Java程序开发的全过程(包括:源程序的编辑、编译、调试、运行和结果查看);4了解和掌握JCREATOR集成环境的安装,简单应用;5了解Java Application和Applet程序的基本结构;6了解Java程序文件名和类名的说明方法。二、实验内容与要求1.安装Jdk1.6.0集成环境,安装成功后,配置path,classpath路径,让用户在任何目录下均可用到Java的系统资源。设置环境变量PATH和CLASSPATH(如果在autoexec.bat中没有进行设置)。进入命令行(MS-DOS)方式,进行如下设置:SET PATH=D:JDK1.6.0BIN;%PATH% SET CLASSPATH=.; %CLASSPATH%2. 安装 Jdk 1.6.0 Doc, 并查看Jdk 1.6.0 Doc 文档中,和课堂教学有关系的部分。在整个实验过程中都可以参考。3. 建立自己的工作目录如d:user。以后的Java程序和过程文件均放置在此目录下。4. 输入一个Application源程序,学习编辑、编译、运行程序的方法。/例1-1 文件HelloWorldApp.java如下:/ HelloWorldApp.javapublic class HelloWorldApp public static void main(String args)System.out.println(Hello World!);本程序的作用是输出下面一行信息:Hello World!现在我们可以运行该程序。首先把它放到一个名为HelloWorldApp.java的文件中,这里,这文件名应和类名相同,因为Java解释器要求公共类必须放在与其同名的文件中。然后对它进行编译:d:userjavac HelloWorldApp.java编译的结果是生成字节码文件HelloWorldApp.class。最后用java解释器来运行该字节码文件:d:userjava HelloWorldApp结果在屏幕上显示HelloWorld!5.输入一个applet源程序,学习编辑、编译、运行程序的方法。 简单的Applet小程序例1-2 / HelloWorldApplet.javaimport java.awt.*;import java.applet.*;public class HelloWorldApplet extends Applet /anappletpublic void paint(Graphics g)g.drawString(Hello World in Applet!,20,20);这个程序中没有实现main()方法,这是Applet与应用程序Application(如上例)的区别之一。为了运行该程序,首先我们也要把它放在文件HelloWorldApplet.java中,然后对它进行编译:d:userjavac HelloWorldApplet.java得到字节码文件HelloWorldApplet.class。由于Applet中没有main()方法作为Java解释器的入口,我们必须编写HTML文件,把该Applet嵌入其中,然后用appletviewer来运行,或在支持Java的浏览器上运行,如IE。它的文件如下:An Applet其中用标记来启动HelloWorldApplet.code指明字节码所在的文件,width和height指明applet所占的大小,把这个HTML文件存入Example.html,然后运行:d:userappletviewer Example.html这时屏幕上弹出一个窗口,其中显示Hello World in Applet!。6安装JCREATOR软件,并配置JCREATOR,在JCREATOR中用建立工程的方式重新运行上面的4、5小题。三、思考题1什么是Java虚拟机?它的作用是什么?2Java Application程序与Java Applet程序的不同之处有那些?请各位同学收集错误代码与提示信息,以及产生错误的原因。3列举出5种以上Java开发平台,分析他们的优缺点或特点。四、实验报告1、实验完成后,检查是否达到试验目的。2、编写实验报告(打印或手写均可),在下一次上实验课时提交。3、评出成绩,按五级(A,B,C,D、E)评分。实验二Java基本数据类型及运算一、实验目的1. 理解Java语言的基本数据类型的概念和数据类型之间的转换;2. 掌握常量、变量和各种表达式的用法;3. 掌握各种运算符的优先级;4. 学会编写简单的Java程序。5把课堂上学到的理论用于实践,并验证理论的正确性,和发现新的问题.二、实验内容与要求(一)实验要求1. 体会自动类型转换和强制类型转换用法;2. 给出算术表达式、关系表达式及布尔表达式的值,体会运算符的优先级;3. 利用三目运算符进行编程;4. 进行简单Java编程,能够根据给出的三个变量值进行求和及平均;5. 进行简单Java编程,能够根据圆的半径计算出圆的周长及面积。(二)实验内容1. 给出下面程序运行结果,注意掌握自动类型转换和强制类型转换的用法。 / 定义变量 char c = a; byte b = 10; int i = 100; long l = 1000l; float f = 2.72f; double d = 3.14159; / 自动类型转换 int ii = c + i; long ll = l - ii; float ff = f * b; double dd = ff / i + d; / 强制类型转换 byte bb = (byte)i; int iii = (int)ll; / 显示 System.out.println(ii= + ii + , ll= + ll + , ff= + ff + , dd= + dd); System.out.println(bb= + bb + , iii= + iii);根据运行结果,请问:(1)哪些变量用到了自动类型转换,哪些用到了强制类型转换?(2)强制类型转换可能会产生什么样的问题?(3)变量dd的结果和你预期的结果有什么样的偏差,为什么?2. 给出下面程序的运行结果。 int a = 20, b = 3, c =4, d = 5; int value1,value2,value3; value1 = a + b+; value2 = a + +c; value3 = a+ + d; System.out.println(value1= + value1 + , value2= + value2 + , value3= + value3); boolean x,y; x = !(cd) | b*ca & ab; y = c=d & bc+d | a-bc+d & !x; System.out.println(x= + x + , y= + y);根据运行结果,请问:(1)上面程序用到哪些运算符,其优先级如何?(2)“+”运算符放到变量之后和之前有什么区别?(3)“a+ +b”、“a+b”和“a+ +b”一样吗,为什么?3. 用条件运算符编写Java程序,取两数之中较大的数及较小的数,已知两个数为10和5。4. 已知某学生三科考试成绩分别为87、92和75分,试求此学生考试成绩总和及平均分,要求平均分保留2位小数。5. 计算半径为10的圆面积和周长。注意,的值使用Java 中的Math.PI。三、思考题1定义变量的作用是什么?2Java运算符的优先级与结合性是怎样的?3&和&有什么区别?4break,continue在流程控制中的作用。四、实验报告1、实验完成后,检查是否达到试验目的。2、编写实验报告(打印或手写均可),在下一次上实验课时提交。3、评出成绩,按五级(A,B,C,D、E)评分。实验三 流程控制语句一、实验目的1. 熟练掌握选择结构控制的程序设计方法;2. 熟练掌握循环结构控制的程序设计方法。二、实验内容与要求(一)实验要求1. 理解if语句、ifelse语句在程序设计中的运用;2. 学会switch语句,if嵌套语句在多重选择程序设计中的运用;3. 理解while语句、dowhile语句和for语句实现循环的方法;4. 学会运用while语句、dowhile语句和for语句实现循环;5. 学会多重循环和循环嵌套语句的使用。(二)实验内容1. 编程实现学生成绩所在等级,其中,成绩大于等于90分为优秀,大于等于80分为小于90分为良,大于等于60分小于80分为及格,小于60分为不及格。假设学生成绩为85分。2. 给出下面程序的运行结果及实现的功能。/* Main.java */package experiment3;public class Main public static void main(String args) int nowYear = 2009; int nowMonth = 3; if (args.length0) nowYear = Integer.parseInt(args0); if (args.length1) nowMonth = Integer.parseInt(args1); Question3_2 questionInstance = new Question3_2(); System.out.println(nowYear + 年 + nowMonth + 月有 + questionInstance.run(nowYear,nowMonth) + 天); /* Question3_2.java */package experiment3;public class Question3_2 public int run(int year, int month) int days = -1; switch (month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 4: case 6: case 9: case 11: days = 30; break; case 2: if (year % 400 = 0 | (year % 4 = 0 & year % 100 != 0) days = 29; else days = 28; return days; 3. 给出下面程序的运行结果和实现的功能。 System.out.println(输出以下数:); for (int i=100; i1000; i+) int a,b,c; a = i / 100; b = i / 10 % 10; c = i % 10; if (a*a*a+b*b*b+c*c*c=i) System.out.println(i); 4. 编写Java程序,求1000以内(包括1000)能被3整除或被5整除的所有整数之和。5. 编写Java程序,给出九九乘法表。三、实验报告1、实验完成后,检查是否达到试验目的。2、编写实验报告(打印或手写均可),在下一次上实验课时提交。3、评出成绩,按五级(A,B,C,D、E)评分。实验四 面向对象程序设计初步一、实验目的1. 掌握根类Object的使用方法;2. 掌握类描述类Class的使用方法;3. 掌握系统类System的使用方法;4. 掌握算术运算类Math的使用方法;5. 掌握String类和StringBuffer类的使用方法;6. 掌握日期类Date和日历类Calendar的使用方法。二、实验内容与要求(一)实验要求1. 学会利用String类分析和编写程序;2. 理解StringBuffer类的用法;3. 学会分析Date类和Calendar类程序;4. 体会System类的使用方法;5. 学会利用Math类进行编程。(二)实验内容1. 分析运行下面程序并给出程序结果,体会String类的用法。package experiment10;public class Question10_3 public void run() String s1 = Hello ; String s2 = World!; System.out.println(字符串1长: + s1.length(); System.out.println(字符串2长: + s2.length(); System.out.println(s1.concat(s2);/连接字符串 String s3 = Welcome ; String s4 = to java!; String s5 = s3 + s4; System.out.println(s5); String s6 = Nice to meet you.; String s7 = Nice to meet you.; String s8 = new String(You are very nice. ); String s9 = new String(You are very nice. ); boolean c,d,e,f; c = s6 = s7;/s6和s7指向内存中同一个存储空间 d = s6.equals(s7); e = s8 = s9;/s8和s9是两个不同的对象,在内存中占用两个不同的存储空间,他们用“=”比较时,两者的值不相等; f = s8.equals(s9);/equal方法比较的是两个变量的值; System.out.println(c + + d); System.out.println(e + + f); int i,j; i = pareTo(s7); j = pareTo(s9); System.out.println(i + + j); 2. 分析运行下面程序并给出程序结果,回答下面问题。package experiment10;import java.util.*;public class Question10_5 public void run() GregorianCalendar cal = new GregorianCalendar(); Date rightNow = cal.getTime(); System.out.println(The current time and date: + rightNow); 问题:(1)第二条语句含义是什么?(2)程序功能是什么?给出程序运行结果。(3)体会Date类和Calendar类的用法。3. 分析运行下面程序并给出程序结果,体会System类的使用方法。package experiment10;public class Question10_1 public void run() System.out.println(file.separator is set to + System.getProperty(file.separator); System.out.println(java.class.path is set to + System.getProperty(java.class.path); System.out.println(java.class.version is set to + System.getProperty(java.class.version); System.out.println(java.home is set to + System.getProperty(java.home); System.out.println(java.vendor is set to + System.getProperty(java.vendor); System.out.println(java.vendor.url is set to + System.getProperty(java.vendor.url); System.out.println(java.version is set to + System.getProperty(java.version); System.out.println(System.getProperties(); ”4. 编程程序,产生10个3位随机整数,并分两行打印输出到屏幕。三、实验报告1、实验完成后,检查是否达到试验目的。2、编写实验报告(打印或手写均可),在下一次上实验课时提交。3、评出成绩,按五级(A,B,C,D、E)评分。实验五 类与对象的设计一、实验目的1. 掌握类的声明和定义;2. 理解有静态成员和非静态成员变量的区别;3. 理解基本参数和引用参数的区别;4. 掌握类构造函数的方法;5. 实现类的方法;6. 掌握创建类实例的方法;7. 学会定义和使用具有重载方法的继承类;8. 掌握方法的重新定义。二、实验任务与要求(一)实验要求1. 理解类的构造、方法及实例化的使用;2. 学会对类的创建,构造函数的使用,类属性及方法的创建,以及类的实例化及使用;3. 会对类的创建,类的属性及方法的创建进行独立编程;4. 学会对较复杂的类进行分析;(二)实验任务1. 分析类的用法,并运行下面程序,给出程序运行结果。package experiment5;class Num int x,y,z,sum; Num(int i, int j, int k) x = i; y = j; z = k; sum = x + y + z; boolean isSameNum(Num a) if (a.x=x & a.y=y & a.z=z) return true; else return false; boolean isSameSum(Num b) if (b.sum=sum) return true; else return false; public class Question5_1 public void run() Num a = new Num(3,6,9); Num b = new Num(3,6,9); Num c = new Num(6,9,3); System.out.println(a.isSameNum(b); System.out.println(b.isSameNum(c); System.out.println(a.isSameSum(b); System.out.println(b.isSameSum(c); 2. 设计一个Dog类,属性有名称、颜色、重量和年龄,定义两个构造方法,定义toString()。声明两个方法:狗叫和狗咬。然后实例化两个Dog,分别让它们叫和咬。3 创建学生类Student来完成下面问题。(1)创建类Student,包括属性学号no、姓名name和年龄age,且都是private类型;(2)声明一个构造方法,以初始化对象的所有的域;(3)声明获得各属性(学号、姓名和年龄)的各个方法;(4)声明设置各属性(学号、姓名和年龄)的各个方法;(5)声明一个public型的toString方法,将该类所有域信息组合成一个字符串;(6)声明统计创建Student对象的个数的成员变量count和得到Student对象的个数的方法。在主类中使用Student类创建两个Student对象,输出对象所有域信息;修改其姓名和年龄,并显示。4. 在文件Question5_5.java中,分析并运行下面代码,给出输出结果。package experiment5;class Rect private double w,h; Rect(double w, double h) this.w = w; this.h = h; Rect (Rect s) w = s.w; h = s.h; double getw() return w; double geth() return h; double area() return getw() * geth(); public class Question5_5 public void run() Rect s = new Rect3; s0 = new Rect(2,3); s1 = new Rect(5,6); s2 = new Rect(new Rect(7,8); for (int i=0; is.length; i+) System.out.println(s + i + area= + si.area(); 三、实验步骤1. 实验题目1实验步骤略。2. 实验题目2实验步骤(1)在项目Experiment5中新建类Question5_2,生成文件Question5_2.java。(2)在文件Question5_2.java中已经存在一个类Question5_2,在类Question5_2外面新建一个类Dog,并添加属性的示例代码如下: private String name; private String color; private double weight; private int age;(3)在类Dog中添加无参数构造函数Dog()函数,使用默认值初始化。(4)在类Dog中添加构造函数,其中构造具体代码省略: public Dog(String name, String color, double weight, int age) /* 构造函数 */ (5)在类Dog中添加toString()函数,函数体代码如下: return Name: + name + , Color: + color + , Weight= + weight + , Age= + age;(5)完成类Dog后,再在类Question5_2中添加方法run(),编辑代码如下,同学们可以根据实际情况进行调整: Dog Tom = new Dog(Tom, white, 2.5, 1); Dog Jerry = new Dog(Jerry, blace, 1.8, 2);(3)在文件Main.java中,添加如下代码: Question5_2 questionInstance5_2 = new Question5_2(); questionInstance5_2.run(); 3. 实验题目3实验步骤(1)在项目Experiment5中新建类Question5_3,生成文件Question5_3.java。(2)在文件Question5_3.java中已经存在一个类Question5_3,在类Question5_3外面新建一个类Student,并添加属性的示例代码如下: private String no; private String name; private int age; private static int count=0;(3)继续在类Student添加构造函数如下所示: public Student(String no, String name, int age) this.no = no; = name; this.age = age; count+; (4)再在类Student添加得到和设置属性函数如下所示,这里只给出得到总数和姓名的方法如下所示: public static int getCount() return count; /* getNo() */ public String getName() return name; /* getAge() */ /* setNo(String no) */ public void setName(String name) = name; /* setAge(int age) */(5)再给出方法toString代码如下: public String toString() return 学号: + this.no + t姓名: + + t年龄: + this.age; (6)完成类Student后,在类Question5_3中添加方法run(),编辑示例代码如下: Student s1 = new Student(001,张三, 21); System.out.println(加入学生s1后,总人数为: + Student.getCount(); Student s2 = new Student(002, 李四, 22); System.out.println(加入学生s2后,总人数为: + Student.getCount(); s1.setAge(23); s2.setName(王五); System.out.println(s1.toStr(); System.out.println(s2.toStr();(7)在文件Main.java中,添加如下代码: Question5_3 questionInstance5_3 = new Question5_3(); questionInstance5_3.run();4. 实验题目4实验步骤略。四、实验报告1、实验完成后,检查是否达到试验目的。2、编写实验报告(打印或手写均可),在下一次上实验课时提交。3、评出成绩,按五级(A,B,C,D、E)评分。实验六 类的继承一、实验目的1. 理解类继承的概念;2. 掌握从现有类中继承类;3. 掌握声明和使用继承类对象的方法。二、实验任务与要求(一)实验要求1. 编写继承类;2. 编写超类、继承类的属性和方法;(二)实验任务1. 根据下面程序分析类继承的实现过程,给出程序运行之后的结果。Question6_1.java代码如下:package experiment6;public class Question6_1 public void run() B sub = new B(); System.out.println(i of B is: + sub.i); System.out.println(i of Bs super is: + sub.geti(); sub.addi(); System.out.println(i of B is: + sub.i); System.out.println(i of Bs super is: + sub.geti(); class A int i=100; public void addi() i+; class B extends A int i=10; public void minusi() i-; public int geti() return super.i; 2. 根据下面给出的客户程序,设计类Shape, Rectangle和Circle。public class Question6_2 public void run() Shape r, c; r = new Rectangle(0.6f, 1.2f); c = new Circle(3.5f); System.out.println(高为1.2,宽为0.6的矩形面积为: + a_c.area(0.6f, 1.2f); System.out.println(半径为3.5的圆的面积为: + a_c.area(3.5f); System.out.println(高为1.2,宽为0.6的矩形周长为: + a_c.circumference(0.6f, 1.2f); System.out.println(半径为3.5的圆的周长为: + a_c.circumference(3.5f); 3. 下面是3个类的构造方法,要利用继承改写代码,上机验证你的代码。package experiment6;class A String name, color; int age; public A() name = Animal; color = Black; age = 0; class B String name, color; int age; boolean hasLung; public B() name = Fish; color = Golden; age = 1; hasLung = false; class C String name, color; int age; boolean hasTail; public C() name = Cat; color = White; age = 2; hasTail = true; 4. 编写Java程序,要求利用方法重载,求任意2个数或3个数的最大数,其中,这2个数或3个数要么全是整数,要么全是浮点数。提示:(1)方法重载在2个数中使用2次,3个数中使用2次;(2)求3个数的时候也可以使用2个数的方法。5. 运行教材中的例子。三、实验步骤1. 实验题目1实验步骤略。2. 实验题目2实验步骤(1)在项目Experiment7中新建类Question6_2,生成文件Question6_2.java。(2)在文件Question6_2.java中添加一个抽象类Shape,编辑代码如下:abstract class Shape public Shape(String name) System.out.println(此形状为: + name); abstract public double area(); abstract public double circumference();(3)然后设计类Circle实现抽象类Shape,部分代码如下:class Circle extends Shape private double radius; /* Constructor method omitted*/ public double area() /* The detail of method area() is omitted */ public double circumference() /* The detail of method circumference() is omitted */ (4)同样设计类Rect,代码略。(5)在类Question6_2的方法run()中给出示例代码: Shape rect = new Rect(0.6, 1.2); System.out.println(高为1.2,宽为0.6的矩形面积: + rect.area(); System.out.println(高为1.2,宽为0.6的矩形周长: + rect.circumference(); Circle circle = new Circle(3.5); System.out.println(半径为3.5的圆的面积: + circle.area(); System.out.println(半径为3.5的圆的周长: + circle.circumference();(7)在文件Main.java中,添加如下代码: Question7_1 questionInstance7_1 = new Question7_1(); questionInstance7_1.run();(8)按F6运行程序。3. 实验题目3实验步骤略。4. 实验题目4实验步骤略。5. 实验题目5实验步骤略。四、实验报告1、实验完成后,检查是否达到试验目的。2、编写实验报告(打印或手写均可),在下一次上实验课时提交。3、评出成绩,按五级(A,B,C,D、E)评分。实验七 抽象类和接口一、实验目的1. 掌握抽象类和抽象方法的定义和使用;2. 理解最终类、最终变量和最终方法的使用方法;3. 掌握接口的定义和使用;4. 掌握包的使用。二、实验任务与要求(一)实验要求1. 实现抽象类的变量和抽象方法,对抽象类进行编程;学会最终变量的使用;2. 学会分析接口;理解包的使用;3. 学会分析接口,并能够对接口进行定义和实现;理解包的使用;4. 学会对接口进行多重继承,并实现对接口的定义。(二)实验任务1. 验证教材中的例子,体会抽象类和接口的区别。2. 假设在银行定期存款分半年期和一年期两种。如果是半年定期存款,利息率为1.75%;如果是一年定期存款,利息率为2.25%。无论哪种存款,在得到利息后还要交利息所得税5%。根据不同的存款金额,分别计算存款半年和一年相应的利息。要求:(1)设计一个存款抽象类Cash,成员变量包括存款金额amount、利息率interest和利息所得税tax(为最终类),成员方法只有抽象方法calculate(),用来计算利息;(2)定义两个类HalfCash和FullCash,分别用来完成计算和显示定期存款半年和一年相应的利息;(3)给出程序,当存款金额为1000元时,运行出其结果。3. 分析下面程序的输出结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论