《Java语言程序设计》实验指导书.docx
- 文档编号:16833143
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:36
- 大小:28.03KB
《Java语言程序设计》实验指导书.docx
《《Java语言程序设计》实验指导书.docx》由会员分享,可在线阅读,更多相关《《Java语言程序设计》实验指导书.docx(36页珍藏版)》请在冰点文库上搜索。
《Java语言程序设计》实验指导书
《Java语言程序设计》
实验指导书
熊利祥编
武汉理工大学华夏学院
2013年5月
前言
一、实验课目的
通过本课程的学习培养学生对计算机软件开发语言及工具的综合能力。
主要介绍Java软件开发工具及编辑工具的使用方法、语言的语法及Java类的定义和使用、使用Java进行网络和多媒体编程的方法。
通过本课程学习和上机实践,使学生掌握使用Java进行程序设计的基本技术与方法、具备软件开发的基础能力,为今后从事软件开发和应用打下基础。
二、实验要求:
1.课前预习
①认真阅读实验指导书,了解实验内容;
②认真阅读有关实验的理论知识;
③读懂程序代码。
2.实验过程
1按时到达实验室;
2认真听取老师对实验内容及实验要求的讲解;
3认真进行实验的每一步,观察程序代码与仿真结果是否相符;
4将实验过程中程序代码和仿真结果提交给老师审查;
5做完实验后,整理实验设备,关闭实验开发板电源、电脑电源后方可离开。
3.实验报告
①按要求认真填写实验报告书;
②认真分析实验结果;
③按时将实验报告交给老师批阅。
三、实验学生守则
1.保持室内整洁,不准随地吐痰、不准乱丢杂物、不准大声喧哗、不准吸烟、不准吃东西;
2.爱护公务,不得在实验桌及墙壁上书写刻画,不得擅自删除电脑里面的文件;
3.安全用电,严禁触及任何带电体的裸露部分,严禁带电接线和拆线;
4.任何规章或不按老师要求操作造成仪器设备损坏须论价赔偿。
目录
实验一类的封装、继承与多态实验…………………………………………………………
实验二GUI图形界面设计实验……………………………………………………………
实验三socket网络编程实验……………………………………………………………
实验一类的封装、继承与多态实验
一、实验目的
1.通过编程和上机实验理解Java语言是如何体现面向对象编程基本思想。
2.了解类的封装方法,以及如何创建类和对象。
3.了解成员变量和成员方法的特性。
4.掌握面向对象程序设计的方法。
5.掌握类的继承和多态的作用。
二、实验要求
1.熟悉Java程序运行环境的安装、配置方法,掌握编写与运行Java程序的方法。
2.编写一个体现面向对象思想的程序。
3.编写体现类的继承性(成员变量,成员方法、成员变量隐藏)的程序。
4.编写体现类的多态性(成员方法重载、构造方法重载)的程序。
三、实验内容
(一)编写一个体现面向对象思想的程序。
(1)程序功能:
求某个数的若干次幂
(2)程序源代码如下:
classP
{
inta,b,pwr;
P(inti,intj)
{
a=i;
b=j;
pwr=1;
for(;j>0;j--)
pwr*=i;
}
intGetpwr()
{
returnpwr;
}
}
publicclasspower
{
publicstaticvoidmain(String[]args)
{
Pp1=newP(5,3);
Pp2=newP(17,2);
System.out.println(p1.a+"的"+p1.b+"幂等于"+p1.Getpwr());
System.out.println(p2.a+"的"+p2.b+"幂等于"+p2.Getpwr());
}
}
(3)编译power.java,产生类文件power.class。
(4)运行该程序
(二)编写一个体现类的继承性的程序。
1.继承的概念
新类可从现有的类中产生,并保留现有类的成员变量和方法并可根据需要对它们加以修改。
新类还可添加新的变量和方法。
这种现象就称为类的继承。
当建立一个新类时,不必写出全部成员变量和成员方法。
只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。
被继承的类称为父类或超类(superclass),这个新类称为子类。
Java 提供了一个庞大的类库让开发人员继承和使用。
设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。
你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。
所以,通常要对子类进行扩展,即添加新的属性和方法。
这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。
继承的意义就在于此。
2.创建父类
(1)编写程序文件father.java,源代码如下:
publicclassfather
{
protectedStringxm;//具有保护修饰符的成员变量
protectedintxh;
voidsetdata(Stringm,inth)//设置数据的方法
{
xm=m;
xh=h;
}
publicvoidprint()//输出数据的方法
{
System.out.println(xm+","+xh);
}
}
3.创建继承的类
(1)程序功能:
通过父类father产生子类son,其不仅具有父类的成员变量xm(姓名)、xh(学号),还定义了新成员变量xy(学院)、xi(系)。
在程序中调用了父类的print方法,同时可以看出子类也具有该方法。
(2)编写程序文件son.java,源代码如下:
publicclasssonextendsfather
{
protectedStringxy;
protectedStringxi;
publicstaticvoidmain(Stringargs[])
{
fatherf1=newfather();
f1.setdata("张三",12321);
f1.print();
sons1=newson();
s1.setdata("李四",12345);//调用父类的成员方法
s1.xy="信息工程系";//访问本类的成员变量
s1.xi="汽车系";//访问本类的成员变量
s1.print();
System.out.print(s1.xm+","+s1.xy+","+s1.xi);
}
}
(3)编译并运行程序
注意:
父类father与子类son要在同一文件夹(路径)内。
(三)编写一个体现类的多态性的程序。
1.理解类的多态性
类的继承发生在多个类之间,而类的多态只发生在同一个类上。
在一个类中,可以定义多个同名的方法,只要确定它们的参数个数和类型不同。
这种现象称为类的多态。
多态使程序简洁,为程序员带来很大便利。
在OOP中,当程序要实现多个相近的功能时,就给相应的方法起一个共同的名字,用不同的参数代表不同的功能。
这样,在使用方法时不论传递什么参数,只要能被程序识别就可以得到确定的结果。
类的多态性体现在方法的重载(overload)上,包括成员方法和构造方法的重载。
2.成员方法的重载
成员方法的重载是指对同名方法的不同使用方式。
(1)程序功能:
定义四个重载的成员方法,它们的方法名相同,但是参数个数或者数据类型不同,方法体也不同。
在调用时根据实参的个数和数据类型进行选择。
(2)编写A.java文件,源代码如下。
publicclassD
{
publicstaticvoidmain(String[]args)
{
Bb1=newB();
inti=b1.add(1,3);
System.out.println(i);
intj=b1.add(1,3,5);
System.out.println(j);
doublem=b1.add(1.0,3.0);
System.out.println(m);
doublen=b1.add(1.0,3.0,5.0);
System.out.println(n);
}
}
classB
{
intadd(inta,intb)
{
System.out.println("inadd(int,int)");
returna+b;
}
intadd(inta,intb,intc)
{
System.out.println("inadd(int,int,int)");
returna+b+c;
}
doubleadd(doublea,doubleb)
{
System.out.println("inadd(double,double)");
returna+b;
}
doubleadd(doublea,doubleb,doublec)
{
System.out.println("inadd(double,double,double)");
returna+b+c;
}
}
(3)编译并运行程序
3.构造方法的重载
构造方法的名称和类同名,没有返回类型。
尽管构造方法看起来和一般的成员方法没有差别,但它不是方法,也不是类的成员。
因此,构造方法不能直接调用,只能由new操作符调用。
构造方法对于类是十分重要的,对象的初始化任务要靠构造方法来完成。
重载构造方法的目的是提供多种初始化对象的能力,使程序员可以根据实际需要选用合适的构造方法来初始化对象。
(1)程序功能:
定义三个重载的构造方法,它们的方法名相同,但是参数个数不同,方法体也不同。
在调用时根据实参的个数进行选择。
(2)编写A.java文件,源代码如下。
publicclassA{
publicstaticvoidmain(String[]args)
{
Bb1=newB();
Bb2=newB(5);
Bb3=newB(3,7);
b1.print();
b2.print();
b3.print();
}
}
classB
{
inta,b;
B()
{
a=b=0;
System.out.println("inB()");
}
B(inti)
{
a=b=i;
System.out.println("inB(int)");
}
B(inti,intj)
{
a=i;
b=j;
System.out.println("inB(int,int)");
}
voidprint()
{
System.out.println("a="+a+",b="+b);
}
}
(3)编译并运行程序
(3)编译并运行程序
四、思考题
1.说明什么是构造方法。
2.说明程序中有多个类时如何确定源程序文件的名称。
3.说明类的继承和多态有什么作用,在使用上应该注意什么问题。
实验二GUI图形界面设计实验
一、实验目的
1.了解图形用户界面基本组件(窗口、按钮、文本框、选择框、滚动条等)的使用方法。
2.掌握如何使用布局管理器对组件进行管理。
3.理解Java的事件处理机制。
二、实验要求
1.掌握在容器中添加组件的方法。
2.掌握使用布局管理器对组件进行管理的方法。
3.理解Java的事件处理机制、掌握为不同组件编写事件处理程序的方法。
4.掌握编写独立运行的窗口界面的方法。
三、实验内容
(一)创建图形用户界面
图形用户界面(GraphicUser Interface,简称GUI)是为方便用户使用设计的窗口界面,在图形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。
组件(Component)是构成GUI的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。
组件一般作为一个对象放置在容器(Container)内,容器是能容纳和排列组件的对象,如Applet、Panel(面板)、Frame(窗口)等。
通过容器的add方法把组件加入到容器中。
在图形用户界面中,程序和用户的交互是通过组件响应各种事件来实现的。
例如,用户单击了一个按钮,意味着发生了按钮的单击事件;选中下拉框中的一个选项,意味着发生了一个选项事件。
在Java 中能产生事件的组件叫做事件源,如按钮。
如果希望对单击按钮事件进行处理,可给事件源(按钮)注册一个事件监听器(如包含按钮的容器),如同签订了一个委托合同,当事件源发生事件时,事件监听器就代替事件源对发生的事件进行处理,这就是所谓的委托事件处理机制。
1.创建一个窗口界面
(1)程序功能:
创建一个具有关闭功能的空白窗口。
(2)编写MyFrame.java程序文件,源代码如下:
importjava.awt.*;
importjava.awt.event.*;
publicclassMyFrame
{
publicstaticvoidmain(String[]args)
{
newMyFrame();
}
MyFrame()
{
Framef=newFrame("初始窗口");//创建窗口对象
f.setSize(350,200);//设置窗口大小
f.setVisible(true);//设置窗口是可视的
f.addWindowListener(newWindowAdapter(){//为窗口添加窗口事件适配器
publicvoidwindowClosing(WindowEvente){//关闭窗口事件的方法
System.exit(0);}
});
}
}
importjava.awt.*;
importjava.awt.event.*;
publicclassMyFrameextendsFrame
{
publicstaticvoidmain(String[]args)
{
newMyFrame();
}
MyFrame()
{
super("初始窗口");//创建窗口对象
setSize(350,200);//设置窗口大小
setVisible(true);//设置窗口是可视的
addWindowListener(newWindowAdapter(){//为窗口添加窗口事件适配器
publicvoidwindowClosing(WindowEvente){//关闭窗口事件的方法
System.exit(0);}
});
}
}
importjava.awt.*;
importjava.awt.event.*;
publicclassMyFrameextendsFrame
{
publicstaticvoidmain(String[]args)
{
MyFramef=newMyFrame("初始窗口");//创建窗口对象
f.setSize(350,200);//设置窗口大小
f.setVisible(true);//设置窗口是可视的
f.addWindowListener(newWindowAdapter(){//为窗口添加窗口事件适配器
publicvoidwindowClosing(WindowEvente){//关闭窗口事件的方法
System.exit(0);}
});
}
publicMyFrame(Strings)
{
super(s);
}
}
(3)编译MyFrame.java,产生类文件MyFrame.class。
(4)运行该程序
2.在窗口中添加组件
(1)程序功能:
在窗口中添加组件。
(2)编写MyFrame.java程序文件,源代码如下:
importjava.awt.*;
importjava.awt.event.*;
publicclassMyFrameextendsFrameimplementsActionListener
{
Buttonbtn1,btn2;
TextFieldf,tf1,tf2;
TextAreaArea;
MyFrame(){
super("添加组件的窗口");
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
setSize(350,250);//设置窗口大小
setLocation(200,200);//设置窗口显示位置
setFont(newFont("Arial",Font.PLAIN,12));//设置字体
setLayout(newFlowLayout());
Area=newTextArea(6,40);
tf1=newTextField(10);tf2=newTextField(10);
btn1=newButton("显示");btn2=newButton("退出");
f=newTextField(20);
add(Area);add(newLabel("用户名"));
add(tf1);add(newLabel("电话"));
add(tf2);add(f);add(btn1);add(btn2);
tf1.addActionListener(this);tf2.addActionListener(this);
btn1.addActionListener(this);btn2.addActionListener(this);
show();
}
publicstaticvoidmain(Stringargs[]){
newMyFrame();
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==btn1)
f.setText("你按下了“"+e.getActionCommand()+"”按钮");
if(e.getSource()==tf1)
Area.append("用户名:
"+tf1.getText()+"\n");
if(e.getSource()==tf2)
Area.append("电话:
"+tf2.getText()+"\n");
if(e.getSource()==btn2)
{
for(inti=0;i<100000000;i++);
dispose();//只关闭当前窗口,注销该对象
}
}
}
(3)编译MyFrame.java,产生类文件MyFrame.class。
(4)运行该程序
3.为窗口添加菜单
(1)程序功能:
在窗口中添加菜单栏,在菜单栏添加菜单项,并添加下拉菜单和2级菜单,通过选择菜单项可以执行不同操作,如“打开”MyFrame类生成的窗口。
(2)编写MyFrame.java程序文件,源代码如下:
importjava.awt.*;
importjava.awt.event.*;
publicclassMyFrameextendsFrameimplementsActionListener
{
Panelp=newPanel();
Buttonb=newButton("退出");
MenuBarmb=newMenuBar();//以下生成菜单组件对象
Menum1=newMenu("文件");
MenuItemopen=newMenuItem("打开");
MenuItemclose=newMenuItem("关闭");
MenuItemexit=newMenuItem("退出");
Menum12=newMenu("编辑");
MenuItemcopy=newMenuItem("复制");
MenuItemcut=newMenuItem("剪切");
MenuItempaste=newMenuItem("粘贴");
Menum2=newMenu("帮助");
MenuItemcontent=newMenuItem("目录");
MenuItemindex=newMenuItem("索引");
MenuItemabout=newMenuItem("关于");
MyFrame()
{
super("添加菜单的窗口");
setSize(350,200);
add("South",p);
p.add(b);
b.addActionListener(this);
m1.add(open);//将菜单项加入到菜单m1中
m1.add(close);
m1.addSeparator();//在菜单中添加分隔条
m1.add(exit);
open.addActionListener(this);//给菜单项open注册事件监听器
exit.addActionListener(this);
mb.add(m1);//将菜单m1加入到菜单栏mb中
m12.add(copy);m12.add(cut);m12.add(paste);
m1.add(m12);//将m12作为2级菜单添加到m1菜单项中
m2.add(content);m2.add(index);m2.addSeparator();m2.add(about);
mb.add(m2);
setMenuBar(mb);//设置菜单栏为mb
show();//显示组件
}
publicstaticvoidmain(Stringargs[])
{
newMyFrame();
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getActionCommand()=="退出")
System.exit(0);
if(e.getActionCommand()=="打开")
newMyFrame().setTitle("新开窗口");
}
}
importjava.awt.*;
importjava.awt.event.*;
publicclassMyFrameextendsFrameimplementsActionListener
{
FileDialogfd=newFileDialog(this);
Panelp=newPanel();
Buttonb=newBut
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java语言程序设计 Java 语言程序设计 实验 指导书