1、实验2 面向对象编程(Part one) 实验目的 掌握Java程序面向对象编程的基本架构,会运用面向对象的思想编写Java程序。 注:要求使用在命令行完成。 实验题1 阅读如下程序,完成思考题。 class CCircle { double pi; double radius; double getRadius() { return radius; } void setCircle(double r, double p) { pi=p; radius=r; } } public c
2、lass Ex2_1 { public static void main(String args[]) { CCircle cir1=new CCircle(); cir1.setCircle(2.0,3.1416); System.out.println("radius="+cir1.getRadius()); } } [基本要求] 运行程序并观察运行结果。 [思考问题] 试述程序中主要语句的作用。 实验题2 设计一个用来描述汽车的类Car,使用类的非静态成员变量来表示汽车的车主姓名name、当前的速率speed: 1. 创建构
3、造函数为三个成员变量赋初值。 2. 使用类的非静态成员方法来表示改车主姓名changeName操作, 并通过该方法显示修改后的车主名称。 3. 使用类的非静态成员方法来表示改变汽车的速率changSpeed操作,并通过该方法显示修改后的车速。 4. 使用类的非静态成员方法来表示停车stop操作,并通过该方法显示停车后的车速。 5. 创建一个Car类的对象,初始状态时,车主名称是自己的名字,speed=0。 6. 分别调用这三个方法,更改车名为朋友的名字,车速为20,停车车速为0,并且得到如下的结果: 实验题3 定义一个类MyProgram,包含两个属性:一个是priva
4、te的整型属性data、一个是private的String类型的属性str,封装这两个属性的四个方法setData()和getData()、setStr( )和getStr();将这两个属性转变为字符串的方法是toStr()。编写程序,使用MyProgram类,实现数据的访问和修改,并调用toStr()方法显示该类的属性。 [基本要求] 编写完整程序。 [思考问题] 试述程序中各个方法的作用。 实验题4定义一个类实现银行帐户的概念,包括的变量有"帐号"和"存款余额",包括的方法有"存款"、"取款"、"查询余额"和”显示帐号”。定义主类,创建帐户类的对象,并完成相应操作。 提示:关键
5、代码如下: public int getleftmoney(){ return leftmoney; } public void savemoney(double money){ leftmoney+=money; } public void getmoney(double money){ if(money<=leftmoney) leftmoney-=money; else System.out.println("只能取:"+leftmoney); } … bankaccount ba=new bankaccount(888123,1000); ba.savem
6、oney(21000); System.out.println("存入21000元后余额为:"+ba.getleftmoney()); ba.getmoney(11500); System.out.println("11500元后余额为:"+ba.getleftmoney()); 实验题5 完成课本4.13(102页)jar文件的生成并产生Use类的运行结果。 实验题6 对象的组合。现有一个Rectangle类,请设计一个柱形类cuboid。 1. 此类具有两个成员变量,(1)Rectangle类型的成员变量rect(长方体以长方形做底)和(2)height(柱形的高)。
7、 2. 此类应具有构造方法。 3. (1)此类应具有求面积的方法getVolme()。 (2)此类应具有设置和获得底的长度和宽度的方法:getBottomWidth(), setBottomWidth(), getBottomLength(), setBottomLength()。 Rectangle的代码如下: public class Rectangle { double width,length; public void setWidth(double w) { if(w > 0) this.width=
8、w; } public double getWidth(){ return width; } public void setLength (double h) { if(length > 0) this.length =h; } public double getLength () { return length; } } 实验题5 有图形类的父类Shape,参照圆Circle类补充完整正方性Square和三角形Triangle类,并分析运行结果。
9、 class Shape { void draw() {} void erase() {} } class Circle extends Shape { void draw() { System.out.println("Circle.draw()");} void erase() { System.out.println("Circle.erase()");} } class Square extends Shape { void draw() { } void erase() { } } class Triangle extends Shape { vo
10、id draw() { } void erase() { } } public class Shapes { public static Shape randShape() { switch((int)(Math.random() * 3)) { default: // To quiet the compiler case 0: return new Circle(); case 1: return new Square(); case 2: return new Triangle(); } } p
11、ublic static void main(String[] args) {
Shape[] s = new Shape[3]; // Fill up the array with shapes:
for(int i = 0; i 12、类MobileManagement在包cn.edu.nwsuaf.jp.p3中,而Mobile在包cn.edu.nwsuaf.jp.p3.data中。它们代码如下。运行MobileManagement.java,你应该看到如图所示结果。
[基本要求] 在空白处填写相关代码并修改上面程序,使程序能够显示两部手机的价格和数量,运行结果如图所示。
E365, 1780 RMB M330, 1450 RMB
手机及价格图
程序Mobile.java源代码:
public class Mobile {
/** Holds the name of the mobi 13、le. */
private String name;
/** Holds the price of the mobile. */
private float price;
/** Creates a new mobile object. */
public Mobile(String name, float price) {
this.name = name;
this.price = price;
}
/** Gets the name of the mobile. */
public String getName() {
r 14、eturn name;
}
/** Gets the price of the mobile. */
Public float getPrice() {
return price;
}
}
程序MobileManagement.java源代码:
import javax.swing.JOptionPane;
public class MobileManagement {
/** Defines the entry point of the application. */
public static void main(String[] args) 15、{
// Creates two mobile phone objects.
Mobile mobile1 = new Mobile("E365", 1780);
Mobile mobile2 = new Mobile("M330", 1450);
// Displays the two mobile phones in a dialog box.
JOptionPane.showMessageDialog(null, "Mobile phones:\n\n"+mobile1.getName()+"\n"+mobile2.getName());
}
16、}
实验题7有四个类,主类Store在包cn.edu.nwsuaf.jp.p4中,Mobile、Mp3Player、Product在包cn.edu.nwsuaf.jp.p4.data中,Mobile、Mp3Player是Product的子类,Product和Store代码如下:
Store.java源代码:
package cn.edu.nwsuaf.jp.p4;
import java.util.Arrays;
import javax.swing.JOptionPane;
import cn.edu.nwsuaf.jp.p4.data.Mobile;
import c 17、n.edu.nwsuaf.jp.p4.data.Mp3Player;
import cn.edu.nwsuaf.jp.p4.data.Product;
public class Store {
//** Defines the entry point of the application. */
public static void main(String[] args) {
// Creates two mobile phone objects.
Mobile mobile1 = new Mobile("China Mobile", "E365",1780);
Mob 18、ile mobile2 = new Mobile("China Mobile", "M330",1450);
Mp3Player player1 = new Mp3Player("Meizo X3", 256, 399);
Mp3Player player2 = new Mp3Player("Meizo E5", 512, 580);
Mp3Player player3 = new Mp3Player("Xlive XM MP3 Play",256, 930);
Product[] products={mobile1,mobile2,player1,player2, playe 19、r3};
Arrays.sort(products);
String text = "";
for(int index = 0; index 20、)
+" products.");
}
}
Product.java源代码:
package cn.edu.nwsuaf.jp.p4.data;
public abstract class Product implements Comparable 21、e number of products. */
protected static int count;
/** Create a new product object. */
protected Product(String name, float price) {
this.name = name;
this.price = price;
++count;
}
/** Gets the name of the product. */
public String getName() {
return name;
}
/* 22、 Gets the price of the product. */
public float getPrice() {
return price;
}
/** Gets the number of products. */
public static int getCount() {
return count;
}
/** Compares this product with the given product. */
public int compareTo(Product product) {
return new Float(pr 23、oduct.getPrice()).compareTo(price);
}
}
[基本要求] 设计类Mobile和类MP3Player,使它们和类Product、Store组成一个完整的程序,且运行结果如图所示。
实验题8实现一个名为Person的类和它的子类Employee, Manager是Employee的子类,设计一个接口Add用于涨工资,接口中有一个抽象方法addVage()。普通员工一次能涨10%,经理能涨20%。
具体要求如下:
(1)Person类中的属性有:姓名name(String类型),地址address(String类型)并写出该类的构造方法;
(2)Employee类中的属性有:工号ID(String型),工资wage(double类型),工龄(int型),写出该类的构造方法;
(3)Manager类中的属性有:级别level(String类型),写出该类的构造方法;
编写一个测试类,产生一个员工和一个经理并输出其具有的信息, 之后给这两个人增加工资,然后再次输出信息。






