实验目的:
1、我们使用的开发平台是NetBeans IDE,希望通过本次实验同学们能对NetBeans IDE的开发环境有一个清楚的了解并能熟练运用,对Java语法进行初步运用,对面向对象的编程有一个直观的认识和深入理解,对于Java的基础知识进行理解运用和巩固。为以后的实验中能够进行开发程序打下基础。
2、通过编程和上机实验理解Java语言是如何体现面向对象编程基本思想,了解类的封装方法,以及如何创建类和对象,了解成员变量和成员方法的特性,掌握OOP方式进行程序设计的方法,了解类的继承性和多态性的作用。
实验内容:
●1. 编写一个体现面向对象思想的程序。
●2. 编写一个创建对象和使用对象的方法的程序。
●3. 编写一个显示当前日期和时间的程序。
●4. 编写不同成员变量修饰方法的程序。
●5. 编写不同成员方法修饰方法的程序。
●6. 编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序。
●7. 编写体现类的多态性(成员方法重载、构造方法重载)的程序。
实验步骤:
●双击桌面上的NetBeans IDE 6.5.1快捷方式或在文件菜单中打开它。
图1-1
点击文件,创建新项目,创建一个项目名:experiment1。
点击按钮下一步:
在项目名称处输入:experiment1 然后点击完成:
在experiment1 下实现
程序
样例1:编写应用程序输出如下三角形。
*
***
*****
*******
【参考程序】
public class Star
{
public static void main(String a[])
{
System.out.println(" *");
System.out.println(" ***");
System.out.println(" *****");
System.out.println("*******");
}
}
程序运行结果如图1-2所示。
【编程技巧】
(1) main方法是应用程序执行入口;
(2) 如何在命令控制台输出字符串。
(3) 输出杨辉三角的前10行;进一步用参数传递的方式输出,例如,shuchu(n)表示输出杨辉三角的前n行。
样例2:编写Applet程序绘制一个红色三角形,三角形绘制兰色文字“三角形”。
【参考程序】
(1) Applet程序
import java.awt.*;
import java.applet.Applet;
public class triangle extends Applet
{
public void paint(Graphics g)
{
g.setColor(Color.red); //设置画笔颜色为红色
g.drawLine(80,20,20,100);
g.drawLine(20,100,140,100);
g.drawLine(140,100,80,20);
g.setColor(Color.blue); //设置画笔颜色为兰色
g.drawString("三角形",65,80);
}
}
【编程技巧】
(1) 如何引入某个包的类;
(2) 编写Applet程序要继承Applet类;
(3) paint方法会自动执行,用画笔对象可绘制图形。
(2) HTML文件
用appletviewer查看程序运行结果如图1-3所示。
样例3:(创建并使用对象)
1.编写Applet程序
(1)程序功能
这个Applet程序要在页面上输出两个矩形,并伴有文字输出。
(2)LX3.java程序的源代码如下:
import java.awt.*;
import java.applet.Applet;
public class LX3 extends Applet
{
MyBox b1=new MyBox(); //创建对象b1
MyBox b2=new MyBox(170,20,60,60); //创建对象b2
public void paint(Graphics g)
{
b1.setPosition(20,20);
b1.setSize(60,60);
b1.draw(g);
g.drawString("矩形 1 的 X 位置: "+b1.getX(), 20, 100);
g.drawString("矩形 1 的 Y 位置: "+b1.getY(), 20, 120);
b2.draw(g);
g.drawString("矩形 2 的 X 位置: "+b2.getX(), b2.getX(), b2.getY()+80); g.drawString("矩形 2 的 Y 位置: "+b2.getY(), b2.getX(), b2.getY()+100);
}
}
class MyBox
{
private int x, y, width, height;
MyBox()
{
x=0;
y=0;
width=0;
height=0;
}
MyBox(int xPos, int yPos, int w, int h)
{
x=xPos;
y=yPos;
width=w;
height=h;
}
public void setPosition (int xPos, int yPos)
{
x=xPos;
y=yPos;
}
public void setSize (int w, int h)
{
width=w;
height=h;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
public void draw(Graphics g)
{
g.drawRect(x, y, width, height);
}
}
2.编写一个浏览Applet应用程序的页面文件LX3_2.HTML
3. 将LX3_2.java源程序编译为LX3.class文件
4. 使用浏览器或使用小程序查看器浏览LX3.HTML文件(即在命令提示符下输入:appletviewer LX3.HTML),运行结果如图2.2所示。
图2.2
思考:程序的结构。类与对象的关系。对象创建、使用、销毁的过程。
上机练习
✧ 基本题
1)编写一个程序输出如下图案
****** ************* **********
** ** ** **
** ** ** **
** ** ** **
** ** ** ********
** ** ** ** **
** ** ** ** **
** ** ** ** **
***** **** **********
代码:
class print
{
public static void main(String[] args)
{
System.out.println("****** ************* **********");
System.out.println("** ** ** **");
System.out.println("** ** ** **");
System.out.println("** ** ** **");
System.out.println("** ** ** ********");
System.out.println("** ** ** ** **");
System.out.println("** ** ** ** **");
System.out.println("** ** ** ** **");
System.out.println("***** **** **********");
}
}
结果如下图:
2) 编制applet程序,绘制一个长120、宽80的红色矩形,并在矩形内部绘制一个兰色内切椭圆。
代码:
import java.awt.*;
import java.applet.Applet;
public class juxing extends Applet
{
public void paint(Graphics g)
{
g.setColor(Color.red); //设置画笔颜色为红色
g.drawLine(20,20,20,100);
g.drawLine(20,20,140,20);
g.drawLine(140,20,140,100);
g.drawLine(140,100,20,100);
g.setColor(Color.blue);
g.drawOval(20,20,120,80);
}
}
✧ 提高题
1)编写一个应用程序绘制一个如下的操作菜单。
*****************************
| 1. 增加1个学生 |
| 2. 显示所有学生 |
| 3. 退出程序 |
| 请输入选择(1-3): |
*****************************
代码:
public class caidan
{
public static void main(String[] args)
{
System.out.println("*****************************");
System.out.println("| 1. 增加1个学生 |");
System.out.println("| 2. 显示所有学生 |");
System.out.println("| 3. 退出程序 |");
System.out.println("| 请输入选择(1-3): |");
System.out.println("*****************************");
}
}
结果如下图:
2)创建一个applet程序,绘制两个同心圆,园心显示“同心”两个汉字。
代码:
import java.awt.*;
import java.applet.Applet;
public class yuan extends Applet
{
public void paint(Graphics g)
{
g.setColor(Color.red); //设置画笔颜色为红色
g.drawOval(20,20,80,80);
g.drawOval(10,10,100,100);
g.drawString("同心",60,60);
}
}
3)下面的例子将建立雇员信息类EmpInfo,并实例化对象,然后打印出若干信息。
代码:
public class EmpInfo
{
String name="Robert"; // 雇员的姓名
String designation="Manager"; // 雇员的职务
String department= "Coffee Shop"; // 雇员的部门
void print()
{ // 成员方法
System.out.println(name + " is " + designation + " at " + department);
}
public static void main(String[] args)
{
EmpInfo a=new EmpInfo();
a.print();
}
}
运行结果如下:
Robert Javaman is Manager at Coffee Shop
把程序写完整,体现成员变量、方法、类和对象的定义和使用。
完整代码
public class EmpInfo
{
String name="Robert"; // 雇员的姓名
String designation="Manager";// 雇员的职务
String department= "Coffee Shop"; // 雇员的部门
void print()
{ // 成员方法
System.out.println(name + " is " + designation + " at " + department);
}
public static void main(String[] args)
{
EmpInfo a=new EmpInfo();
a.print();
}
}
结果如下图:
4)书本P42练习。P46练习。第三章课后习题。
代码:
(1)多态:
public class duotai
{
duotai()
{
System.out.println("这是没有参数的情况。");
}
duotai(int a,int b)
{
int c;
c=a+b;
System.out.println(a+"+"+b+"="+c+"(整数和整数的情况。)");
}
duotai(int a,String b)
{
System.out.println(a+b+"(整数和字符串的情况。)");
}
duotai(String a,String b)
{
System.out.println(a+b+"(字符串和字符串的情况。)");
}
public static void main(String[] agrs)
{
duotai s1,s2,s3,s4;
s1=new duotai();
s2=new duotai(11,12);
s3=new duotai(10 ,"eggs");
s4=new duotai("abc
}
}
(2)方法:
public class FangFa
{
int year=19;
int month=03;
int day=17;
int hour;
int minute;
int second;
//有参构造方法
FangFa(int hour,int minute,int second)
{
this.hour=hour;
this.minute=minute;
this.second=second;
System.out.println("现在是"+hour+"时"+minute+"分"+second+"秒。"+"(---这是有参构造方法)");
}
//无参构造方法
FangFa()
{
System.out.println("现在是"+year+"年"+month+"月"+day+"日。"+"(---这是无参构造方法)");
}
public static void main(String[] args)
{
FangFa S2;
S2=new FangFa();
FangFa S1= new FangFa(20,20,20);
}
}
(3)继承:
class father
{
int a;
father(int a)
{
this.a=a;
}
}
public class son extends father
{
int b;
son( int a,int b)
{
super(a);
this.b=b;
}
public static void main(String[] args)
{
son s=new son(1,2);
System.out.println(s.a);
System.out.println(s.b);
}
}
思考题
1)以下哪个是Java应用程序main方法的有效定义?(C)
A. public static void main();
B. public static void main( String args );
C. public static void main( String args[] );
D. public static void main( Graphics g );
E. public static boolean main( String a[] );
2) 编译和运行以下代码的结果为:(D)
public class MyMain
{
public static void main(String argv)
{
System.out.println("Hello cruel world");
}
}
A.编译错误;
B.运行输出 "Hello cruel world";
C.编译无错,但运行时指示没有定义构造方法。
D.编译无错,但运行时指示没有正确定义main方法。
3) 下列选项中不属于Java虚拟机的执行特点的一项是:(D)
A.异常处理 B.多线程 C.动态链接 D.简单易学
4) 不属于Java语言特点的一项是:(C)
A.分布式 B. 安全性 C. 编译执行 D.面向对象
5) 以下程序的运行结果为:(B)
public class Test
{
public static void main(String argv[ ])
{
System.out.println("x="+5);
}
}
A. 5 B. x=5 C. "x="+5 D. "x="5
6) 以下程序的运行结果为:(A)
public class Test
{
public static void main(String argv[ ])
{
System.out.println("good"+"morning");
}
}
A. goodmorning B. "good"+"morning"
C. good morning D. good+morning
实验总结
这次实验所使用的开发平台是NetBeans IDE,通过本次实验我们要对NetBeans IDE的开发环境有一个清楚的了解并能够熟练运用。同时对Java语法有初步运用。课堂上老师讲的语法比较抽象,所以只有在实验中应用我们才能深刻体会到java语言的强大。面向对象是java语言最重要的特征,通过编程我们对它有一个比较直观的认识和理解。实验是课堂知识学习的一个体现,课堂知识掌握的一个巩固,只有对Java的基础知识有了比较深的理解运用和巩固,我们在以后的实验中进行开发程序时才能得心应手。
通过这次实验我们理解了Java语言是如何充分体现面向对象程序编程的基本思想,以及如何创建类和对象。我们还了解了成员变量和成员方法的特性,并掌握就OOP方式进行程序设计的方法。虽然我们在实验过程中对这些代码并不是很清楚,有些地方还不明白,但通过以后的学习,我想我会越来越清楚。我们通过这次实验对java有了比较基本的认识,发现它没有想象中那么难,这对我们以后的学习增加了不少的信心和兴趣。