面向对象程序设计实验指导书(2012级适用)

发布时间:2015-06-19 20:50:38

辽东学院自编教材

《面向对象程序设计》

实验指导书

王昕

(信息管理及电子商务专业用)

信息技术学院

20146

实验一 JDK的安装和配置及帮助文档的使用 1

实验二 基本数据类型和控制语句的使用 3

实验三 类与对象的使用 6

实验四 继承和接口的使用 9

实验五 Java基本类库的使用 15

实验六 GUI编程 19

实验七 多线程 22

实验八 输入输出流 24

实验九 网络编程 26


实验一 JDK的安装和配置及帮助文档的使用

实验类型: 验证型 实验课时: 2 指导教师:

间:201 次:第 教学周次:第

实验分室: 实验台号: 员:

一、 实验目的

1. JDK下载、安装与开发环境设置

2. 学习编写第一个Java 程序

二、 实验内容和要求

1. JDK的安装及配置

1) 下载JDK 1.7或更高版本及其帮助文档。

2) 执行安装文件并按提示进行安装。

3) 设置环境变量,使用鼠标右击我的电脑”->属性->高级->环境变量

系统变量->新建->变量名:JAVA_HOME 变量值:为JDK的安装目录,例如c:\jdk1.7

系统变量->新建->变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib,注意路径中最前面的.代表当前路径,一定要加上。

修改系统变量Path,在其值的后面加上:%JAVA_HOME%\bin;

2. 编写JAVA程序

1)使用文本编辑器(例如记事本)编写如下代码,并保存为文件:Hello.java(注意:Java区分大小写)。

public class Hello

{

public static void main (String args[ ])

{

System.out.println("你好,很高兴学习Java");

}

}

编译运行:

DOS环境下进入Hello1.java文件所在的路径,然后输入下列命令进行编译:

javac Hello.java

输入下列命令运行程序:

java Hello

2) 使用文本编辑器(例如记事本)编写如下代码,并保存为文件FirstApplet.java

import java.applet.*;

import java.awt.*;

public class FirstApplet extends Applet

{ public void paint(Graphics g)

{ g.setColor(Color.red);

g.drawString("我一边喝着咖啡,一边学Java",5,30);

g.setColor(Color.blue);

g.drawString("我学得很认真",10,50);

}

}

编译此文件,再编写一个静态网页文件命名为applet.html,内容如下所示:

FirstApplet .class height=100 width=300>

最后在命令提示符下执行appletviewer applet.html

3.利用Java帮助文档查看System类的用法。

打开Java帮助文档,单击页面上方的API&Language链接,在弹出的页面中单击上方的Java 2 Platform API Specification链接,在页面左侧窗格中找到System类(所有的类是按字典方式排列),查看其out实例变量的用法。

三、 思考与练习

1. 什么是JDK

2什么是Java虚拟机,其工作机制是什么


实验二 基本数据类型和控制语句的使用

实验类型: 验证型 实验课时: 2 指导教师:

间:201 次:第 教学周次:第

实验分室: 实验台号: 员:

一、 实验目的

1. 掌握基本数据类型的运算规则。

2.掌握基本控制结构的使用方法。

二、 实验内容和要求

1. 编写程序

1)针对8种基本类型分别定义8个变量,为变量赋相应的合法值并输出显示出来

2) 已知本班名同学各科成绩的平均分(在程序中自定义变量avg,任意赋值),根据同学的平均分计算其奖学金等级并将结果输出显示出来。奖学金等级计算方法为大于等于90分为一等,大于等于85分为二等,大于等于80分为三等。请写出程序实现上述功能。

2.写出下列程序运行结果

1)

public class Example2_2

{ public static void main(String args[])

{ int x=2,y=1;

switch(x+y)

{ case 1 :

System.out.println(x+y);

break;

case 3:

System.out.println(x+y);

case 0:

System.out.println(x+y);

break;

default: System.out.println("没有配的"+(x+y));

}

}

}

2)

public class Example2_3

{ public static void main(String args[])

{ long sum=0,a=5,item=a,n=10,i=1;

for(i=1;i<=n;i++)

{ sum=sum+item;

item=item*10+a;

}

System.out.println(sum);

}

}

三、 思考与练习

1.Java语言的基本数据类型有哪些,哪些数据类型之间可以相互转换

2.Java语言的表达式有哪些类型

实验三 对象的使用

实验类型: 验证型 实验课时: 4 指导教师:

间:201 次:第 教学周次:第

实验分室: 实验台号: 员:

一、 实验目的

1.掌握类的定义及使用方法

2. 掌握包的基本使用方法。

二、 实验内容和要求

1.完善程序并正确运行。

public 【代码1 BubbleSort

{

public static void 【代码2

{

BubbleSort bs=【代码3;

int[] array = {10,5,7,12};

System.out.print("排序前;");

bs.print(array);

bs.bubbleAscSort(array);

bs.bubbleDescSort(array);

}

/**

* 冒泡升序排序

* @param array

*/

public void bubbleAscSort(int[] array)

{

int length = array.length;

int temp=0;

for(int i=0;i

{

for(int j=0;j

{

if(array[j+1]

{

temp = array[j];

array[j] = array[j+1];

array[j+1] = temp;

}

}

}

System.out.println();

System.out.print("升序排序后;");

【代码4print(array);

}

/**

* 冒泡降序排序

* @param array

*/

public void bubbleDescSort(int[] array)

{

int length = array.length;

int temp=0;

for(int i=0;i

{

for(int j=0;j

{

if(array[j+1]>array[j])

{

temp = array[j];

array[j] = array[j+1];

array[j+1] = temp;

}

}

}

System.out.println();

System.out.print("降序排序后;");

print(array);

}

public void print(int[] array)

{

int length = array.length;

for(int i=0;i

{

System.out.print(array[i]);

if(i!=length-1)

{

System.out.print(",");

}

}

}

}

2. 上面【代码4print(array)前面默认省略了什么关键字,该关键字含义是什么

3. 将上面程序放到cn.ldxy.sort包中,如何修改程序,并写出编译运行该程序的完整命令

三、 思考与练习

1.构造方法与普通方法的区别是什么?

2.静态变量/方法与实例变量/方法的区别是什么?


实验四 继承接口的使用

实验类型: 验证型 实验课时: 6 指导教师:

间:201 次:第 教学周次:第

实验分室: 实验台号: 员:

一、 实验目的

1掌握类的继承、组合、重置和转换方法。

2.掌握接口的基本使用方法。

二、 实验内容和要求

1. 定义了一个接口Shape,在其中声明计算面积和体积的方法,用类PointCircleCylinder实现该接口。完善程序并写出程序运行结果

//定义接口Shape

interface Shape

{

//计算面积

public abstract double area();

//计算体积

public abstract double volume();

//返回实现该接口的类的名称

public abstract String getName();

}

//定义类Point

class Point implements Shape

{

protected int xPosition, yPosition; //Point的坐标

//没有参数的构造方法,通过setPoint方法设置坐标为(00

public Point()

{

【代码1

}

//带有两个参数的构造方法,设置坐标为(xPositionCoordinateyPositionCoordinate

public Point(int xPositionCoordinate, int yPositionCoordinate)

{

【代码2

}

//设定Point的坐标值为(xPositionCoordinateyPositionCoordinate

public void setPoint(int xPositionCoordinate, int yPositionCoordinate)

{

【代码3

}

//获取x轴坐标

public int getxPosition()

{

【代码4

}

//获取y轴坐标

public int getyPosition()

{

【代码5

}

//实现接口Shape中抽象方法

//计算面积

public double area()

{

【代码6

}

//计算体积

public double volume()

{

【代码7

}

//返回当前实现接口Shape的类的名称

public String getName()

{

【代码8

}

}

//定义类Circle继承Point

class Circle extends Point

{

protected double radius;

//无参数的构造方法

public Circle()

{

//设置Circle的半径,默认为0

【代码9

}

//Circle的带有原点和半径参数的构造方法

public Circle(double circleRadius, int xPositionCoordinate,int yPositionCoordinate)

{

//调用父类Point中的构造方法,并设置半径为circleRadius

【代码10

}

//初始化Circle的半径

public void setRadius(double circleRadius)

{

radius=(circleRadius>=0?circleRadius:0);

}

//取得Circle的半径

public double getRadius()

{

【代码11

}

//覆盖方法,计算Circle的面积

public double area()

{

【代码12

}

//覆盖方法,返回当前实现接口Shape的类的名称

public String getName()

{

【代码13

}

}

//定义类Cylinder.

class Cylinder extends Circle

{

protected double height; //Cylinder的高度

//无参数构造方法

public Cylinder()

{

//调用父类的构造方法,并设置高为0

【代码14

}

//带有详细参数的构造方法

public Cylinder(double cylinderHeight,double cylinderRadius,

int xPositionCoordinate, int yPositionCoordinate)

{

//调用父类的构造方法,并设置高为cylinderHeight

【代码15

}

//设置Cylinder的高度

public void setHeight(double cyPositionlinderHeight)

{

height=(cyPositionlinderHeight>=0?cyPositionlinderHeight:0);

}

//获取Cylinder的高度

public double getHeight()

{

【代码16

}

//覆盖方法,计算Cylinder的面积,这里是表面积

public double area()

{

【代码17

}

//覆盖方法,计算Cylinder的体积

public double volume()

{

【代码18

}

//以字符串的形式返回Cylinder的信息,如Center =(xPositionCoordinateyPositionCoordinate)Height = height

public String toString()

{

return super.toString()+"; Height = "+height;

}

//覆盖方法,返回当前实现接口Shape的类的名称

public String getName()

{

【代码19

}

}

public class InterfaceTest

{

public static void main(String args[])

{

//创建对象

Point point=new Point(3,15);

Circle circle=new Circle(5.5,23,10);

Cylinder cylinder=new Cylinder(10,6.5,20,20);

//创建一个Shape数组

Shape Shapes[]=new Shape[3];

Shapes[0]=point;

Shapes[1]=circle;

Shapes[2]=cylinder;

//获取各个对象的信息

String output=point.getName()+": "+point.toString()+"\n"+circle.getName()+":

"+circle.toString()+"\n"+cylinder.getName()+": "+cylinder.toString();

for (int i=0;i

{

output+="\n\n"+Shapes[i].getName()+": "+Shapes[i].toString()+"\nArea = "

+Shapes[i].area()+"\t\tVolume = "+Shapes[i].volume();

}

System.out.println();

System.out.println(output);

}

}

思考与练习

1子类将继承父类的哪些成员变量和方法?

2子类在什么情况下隐藏父类的成员变量和方法?


实验五 Java基本类库的使用

实验类型: 验证型 实验课时: 4 指导教师:

间:201 次:第 教学周次:第

实验分室: 实验台号: 员:

一、 实验目的

掌握常用工具类的使用方法。

二、 实验内容和要求

1.完善下面程序并正确运行

class StringExample

{ public static void main(String args[])

{ String s1=new String("you are a student"),

s2=new String("how are you");

if(【代码1) // 使用equals方法判断s1s2是否相同

{

System.out.println("s1s2相同");

}

else

{

System.out.println("s1s2不相同");

}

String s3=new String("210602198********");

if(【代码2) //判断s3的前缀是否是“210602”

{

System.out.println("辽宁省丹东市身份证");

}

String s4=new String(""),

s5=new String("");

if(【代码3)//按着字典序s4大于s5的表达式。

{

System.out.println("按字典序s4大于s5");

}

else

{

System.out.println("按字典序s4小于s5");

}

int position=0;

String path="c:\\java\\jsp\\A.java";

position=【代码5 //获取path中最后出现目录分隔符号的位置

System.out.println("c:\\java\\jsp\\A.java中最后出现\\的位置:"+position);

String fileName=【代码6//获取path“A.java”子字符串。

System.out.println("c:\\java\\jsp\\A.java中含有的文件名:"+fileName);

String s6=new String("100"),

s7=new String("123.678");

int n1=【代码7 //s6转化成int型数据。

double n2=【代码8 //s7转化成double型数据。

double m=n1+n2;

System.out.println(m);

String s8=【代码9 //String调用valuOf(int n)方法将m转化为字符串对象

position=s8.indexOf(".");

String temp=s8.substring(position+1);

System.out.println("数字"+m+""+temp.length()+"位小数") ;

String s9=new String("ABCDEF");

char a[]=【代码10 //s9存放到数组a中。

for(int i=a.length-1;i>=0;i--)

{

System.out.print(" "+a[i]);

}

}

}

2.写出下面程序运行结果

1)

import java.util.*;

public class CalendarExample

{ public static void main(String args[])

{ System.out.println(" ");

Calendar calendar=Calendar.getInstance();

calendar.set(2014,6,1); //将日历翻到201461日。

int 星期几=calendar.get(Calendar.DAY_OF_WEEK)-1;

String a[]=new String[星期几+31];

for(int i=0;i<星期几;i++)

{ a[i]="**";

}

for(int i=星期几,n=1;i<星期几+31;i++)

{ if(n<=9)

a[i]=String.valueOf(n)+" ";

else

a[i]=String.valueOf(n) ;

n++;

}

for(int i=0;i

{ if(i%7==0)

{ System.out.println("");

}

System.out.print(" "+a[i]);

}

}

}

2)

public class TestMath

{

double x=-6.4;

double y=3.2;

public static void main(String args[])

{

double d = Math.random();

System.out.println("得到一个随机数是:"+d);

TestMath tm=new TestMath();

double p = 2 * Math.PI*Math.abs(tm.x);

System.out.println("半径为"+Math.abs(tm.x)+"的圆的周长是:"+p);

System.out.println(tm.x+""+tm.y+"的最大值是:"+Math.max(tm.x,tm.y));

System.out.println(tm.x+""+tm.y+"的最小值是:"+Math.min(tm.x,tm.y));

System.out.println(""+tm.y+"为底,以"+tm.x+"为指数的幂值是:"+

Math.pow(tm.y,tm.x));

System.out.println(tm.y+"的平方根是:"+Math.sqrt(tm.y));

}

}


实验六 GUI编程

实验类型: 设计型 实验课时: 4 指导教师:

间:201 次:第 教学周次:第

实验分室: 实验台号: 员:

一、 实验目的

1掌握事件处理机制。

2掌握常用布局管理器的使用方法。

3掌握常用Swing组件的使用方法

二、 实验内容和要求

1. 写一个带菜单的窗口程序,要求具有一个“调色”菜单,菜单中包括“红色”和“蓝色”两个命令项,单击其中任意一个命令能够将窗口背景色调整为相应颜色。

2.下面程序代码的功能是模拟某种应用软件界面,请写出程序的输出结果。

import java.awt.*;

import javax.swing.*;

public class Align extends JFrame

{

private GridLayoutPane gridPanel;

public Align()

{

Container container=getContentPane();

gridPanel=new GridLayoutPane();

container.add(gridPanel);

container.add(new JButton("9"),BorderLayout.SOUTH);

setSize(400,300);

setVisible(true);

}

public static void main(String[] args)

{

Align application=new Align();

application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

class GridLayoutPane extends JPanel

{

static final int n=3;

public GridLayoutPane()

{

setLayout(new GridLayout(n,n));

for (int i=0; i

{

for(int j=0; j

{

int k=i*n+j;

add(new JButton(""+k));

}

}

}

}


实验七 多线程

实验类型: 设计型 实验课时: 4 指导教师:

间:201 次:第 教学周次:第

实验分室: 实验台号: 员:

一、 实验目的

1. 掌握多线程程序的编写方法。

2. 掌握线程的常见操作。

二、 实验内容和要求

1. 利用多线程机制实现一个简单的英文打字程序

思考与练习

1实现多线程可以用哪两种基本方法?两种方法有何不同

实验八 输入输出流

实验类型: 设计型 实验课时: 2 指导教师:

间:201 次:第 教学周次:第

实验分室: 实验台号: 员:

一、 实验目的

1.掌握操作文件的基本方法。

2掌握基本输入输出流的使用方法。

二、 实验内容和要求

1. 编写一个实现文件复制功能的程序(复制任意文件即可)。

思考与练习

1InputStreamOutputStream的基本方法是什么,写出两个以上即可

2. 字符流和字节流的区别是什么?

实验 网络编程

实验类型: 设计型 实验课时: 4 指导教师:

间:201 次:第 教学周次:第

实验分室: 实验台号: 员:

一、 实验目的

掌握套接字的基本使用方法。

二、 实验内容和要求

1.编写一个简单的C/S模式聊天室应用程序。

面向对象程序设计实验指导书(2012级适用)

相关推荐