实验 3 面向对象程序设计.doc

上传人:scccc 文档编号:11592511 上传时间:2021-08-25 格式:DOC 页数:10 大小:69KB
返回 下载 相关 举报
实验 3 面向对象程序设计.doc_第1页
第1页 / 共10页
实验 3 面向对象程序设计.doc_第2页
第2页 / 共10页
实验 3 面向对象程序设计.doc_第3页
第3页 / 共10页
实验 3 面向对象程序设计.doc_第4页
第4页 / 共10页
实验 3 面向对象程序设计.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《实验 3 面向对象程序设计.doc》由会员分享,可在线阅读,更多相关《实验 3 面向对象程序设计.doc(10页珍藏版)》请在三一文库上搜索。

1、实验 3 面向对象程序设计一、实验目的理解 Java 语言是如何体现面向对象编程基本思想,了解类的封装方法,以及如何创建类和对象,了解成员变量和成员方法的特性,掌握OOP方式进行程序设计的方法,了解类的继承性和多态性的作用。二、实验要求1 编写一个体现面向对象思想的程序。2 编写一个创建对象和使用对象的方法的程序。3 编写一个显示当前日期和时间的程序。4 编写不同成员变量修饰方法的程序。5 编写不同成员方法修饰方法的程序。6 编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序。7 编写体现类的多态性(成员方法重载、构造方法重载)的程序。三、实验内容(一)创建 Applet 应用小程序

2、1创建一个 Applet 应用程序 P3_1.java 文件。(1)程序功能:建立一个 Applet 小程序,使其可以进行简单的加法运算。该程序要包含类、接口、属性、方法、事件等面向对象的基本元素。(2)程序源代码如下。import java.awt.*;import java.awt.event.*;import java.applet.Applet;public class P3_1 extends Applet implements ActionListener Label label1=new Label(+);Label label2=new Label(=);TextField f

3、ield1=new TextField(6);TextField field2=new TextField(6);TextField field3=new TextField(6);Button button1=new Button(相加);public void init() / 初始化add(field1);add(label1);add(field2);add(label2);add(field3);add(button1);button1.addActionListener(this);public void actionPerformed(ActionEvent e) / 处理按钮事

4、件int x=Integer.parseInt(field1.getText()+Integer.parseInt(field2.getText();field3.setText(Integer.toString(x); / 数值转换为字符串2 编写一个浏览 Applet 应用程序的页面文件 P3_1.HTML,源代码如。3 将 P3_1.java 源程序编译为 P3_1.class 文件4 使用浏览器或使用小程序查看器浏览 P3_1.HTML 文件(即在命令提示符窗口输入:appletviewer P3_1.HTML),运行。(二)创建对象并使用对象1编写 Applet 程序 程序功能:这个

5、 Applet 程序要在页面上输出两个矩形,并伴有文字输出。 P3_2.java 程序的源代码如下。import java.awt.*;import java.applet.Applet;public class P3_2 extends Applet MyBox b1=new MyBox();/创建对象 b1MyBox b2=new MyBox(170,20,60,60); /创建对象 b2public void paint(Graphics g) b1.setPosition(20,20);b1.setSize(60,60);b1.draw(g);g.drawString(矩形 1 的 X

6、 位置: +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 xP

7、os, 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

8、应用程序的页面文件 P3_2.HTML3 将 P3_2.java 源程序编译为 P3_2.class 文件4 使用浏览器或使用小程序查看器浏览P3_2.HTML 文件(即在命令提示符下输入:Appletviewer P3_2.HTML),运行.(三)编写显示当前日期和时间的程序1 编写Applet 类文件P3_3.java 程序功能:该程序通过使用一个自定义类Time,实现显示当前日期和时间的功能 P3_3.java 程序源代码如下。import java.awt.Graphics;import java.applet.Applet;import java.util.Calendar;clas

9、s Time private Calendar t;private int y, m, d, hh, mm, ss;Time ()t=Calendar.getInstance();y=t.get(t.YEAR);m=t.get(t.MONTH)+1;d=t.get(t.DATE);hh=t.get(t.HOUR_OF_DAY);mm=t.get(t.MINUTE);ss=t.get(t.SECOND);public String getDate() return y+ 年+m+月+d+日;public String getTime() String s=hh+ 时+mm+分+ss+秒;retu

10、rn s;public class P3_3 extends Applet Time t=new Time();public void paint(Graphics g) g.drawString(当前日期:+t.getDate(),50,40);g.drawString(当前时间:+t.getTime(),50,80);2 编写浏览P3_3 类的页面文件P3_3.html3 在浏览器中浏览程序运行结果。(四)使用修饰符有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。常用的修饰符如下。Public,private,protected,packa

11、ge,static,final,transient,volatile1 程序功能:通过两个类StaticDemo、P3_4 说明静态变量/方法与实例变量/方法的区别。2 编写类文件P3_4.java,程序源代码如下。class StaticDemo static int x;int y;public static int getX() return x;public static void setX(int newX) x = newX;public int getY() return y;public void setY(int newY) y = newY;public class P3_

12、4 public static void main(String args) System.out.println(静态变量x=+StaticDemo.getX();System.out.println(实例变量y=+StaticDemo.getY(); / 非法,编译时将出错StaticDemo a= new StaticDemo();StaticDemo b= new StaticDemo();a.setX(1);a.setY(2);b.setX(3);b.setY(4);System.out.println(静态变量a.x=+a.getX();System.out.println(实例变

13、量a.y=+a.getY();System.out.println(静态变量b.x=+b.getX();System.out.println(实例变量b.y=+b.getY();3 对上面的源程序进行编译,排错并运行(五)方法中参数传递的练习1 编写一个传值调用的程序文件P3_5.java。 程序功能:程序首先给整型变量x 和y 赋一个初值10,然后使用传值调用方式调用方法ff1 对x 和y 做乘方及输出x 和y 的乘方值,最后再输出x 和y 的乘方值。 程序源代码如下。class P3_5 public static void main(String args) int x=10, y=10

14、;ff1(x, y);System.out.println(x=+x+, y=+y);static void ff1(int passX, int passY) passX=passX*passX;passY=passY*passY;System.out.println(passX=+passX+, passY=+passY); 编译P3_5.java 分析其运行结果2 编写一个调用对象方法的程序文件P3_6.java。 程序功能:通过调用对象的方法在方法调用后修改了成员变量的值。 P3_6.java 程序源代码如下。class P3_6 public static void main(Str

15、ing args) Power p=new Power();p.ff2(10,10);System.out.println(方法调用后 x=+p.x+, y=+p.y);class Powerint x=10, y=10;void ff2(int passX, int passY) System.out.println(初始时 x=+x+, y=+y);x=passX*passX;y=passY*passY;System.out.println(方法调用中 x=+x+, y=+y); 编译P3_6.java(六)类的继承性练习1 进一步理解继承的含义2 创建公共类 P3_7_P(1)编写程序文

16、件 P3_7_P.java,源代码如下。public class P3_7_Pprotected String xm; /具有保护修饰符的成员变量protected int xh;void setdata(String m,int h) /设置数据的方法xm =m;xh = h;public void print() /输出数据的方法System.out.println(xm+, +xh);(2)编译 P3_7_P.java,产生类文件 P3_7_P.class。3创建继承的类(1)程序功能:通过 P3_7_P 类_产生子类 P3_8,其不仅具有父类的成员变量 xm(姓名)、xh(学号),还定

17、义了新成员变量 xy(学院)、xi(系)。在程序中调用了父类的 print方法,同时可以看出子类也具有该方法。(2)编写 P3_8.java 程序,源代码如下。class P3_8 extends P3_7_Pprotected String xy;protected String xi;public static void main(String args)P3_7_P p1 = new P3_7_P();p1.setdata(帅零,12321) ;p1.print();P3_8 s1 = new P3_8() ;s1.setdata(陈丽,12345); /调用父类的成员方法s1.xy=数

18、学学院; /访问本类的成员变量s1.xi=应用数学系; /访问本类的成员变量s1.print();System.out.print(s1.xm+, +s1.xy+, +s1.xi);(3)编译并运行程序注意:公共类 P3_7_P 与 P3_8 类要在同一文件夹(路径)内。(七)类的多态性练习1 理解类的多态性2 方法的重载方法的重载是指对同名方法的不同使用方式。 程序功能:对不同的数进行排序输出。在IntSort 类中定义3 个同名的方法sort,在 编写P3_9.java 文件,源代码如下。import java.awt.Graphics;import java.applet.Applet;

19、class IntSort public String sort(int a, int b) if (ab)return a+ +b;elsereturn b+ +a;public String sort(int a, int b, int c) int swap;if (ab) swap=a;a=b;b=swap;if (ac) swap=a;a=c;c=swap;54if (bc) swap=b;b=c;c=swap;return a+ +b+ +c;public String sort(int arr) String s= ;int swap;for (int i=0; iarr.len

20、gth; i+)for (int j=0; jarrj+1) swap=arrj;arrj=arrj+1;arrj+1=swap;for (int i=0; iarr.length; i+)s=s+arri+ ;return s;public class P3_11 extends Applet IntSort s=new IntSort();public void paint(Graphics g) int a=30, b=12, c=40;int arr=34,8,12,67,44,98,52,23,16,16;g.drawString(两个数的排序结果:+s.sort(a,b),30,3

21、0);g.drawString(三个数的排序结果:+s.sort(a,b,c),30,60);g.drawString(数组的排序结果:+s.sort(arr),30,90); 编译并运行程序 三个同名方法public String sort (int a, int b)public String sort (int a, int b, int c)public String sort (int arr) 编写P3_10 类文件的页面文件P3_11.html3 构造方法的重载构造方法的名称和类同名,没有返回类型。尽管构造方法看起来和一般的成员方法没有差别,但它不是方法,也不是类的成员。因此,构

22、造方法不能直接调用,只能由new操作符调用。构造方法对于类是十分重要的,对象的初始化任务要靠构造方法来完成。重载构造方法的目的是提供多种初始化对象的能力,使程序员可以根据实际需要选用合适的构造方法来初始化对象。 编写构造方法RunDemo 的重载程序文件P3_11,源代码如下。class RunDemo private String userName, password;RunDemo() System.out.println(全部为空!);RunDemo(String name) userName=name;RunDemo(String name, String pwd) this(name

23、);password=pwd;check();void check() String s=null;if (userName!=null)s=用户名:+userName;elses=用户名不能为空!;if (password!=12345678)s=s+ 口令无效!;elses=s+ 口令:*;System.out.println(s);public class P3_12 public static void main(String args) new RunDemo();new RunDemo(陈丽宇);new RunDemo(null,李新萍);new RunDemo(张平化,12345678); 编译并运行程序

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1