总结:
customer.setAccount(account);
//引用,日后的account 和 customer.getAccount()的结果始终一致

实验目的

扩展银行项目,添加一个 Customer 类。Customer 类将包含一个 Account对 象。 

实验目的:
使用引用类型的成员变量。 提 示:
1. 在banking包下的创建Customer类。该类必须实现上面的UML图表中的模 型。 a. 声明三个私有对象属性:firstName、lastName 和 account。
b. 声明一个公有构造器,这个构造器带有两个代表对象属性的参数(f 和 l)
c. 声明两个公有存取器来访问该对象属性,方法 getFirstName 和 getLastName 返 回相应的属性。 d. 声明 setAccount 方法来对 account 属性赋值。
e. 声明 getAccount 方法以获取 account 属性。 2. 在 exercise2 主目录里,编译运行这个 TestBanking 程序。应该看到如下 输出结果: Creating the customer Jane Smith. Creating her account with a 500.00 balance. Withdraw 150.00 Deposit 22.50 Withdraw 47.62 Customer [Smith, Jane] has a balance of 324.88

UML 结构图

工程组织结构:

代码编程:

1/Account.java

package Banking_2;

public class Account {
private double balance;//余额 ,uml前该变量是 '-'
public Account(double init_balance){
balance=init_balance;
}
public double getBalance() {
return balance;
}
//存钱
public void deposit(double amt){
this.balance+=amt;
}
//取钱
public void withdraw(double amt){
this.balance-=amt;
} }

2/Customer.java

package Banking_2;

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;
}
}

3/新开一个package, 添加测试文件:TestBanking2.java

package TestBanks;
import Banking_2.*; public class TestBanking2{
public static void main(String[] args) {
Customer customer=new Customer("Jane","Smith");
Account account=new Account(500); // Create an account that can has a 500.00 balance. System.out.println ("Creating the customer Jane Smith.");
System.out.println("Creating her account with a 500.00 balance.");
customer.setAccount(account);
//code
System.out.println("Withdraw 150.00");
customer.getAccount().withdraw(150);
//code
System.out.println("Deposit 22.50");
customer.getAccount().deposit(22.5);
//code
System.out.println("Withdraw 47.62");
customer.getAccount().withdraw(47.62);
//code
// Print out the final account balance
System.out.println("Customer [" + customer.getLastName()
+ ", " + customer.getFirstName()
+ "] has a balance of " + account.getBalance());
//等价于下面的写法
/*
System.out.println("Customer [" + customer.getLastName()
+ ", " + customer.getFirstName()
+ "] has a balance of " + customer.getAccount().getBalance()); */
}
}

运行结果:

【Java基础 项目实例 -- Bank项目2】Account 和 customer 对象的更多相关文章

  1. 【Java基础 项目实例--Bank项目5】Account 和 customer 对象等 继承、多态、方法的重写

    延续 Java基础 项目实例--Bank项目4 实验要求 实验题目 5: 在银行项目中创建 Account 的两个子类:SavingAccount 和 CheckingAccount 实验目的: 继承 ...

  2. 【Java 基础实例—Bank 项目1】

    (上图Wie任务要求的UML结构) Account.java 文件: package Banking_1; public class Account { private double balance; ...

  3. JAVA基础语法:函数(方法)、类和对象(转载)

    4.JAVA基础语法:函数(方法).类和对象 函数 在java中函数也称为方法,是一段具备某种功能的可重用代码块. 一个函数包括这几部分: 函数头 函数头包括函数访问修饰符,函数返回值类型, 函数名, ...

  4. 【Java 基础实验_Bank项目_06】单例模式(Static Bank) , 查询异常输出

    基于上一个实验Banking_5 ,代码先全部复制过来. 笔记心得: 1.SavingAccount() 需要两种构造方法,接受单个参数和两个的 2.Account 有两个类型 SavingAccou ...

  5. java基础部分小项目

    贪吃蛇项目 import java.awt.Color; import java.awt.Graphics; import java.awt.Toolkit; import java.awt.even ...

  6. Java基础自学小项目

    实现一个基于文本界面的<家庭记账软件> 需求:能够记录家庭的收入,支出,并能够收支明细表 主要涉及一下知识点: - 局部变量和基本数据类型 - 循环语句 - 分支语句 - 方法调用和返回值 ...

  7. Java基础学习笔记十 Java基础语法之final、static、匿名对象、内部类

    final关键字 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后,就可以对 ...

  8. Java基础之一组有用的类——使用Scanner对象(TryScanner)

    控制台程序. java.util.Scanner类定义的对象使用正则表达式来扫描来自各种源的字符输入,并把输入显示为各种基本类型的一系列标记或者显示为字符串. 默认情况下,Scanner对象读取标记时 ...

  9. JAVA基础知识之JVM-——使用反射生成并操作对象

    Class对象可以获取类里的方法,由Method对象表示,调用Method的invoke可以执行对应的方法:可以获取构造器,由Constructor对象表示,调用Constructor对象的newIn ...

随机推荐

  1. golang 二维切片

    初始化: res := make([][length]int, length), 例如: res := make([][2]int, 10) fmt.Println(res) 输出: [[0 0] [ ...

  2. CentOS7.1 VNC Server服务配置

    一.安装VNC相关包 yum -y install tigervnc tigervnc-server tigervnc-server-module 二.复制配置模板文件为vncserver@:1.se ...

  3. Mybatis插件之Mybatis-Plus(传统模式)

    1.什么是Mybatis-Plus? Mybatis-Plus(简称MP),是一个Mybatis的增强工具,可以在原来Mybatis基础上不错任何改变就能够对原来Mybatis进行增强,能够简化我们的 ...

  4. 导入/导出 数据库/数据库表(wordpress做例子)

    导入数据库: 1. 数据库层面: 没有wordpress的情况下,建立wordpress数据库 create database wordpress; 进入wordpress数据库 use wordpr ...

  5. [百度贴吧]飞腾1500a .VS. 龙芯3a3000: 同频实用性能对比

    贴吧关于 龙芯与飞腾的简单对比. https://tieba.baidu.com/p/5682824804?red_tag=0221728732 龙芯3a3000实用性能 ,还不如4年前发布的FT15 ...

  6. SQL优化记录

    2019.06.19记录: 1.SQL优化的原因: 原因:性能低,执行时间太长,等待时间太长,SQL语句欠佳(尤其连接查询),索引失效,服务器参数设置的不合理(如:缓冲区,线程等) a.SQL: 编写 ...

  7. 请写一段 PHP 代码 ,确保多个进程同时写入同一个文件成功

    方案一: function writeData($filepath, $data) { $fp = fopen($filepath,'a'); do{ usleep(100); }while (!fl ...

  8. spark异常篇-关闭程序

    在运行 spark 程序时,出于某种原因,我想停止运行,狂按 ctrl+c 不一定起作用 以下两种情况是不好关闭的 1. cluster 运行模式 2. SparkStreaming 程序 本文旨在收 ...

  9. 消息服务百科全书——High Availability

    1.1为何需要Replication 在Kafka在0.8以前的版本中,是没有Replication的,一旦某一个Broker宕机,则其上所有的Partition数据都不可被消 费,这与Kafka数据 ...

  10. rabbitmq消息队列,消息发送失败,消息持久化,消费者处理失败相关

    转:https://blog.csdn.net/u014373554/article/details/92686063 项目是使用springboot项目开发的,前是代码实现,后面有分析发送消息失败. ...