练习
1、写一个名为 Account 的类模拟账户。该类的属性和方法如下图所示。该类包括的属性:
账号 id,余额 balance,年利率 annualInterestRate;包含的方法:访问器方法(getter 和 setter
方法),取款方法 withdraw(),存款方法 deposit()。
Account |
---|
private int id private double balance private double annualInterestRate |
public Account (int id, double balance, double annualInterestRate ) |
public int getId() public double getBalance() public double getAnnualInterestRate() public void setId( int id) public void setBalance(double balance) public void setAnnualInterestRate(double annualInterestRate) public void withdraw (double amount)//取钱 public void deposit (double amount)//存钱 |
提示: 在提款方法 withdraw 中,需要判断用户余额是否能够满足提款数额的要求,如果不
能,应给出提示。
- 创建 Customer 类。
Customer |
---|
private String firstName private String lastName private Account account |
public Customer(String f,String l) |
public String getFirstName() public String getLastName() public Account getAccount() public void setAccount(Account account) |
a. 声明三个私有对象属性: firstName、 lastName 和 account。
b. 声明一个公有构造器,这个构造器带有两个代表对象属性的参数(f 和 l)
c. 声明两个公有存取器来访问该对象属性,方法 getFirstName 和 getLastName 返回相应的属
性。
d. 声明 setAccount 方法来对 account 属性赋值。
e. 声明 getAccount 方法以获取 account 属性。
3.写一个测试程序。
(1) 创建一个 Customer ,名字叫 Jane Smith, 他有一个账号为 1000,余额为 2000 元,
年利率为 1.23% 的账户。
(2) 对 Jane Smith 操作。
存入 100 元,再取出 960 元。 再取出 2000 元。
打印出 Jane Smith 的基本信息
成功存入 : 100.0
成功取出: 960.0
余额不足,取款失败
Customer [Smith, Jane] has a account: id is 1000, annualInterestRate is 1.23%, balance is
1140.0
package com.oop.Demo08.DemoText2;
/**
* @ClassName Account
* @Description TODO
* @Author xinZhong
* @Date 2021/4/3 20:38
* @Version 1.0
*/
public class Account {
private int id;//账号
private double balance;//余额
private double annualInterestRate;//balance
public Account(){
}
public Account(int id,double balance,double annualInterestRate){
this.id = id;
this.balance = balance;
this.annualInterestRate = annualInterestRate;
}
public void setId (int id){
this.id = id;
}public void setBalance (double balance){
this.balance = balance;
}public void setId (double annualInterestRate){
this.annualInterestRate = annualInterestRate;
}
public int getId(){
return id;
}
public double getBalance(){
return balance;
}
public double getAnnualInterestRate(){
return annualInterestRate;
}
// 提示: 在提款方法 withdraw 中,需要判断用户余额是否能够满足提款数额的要求,如果不
// 能,应给出提示。
public void withdraw(double amount){//取钱
if(amount > balance){
System.out.println("你的余额不足,取款失败");
}else{
System.out.println("成功取出:"+amount);
balance -= amount;
}
}
public void deposit (double amount){ //存钱
if(amount > 0) {
balance += amount;
System.out.println("成功存入:" + amount);
}
}
}
package com.oop.Demo08.DemoText2;
/**
* @ClassName Customer
* @Description TODO
* @Author xinZhong
* @Date 2021/4/3 21:44
* @Version 1.0
*/
public class Customer {
private String firstName;
private String lastName;
private Account account;
public Customer(){
}
public Customer(String f,String i){
this.firstName = f;
this.lastName = i;
}
public String getFirstName(){
return firstName;
}
public String getLastName(){
return lastName;
}
public Account getAccount(){
return account;
}
public void setAccount(Account account){
this.account = account;
}
}
package com.oop.Demo08.DemoText2;
/**
* @ClassName Customer1
* @Description TODO
* @Author xinZhong
* @Date 2021/4/3 22:49
* @Version 1.0
*/
// .写一个测试程序。
// (1) 创建一个 Customer ,名字叫 Jane Smith, 他有一个账号为 1000,余额为 2000 元,
// 年利率为 1.23% 的账户。
// (2) 对 Jane Smith 操作。
// 存入 100 元,再取出 960 元。 再取出 2000 元。
// 打印出 Jane Smith 的基本信息
public class CustomerText {
public static void main(String[] args) {
Customer c1 = new Customer("Jane", "Smith");
Account a1 = new Account(1000, 2000, 0.0123);
c1.setAccount(a1);
c1.getAccount().deposit(100);
System.out.println(a1.getBalance());
c1.getAccount().withdraw(960);
c1.getAccount().withdraw(2000);
System.out.println(" Customer "+ c1.getFirstName()+c1.getLastName()+" has a accout id is: "
+a1.getId()+", AnnualInterestRate is "+ a1.getAnnualInterestRate()+", balance is "+a1.getBalance());
}
}
练习2
1.按照如下的 UML 类图,创建相应的类,提供必要的结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FL1e7PEF-1617702895136)(C:\Users\0\AppData\Roaming\Typora\typora-user-images\image-20210404074611388.png)]
在提款方法 withdraw()中,需要判断用户余额是否能够满足提款数额的要求,如果不能,
应给出提示。 deposit()方法表示存款。
- 按照如下的 UML 类图,创建相应的类,提供必要的结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UjmQh2JG-1617702895138)(C:\Users\0\AppData\Roaming\Typora\typora-user-images\image-20210404074637782.png)]
-
按照如下的 UML 类图,创建相应的类,提供必要的结构
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rI8156pF-1617702895140)(C:\Users\0\AppData\Roaming\Typora\typora-user-images\image-20210404074700790.png)]
addCustomer 方法必须依照参数(姓,名)构造一个新的 Customer 对象,然后把
它放到 customer 数组中。还必须把 numberOfCustomer 属性的值加 1。
getNumOfCustomers 方法返回 numberofCustomers 属性值。getCustomer 方法返回与给出的 index 参数相关的客户。
- 创建 BankTest 类,进行测试。
package com.oop.Demo08.demo03text;
/**
* @ClassName Account
* @Description TODO
* @Author xinZhong
* @Date 2021/4/4 7:49
* @Version 1.0
*/
public class Account {
private double balance;//余额
public Account(double init_balance ) {
this.balance = init_balance;
}
public double getbalance(){
return balance;
}
//存钱
public void deposit(double amt){
if(amt > 0){
balance += amt;
System.out.println("成功存入 "+ amt);
return;
}else{
System.out.println("输入不正确");
}
}
//取钱
public void withdraw(double amt){
if(balance < amt){
balance -= amt;
System.out.println("取走金额 "+ amt);
}else{
System.out.println("余额不足"+ amt);
}
}
}
package com.oop.Demo08.demo03text;
/**
* @ClassName Customer
* @Description TODO
* @Author xinZhong
* @Date 2021/4/4 8:03
* @Version 1.0
*/
public class Customer {
private String firstName;
private String lastName;
private Account account;
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;
}
}
package com.oop.Demo08.demo03text;
/**
* @ClassName Bank
* @Description TODO
* @Author xinZhong
* @Date 2021/4/4 8:09
* @Version 1.0
*/
public class Bank {
private Customer[] customers; //存放多个客户的数组
private int numberCustomers; //记录客户的个数
public Bank(){
//初始化数组
customers = new Customer[10];
}
//添加客户
public void addCustomer(String f,String l){
Customer cust = new Customer(f,l);
// customers[numberCustomers] = cust;
// numberCustomers++; 或者
customers[numberCustomers++] = cust;
}
//获取客户个数
public int getNumberCustomer() {
return numberCustomers;
}
//获取指定位置上的客户
public Customer getCustomer(int index){
// return customers[index]; //这样容易越界 有10个index,容易越界
if(index <= 0 && index < numberCustomers) {
return customers[index];
}
return null;
}
}
package com.oop.Demo08.demo03text;
/**
* @ClassName BankTest
* @Description TODO
* @Author xinZhong
* @Date 2021/4/4 11:44
* @Version 1.0
*/
public class BankTest {
public static void main(String[] args) {
Bank bank = new Bank();
bank.addCustomer("张","三");
//可以直接匿名对象调用Account
bank.getCustomer(0).setAccount(new Account(2000));
//也可以创建对象调用
// bank.getCustomer(0);
// Account account = new Account(2000);
// System.out.println(account.getbalance());
bank.getCustomer(0).getAccount().deposit(1002);
double banlanc = bank.getCustomer(0).getAccount().getbalance();
System.out.println("客户:" +
bank.getCustomer(0).getFirstName() +
"的余额为 :" + banlanc);
bank.getCustomer(0).getAccount().withdraw(12);
System.out.println("=======================");
//新增用户
bank.addCustomer("李","四");
//查询所有用户
System.out.println("银行总客户为:"+bank.getNumberCustomer());
}
}
tem.out.println(“客户:” +
bank.getCustomer(0).getFirstName() +
"的余额为 :" + banlanc);
bank.getCustomer(0).getAccount().withdraw(12);
System.out.println("=======================");
//新增用户
bank.addCustomer("李","四");
//查询所有用户
System.out.println("银行总客户为:"+bank.getNumberCustomer());
}
}