JAVA实验——更改C++中4到12章个人银行账户管理系统案例的心得体会(第4和5章)

                     JAVA实验——更改C++中4到12章个人银行账户管理系统案例的心得体会(第4和5章)

    1.第4章——类

        改动的一些点:(1)JAVA里面很多基本语法说明它不能先声明一个方法,再给出一个实现;私有/公有的变量/方法的private/public都要写出来;输入输出用System.out.println()的形式;在主函数中创建的是对象引用而不是对象,所以要用到new()。

                               (2)在构造函数中,当形参与域变量同名时,用this来指代域变量。而C++里用到了复制(拷贝)构造函数。

                               (3)JAVA里的floor函数因为没有了头文件cmath,要用已经定义好的类Math去调用,即Math.floor()。

源代码:

public class SavingsAccount4{
private int id,lastDate;//账号,上一次余额变动日期
private  double balance,rate,accumulation;//余额,年利率,余额按日累加值
public SavingsAccount4(int date,int id,double rate){
lastDate=date;
this.id=id;
this.rate=rate;
balance=0;
accumulation=0;
System.out.println(date+"\t#"+id+" is created");
}
//记录一笔账,有日期、金额和说明(desc)
private void record(int date,double amount){
accumulation=accumulate(date);
lastDate=date;
amount=Math.floor(amount*100+0.5)/100;//保留小数点后两位
balance+=amount;
System.out.println(date+"\t#"+id+"\t"+amount+"\t"+balance);
}
//获得到指定日期为止的存款金额按日累积值
private double accumulate(int date){
return accumulation+balance*(date-lastDate);
}
//存入和取出现金
public void deposit(int date,double amount){
record(date,amount);
}
public void withdraw(int date,double amount){
if(amount>getBalance())
System.out.println("Error:not enough money");
else
record(date,-amount);
}
//显示账户信息
public void settle(int date){
double interest=accumulate(date)*rate/365;//计算年息
if(interest!=0)
record(date,interest);
accumulation=0;
}
public void show(){
System.out.print("#"+id+"\tBalance: "+balance);
}
public int getId(){return id;}
public double getBalance(){return balance;}
public double getRate(){return rate;}
public static void main(String args[]){
SavingsAccount4 sa0=new SavingsAccount4(1,21325302,0.015);
SavingsAccount4 sa1=new SavingsAccount4(1,58320212,0.015);
sa0.deposit(5,5000);
sa1.deposit(25,10000);
sa0.deposit(45,5500);
sa1.withdraw(60,4000);
sa0.settle(90);
sa1.settle(90);
sa0.show();
System.out.println("");
sa1.show();
System.out.println("");
}

}

    2.第5章——增添静态属性与方法

            改动的一些点:(1)由于C++里面可以把一个程序分成类定义头文件(.h)和类实现文件(.cpp),还有主函数文件。在JAVA里做的改动是在同一个包里建立两个类(这里是SavingsAccount5和SavingsAccount51),在SavingsAccount51中去调用SavingsAccount5。

                                 (2)JAVA中静态变量的初始化可以直接在定义时初始化,而且静态方法在调用时可以用任何一个对象的引用(sa0,sa1)或者这个类,而且没有::符号(域操作符)。

                                  (3)JAVA中的final与C++中const并不等价,final用在方法里还表示最终方法,不能被继承。

源代码:

public class SavingsAccount5{
private static double total=0;
private int id,lastDate;//账号,上一次余额变动日期
private  double balance,rate,accumulation;//余额,年利率,余额按日累加值
public static double getTotal(){return total;}
public SavingsAccount5(int date,int id,double rate){
lastDate=date;
this.id=id;
this.rate=rate;
balance=0;
accumulation=0;
System.out.println(date+"\t#"+id+" is created");
}
//记录一笔账,有日期、金额和说明(desc)
private void record(int date,double amount){
accumulation=accumulate(date);
lastDate=date;
amount=Math.floor(amount*100+0.5)/100;//保留小数点后两位
total+=amount;
balance+=amount;
System.out.println(date+"\t#"+id+"\t"+amount+"\t"+balance);
}
//获得到指定日期为止的存款金额按日累积值
private double accumulate(int date){
return accumulation+balance*(date-lastDate);
}
//存入和取出现金
public void deposit(int date,double amount){
record(date,amount);
}
public void withdraw(int date,double amount){
if(amount>getBalance())
System.out.println("Error:not enough money");
else
record(date,-amount);
}
//显示账户信息
public void settle(int date){
double interest=accumulate(date)*rate/365;//计算年息
if(interest!=0)
record(date,interest);
accumulation=0;
}
public final void show(){
System.out.print("#"+id+"\tBalance: "+balance);
}
public final int getId(){return id;}
public final double getBalance(){return balance;}
public final double getRate(){return rate;}

}


public class SavingsAccount51 {
public static void main(String args[]){
SavingsAccount5 sa0=new SavingsAccount5(1,21325302,0.015);
SavingsAccount5 sa1=new SavingsAccount5(1,58320212,0.015);
sa0.deposit(5,5000);
sa1.deposit(25,10000);
sa0.deposit(45,5500);
sa1.withdraw(60,4000);
sa0.settle(90);
sa1.settle(90);
sa0.show();
System.out.println("");
sa1.show();
System.out.println("");
System.out.println("Total:"+sa0.getTotal());
}
}

猜你喜欢

转载自blog.csdn.net/qq_37155773/article/details/79669805