当前位置:文档之家› 面向对象作业

面向对象作业

作业三类和对象的创建目的:1、java类的定义和使用2、掌握创建和使用类对象的方法。

3、对象的引用内容:一、类和对象的创建1、类通过关键字class来创建,格式如下:[修饰符] <class><类名> [extends 父类名] [implements 接口] {<类体>}修饰符包括:public、abstract、final2、创建对象的格式如下:<类名><对象名>=new <类名>([参数列表])例中:MyBox b1=new MyBox( );二、对象的引用1)对象的引用:<对象名>.<变量或方法名>例:a1.draw(g);2)对象的清除:MyBox a1=new MyBox(20,20,200,400);…… //对象的操作a1=null;三、具体实例例1:MaxArray类的对象求出一维数组中的最大值。

classMaxArray{intfindmax(int a[],int n){int max=a[0];for(int i=1;i<n;i++)if(a[i]>max)max=a[i];//返回max的值}}public class C1{public static void main(String args[]){//利用类MaxArray创建对象obint a[]={2,5,7,3,18,9},b[]={33,43,6,12,8};System.out.println("数组a中的最大值是"+ob.findmax(a,6));//输出数组b的最大值}}例2:练习命令行参数的使用。

(一)带有2个命令行参数public class say{public static void main(String args[]){String name=args[0];String word=args[1];System.out.println("我想对"+name+"悄悄地说:"+word);}}调试过程:保存的文件名say.java,编译文件:javac say.java,运行文件:java say 妈妈我爱你!!!其中:“妈妈”是第一个命令行参数;“我爱你!!!”是第二个命令行参数。

(二) 带有3个命令行参数(3个整数求最大值)public class max{public static void main(String args[]){int max;int a=Integer.parseInt(args[0]);int b=Integer.parseInt(args[1]);int c=Integer.parseInt(args[2]);if(a>b&&a>c)max=a;else if(b>c)max=b;elsemax=c;System.out.println("三个数中最大的是:"+max);}}调试过程:保存的文件名max.java,编译文件:javac max.java,运行文件:java max 12 48 6 其中:“12”是第一个命令行参数;“48”是第二个命令行参数;“6”是第三个命令行参数。

(三) 带有2个命令行参数(2个整数求最大值),由同学自己完成。

例3:importjava.awt.*;importjava.applet.Applet;public class p87_16 extends Applet{public void paint(Graphics g){//利用类Re创建对象jsg.drawString("矩形a=2,b=3",10,20);g.drawString("周长="+js.zc(2,3),10,35);//显示周长(a=2,b=3),位置(10,35)//显示面积值(a=2,b=3),位置(10,50)}}}class Re{privateintw,h;public Re(){w=0;h=0;}//定义周长计算方法zc()publicintmj(inta,int b){return a*b;}}例4:编写程序:1.创建一个类Circle,添加静态属性r(成员变量),并定义一个常量PI=3.1422.在类Circle中添加两种方法,分别计算周长和面积3.编写主类C3,利用类Circle输出r=2时圆的周长和面积例5:定义一个Person类,该类属性(变量)和方法如下:姓名:name 字符串类型;性别:sex 字符型;年龄:age 整型;2个构造方法:1个是默认的构造方法(由系统完成),另一个可通过参数赋值;将该3个变量转化成字符串便于显示输出的方法:toString(该名称可自定义)创建主类,通过Person类创建对象,显示输出该对象的各种属性。

class Person{String name;char sex;int age;public Person(String s,charc,int i){name=s;sex=c;age=i;}public String toString(){String s="姓名:"+name+" 性别:"+sex+" 年龄:"+age;//返回s的值}}public class T1{public static void main(String args[]){Person p1=new Person("张三",'男',20);//定义对象p2,各个参数分别为:李四,女,28 p1.sex='女'; //将p1的sex属性改为女System.out.println(p1.toString());//输出p1的各个属性//将p2的的age改为33//输出p2的各个属性}}作业四成员变量和成员方法的设计内容:1、成员变量:声明、定义使用和封装2、成员方法:☆设计、调用3、OOP编程的思想1)理解主类的编写2)调用其他类的方法3)在编程过程中体会oop的思想(并熟悉定义类、创建对象、对象属性的使用)内容:一、成员变量深刻理解变量的使用范围例1:指出下面程序中的错误,并修改使其正确运行。

class Class2{privateint y;private void show(){system.out.println(“show method is private”);}public void usesecret(){show();}}public class Class1{public static void main(String args[]){Class1 Ob=new Class1();esecret();Ob.show();}}指出错误的原因。

二、成员方法的声名和设计1、成员方法的声明一般放在成员变量的声明之后,声明语句的格式和顺序如下:[ public][private][protected ][ package ] //访问控制修饰符[ static][final][ abstract ] [ native] [synchronized] 返回值类型方法名(参数表)[ throws 异常类型]例2:定义student类,其中包括四个私有变量(name,age,sex,score)、一个构造方法和show()方法。

各成员的含义如下:*变量name为字符串类型String,用于存储学生的姓名。

*变量age为int类型,用于存储学生的年龄。

*变量sex为boolean类型,用于存储学生的性别,男生为false,女生为true。

*变量score为double类型,用于存储学生的成绩。

*构造方法包括四个参数,用于为变量(name,age,sex和score)赋值。

*show()方法无参数,用于输出变量(name,age,sex和score)的值。

定义主类来调用student类中的构造方法和成员方法。

例3:该例设计了两个类,用主类M1控制DrawShape类实例对象a的行为。

类DrawShape 被设计成一个黑箱子,能画出固定大小的矩形和椭圆,那么画什么图形,在哪里画则由外部消息控制。

外部消息通过两个方法setPos()和setShape()改变了对象的位置和形状数据。

Draw方法根据对象的当前状态画出图形。

主类中创建了DrawShape的实例对象a。

将图形的位置和形状的消息通过方法传递给a,最后由a的draw方法画出图形。

importjava.awt.*;importjava.applet.Applet;class Drawshape{ //画图形的类privateintx,y,shape;public void setPos(intxpos,intypos){ //改变了对象位置的方法(方法体自己完成)}public void setShape(int choice){ //改变了对象形状数据的方法(方法体自己完成)}public void draw(Graphics g){if(shape==1)g.drawRect(x,y,60,60);else if(shape==2)g.drawOval(x,y,60,60);elseg.drawString("形状参数不对",60,60);}}public class M1 extends Applet{Drawshape a=new Drawshape();public void paint(Graphics g){a.setPos(40,20);a.setShape(1); //调用类Drawshape中的方法将图形参数设置为1a.draw(g);a.setPos(200,60);//将图形参数设置为2或3……a.draw(g); //调用画出图形的方法}}例4:对上个例子的改造:通过文本框实现图形参数的输入。

importjava.awt.*;importjava.awt.event.*;importjava.applet.Applet;class Drawshape{ //画图形的类privateintx,y,shape;//改变了对象位置的方法public void setPos(intxpos,intypos){x=xpos;y=ypos;}public void setShape(int choice){ //改变了对象形状参数的方法shape=choice;}public void draw(Graphics g){ //画出该图形的方法if(shape==1)g.drawRect(x,y,60,60);else if(shape==2)g.drawOval(x,y,60,60);elseg.drawString("形状参数不对",60,60); } }public class M2 extends Applet implements ActionListener{ //主类int s; //定义图形参数s//按照运行结果定义按钮和文本框对象//使用类Drawshape定义对象apublic void init(){ //初始化方法//将定义好的按钮加入//将定义好文本框加入button1.addActionListener(this);}public void actionPerformed(ActionEvent e){//将文本框中的数据转换成int型数据,并赋给srepaint(); //重画}public void paint(Graphics g){ //绘图方法(系统的)a.setPos(40,20);//调用改变图形参数的方法将s输入g.drawString(""+s,20,20); //在20,20位置上显示s值//调用画出图形的方法}}2、成员方法的调用例5:模拟小车运行1)建立小车类Car,拥有属性:位置、前进方法、后退方法、查询位置方法2)建立主类,调用前进和后退的方法模拟小车运行,最后查询小车的位置importjava.awt.*;importjava.applet.Applet;public class UseCar extends Applet{public void paint(Graphics g){//定义小车类对象mycarg.drawString("起始位置"+mycar.getwz(),10,20);g.drawString("前进100",10,35);mycar.qj(100);g.drawString("后退30",10,50);mycar.ht(30);g.drawString("当前位置"+mycar.getwz(),10,65);}}class Car{privateintwz;public Car(){wz=0;}//定义前进的方法//定义后退的方法//定义查询位置的方法}例6:接前一个例子用画图来表示车的位置(运行结果见下页)1)添加一个用于画出小车的类Hcar,属性:位置、设置位置的方法、画出小车的方法2)在主类中调用Hcar类画出小车在改变位置时不同的位置。

相关主题