文章目录
- 一、问题描述
- 二、具体代码
- 1、Account类
- 2、Customer类
- 3、Bank类
- 4、BankTest类
- 三、图解类的关系
- 关系梳理
- 四、运行结果
一、问题描述
编写一个程序,程序有四个类:
1、Account管理用户的余额,实现存钱和取钱的功能。
2、Customer设置用户的姓名,绑定其Account信息。
3、Bank实现添加用户、统计用户数量、获取指定索引的用户信息等功能
4、BankTest创建多个用户完成用户存钱、取钱等操作。
二、具体代码
在这个项目里,我把四个类分别写在四个不同的Java文件里,但是他们在同一个包下面。
1、Account类
package Bank;
public class Account {
private double balance;
//构造器
public Account(double init_balance){
this.balance = init_balance;
}
//公共方法
public double getBalance(){
return balance;
}
public void setBalance(double balance){
this.balance = balance;
}
//取钱
public void withdraw(double account){
if (account > balance){
System.out.println("余额不足,取款失败!!!");
return;
}
balance -= account;
System.out.println("成功取出:"+account);
}
//存钱
public void saveMoney(double account){
if (account > 0){
balance += account;
}
System.out.println("成功存入:"+account);
}
}
2、Customer类
package Bank;
public class Customer {
private String firstName;
private String lastName;
//在一个类的属性中使用自定义类的变量
private Account account;
//构造器
public Customer(){
}
public Customer(String f,String l){
this.firstName = f;
this.lastName = l;
}
public String getFirstName(){
return firstName;
}
public String getLastName(){
return lastName;
}
public Account getAccount(){
return account;
}
public void setAccount(Account account){
this.account = account;
}
}
3、Bank类
package Bank;
public class Bank {
private Customer[] customers;//创建customers数组,存放多个客户。
private int numberOfCustomers;//记录客户的个数,数组的长度是容量,不是客户个数。
//构造器
public Bank(){
customers = new Customer[10];
//初始化数组不能写在方法里,那样就成了每添加一个新用户就创建一个新数组
}
//1、添加客户
public void addCustomers(String f,String l){
//创建客户对象
Customer cust = new Customer(f,l);
// customers[numberOfCustomers] = cust;
// numberOfCustomers++; //numberOfCustomers默认值是0
customers[numberOfCustomers++] = cust;
}
//2、获取客户个数
public int getNumberOfCustomers(){
return numberOfCustomers;
}
//3、获取指定位置的用户
public Customer getCustomer(int index){
if (index >= 0 && index < numberOfCustomers){
return customers[index];
}
return null;
}
}
4、BankTest类
package Bank;
public class BankTest {
public static void main(String[] args) {
//创建Bank对象
Bank bank = new Bank();
//添加第一个用户
bank.addCustomers("卡里姆","本泽马");
//为用户创建账户
bank.getCustomer(0).setAccount(new Account(2000));
//取钱
bank.getCustomer(0).getAccount().withdraw(500);
//显示余额
double x = bank.getCustomer(0).getAccount().getBalance();
System.out.println(bank.getCustomer(0).getFirstName()+"·"+
bank.getCustomer(0).getLastName()+"账户余额:"+x);
//创建第二个用户
bank.addCustomers("加雷斯","贝尔");
bank.getCustomer(1).setAccount(new Account(5000));
bank.getCustomer(1).getAccount().saveMoney(200);
double y = bank.getCustomer(1).getAccount().getBalance();
System.out.println(bank.getCustomer(1).getFirstName()+"·"+
bank.getCustomer(1).getLastName()+"账户余额"+y);
//查询银行客户人数
System.out.println("银行客户人数为:"+bank.getNumberOfCustomers());
//获取位置1的账户
Customer a = bank.getCustomer(0);
System.out.println(a.getFirstName()+"·"+a.getLastName());
}
}
三、图解类的关系
关系梳理
如上图所示,Bank类里面创建了一个Customer类型的数组,每个数组元素指向一个Customer类。而在每个Customer类里面又包含了一个Account类。在BankTest里面创建了Bank对象,当Bank对象想要调用Account类里面的属性或者方法是需要先通过索引调用相应的Customer类,然后通过Customer类调用Account类。例如下图:
四、运行结果