实验三 Java面向对象程序设计 一、实验目的和要求 掌握Java面向对象程序设计中类、继承、包和接口的概念与应用,能熟练应用方法、类、成员变量等元素。 二、实验内容 1.创建一个复数类complex,以附属进行数学运算、复数具有如下格式:RealPart+ImaginaryRart*I ,其中,I为-1的平方根。 要求如下: ① 利用浮点变量表示此类的私有数据。提供两个构造方法,一个用于此类声明的对象的初始化;一个为默认的无参构造方法。 ② 提供两复数加、减、乘的运算方法。 ③ 按格式(a,b)打印复数。其中a为实部,b为虚部。 2. 创建银行账号Account类,实现存款(balance)的存(deposit)、取(withdraw)和查询(getbalance)等功能。 3.编程定义一个接口,实现三个数中求最小值和最大值的方法,并将程序存放在mymaths包中。 4. 编程实现以下简单超市管理,具体要求如下: ① 实现描述超市的类Suppermacket类,具有货架属性,记录系统中现有商品,定义盘点商品的函数check(盘点各类商品的数量,并输出盘点结果),查询商品的函数query,并显示查询结果; ② 定义商品类Goods,具有商品名称Name,商品价格Price,商品产地Producer等属性,操作Sale(销售商品,余额不足时给予提示)、Add(商品上架操作)和ShowMe(显示商品信息)。 ③ main函数,测试以上所要求的各种功能,即可以根据菜单命令增加、删除、查询商品、盘点商品,以及商品销售和商品上架的操作 提示:① 超市货架可以使用商品数组,数组大小100表明存放100个商品。 ② 注意实现商品查询的多态性,要求可以根据商品的名称或产地或价格查询商品的数量。 三、主要仪器设备 使用的计算机惠普:硬件配置Win7、软件环境eclipse 四、实验代码 1. package a1; public class Complex { float RealPart; float ImaginaryRart; public Complex(){} public Complex(float R,float I){ RealPart=R; ImaginaryRart=I; } public static Complex add(Complex a,Complex b){ Complex c=new Complex(); c.RealPart=a.RealPart+b.RealPart; c.ImaginaryRart=a.ImaginaryRart+b.ImaginaryRart; return c; } public Complex minus(Complex a,Complex b){ Complex c=new Complex(); c.RealPart=a.RealPart-b.RealPart; c.ImaginaryRart=a.ImaginaryRart-b.ImaginaryRart; return c; } public Complex multiply(Complex a,Complex b){ Complex c=new Complex(); c.RealPart=a.RealPart*b.RealPart-a.ImaginaryRart*b.ImaginaryRart; c.ImaginaryRart=a.RealPart*b.ImaginaryRart+a.ImaginaryRart*b.RealPart;; return c; } public void print(){ System.out.println(\ } public static void main(String[] args){ Complex a = new Complex(1f,3f); Complex b = new Complex(3f,4f); Complex c = new Complex(); c = add(a,b); c.print(); }} 2. package shiyan; import java.util.*; class Account{ private double balance; Account(){ balance=5000; } public void deposit(double n){ balance=balance+n; System.out.println(\存款成功!\ } public void withdraw(double n){ balance=balance-n; System.out.println(\取款成功!\ } public void getbalance(){ System.out.println(\当前账户余额为\ } public static void main(String[] args) { Account c=new Account(); c.getbalance(); System.out.println(\请输入存款金额:\ Scanner sc=new Scanner(System.in); double i=sc.nextDouble(); c.deposit(i); c.getbalance(); System.out.println(\请输入取款金额:\ double x=sc.nextDouble(); c.withdraw(x);c.getbalance(); sc.close(); } } 3. package mymaths; public interface Myinterface { int max(int a,int b,int c); int min(int a,int b,int c); } class Zzr implements Myinterface{ public int max(int a,int b,int c){int temp; if(ac) return temp; else return c;} public int min(int a,int b,int c){ int temp; if(ac) return c; else return temp; }} package mymaths; public class interfaceTest { public static void main(String[] args) { int x,y; Zzr c=new Zzr(); x = c.min(3,5,8); y = c.max(6,8,9); System.out.println(\最小值为\最大值为\ }} 4. package a1; class Base{ public static Goods[] All = new Goods[2];//? public String name; public double price; public String producer; public int id,num; public void showMe(){ System.out.println(\ System.out.println(\商品名称:\ System.out.println(\商品编号:\ System.out.println(\商品价格:\ System.out.println(\生产地\ System.out.println(\数量\ System.out.println(\ } public void showNum(){ System.out.println(\ System.out.println(\商品名称:\ System.out.println(\商品id\ System.out.println(\数量:\class Goods extends Base{ public void sale(int n,double pay) throws Exc{ if(n>this.num){ throw new Exc(); } System.out.println(\商品名称\ System.out.println(\商品价格:\ System.out.println(\您缴费\ double money = pay-n*price; if(money<0){ System.out.println(\余额不足,您还需要缴费\ } else{ System.out.println(\购买成功\ System.out.println(\找您\ this.num-=n;}} public void add(String name,int id,double price,String producer,int num){ this.name = name; this.price = price; this.producer = producer; this.id = id;