用List表示多重性
练习目标-在类中使用List作为模拟集合操作: 在本练习中,将用List实现银行与客户间的多重关系。
任务
对银行来说,可添加Bank类。 Bank 对象跟踪自身与其客户间的关系。用Customer对象的List实现这个集合化的关系。还要保持一个整数属性来跟踪银行当前有多少客户。
- 创建 Bank 类
- 为Bank类增加两个属性:customers(Customer对象的List)和numberOfCustomers(整数, 当前Customer对象的数量)
- 添加公有构造器,初始化customersList。
- 添加addCustomer方法。该方法必须依照参数(姓,名)构造一个新的Customer对象然后把它放到customerList中。
- 添加getNumOfCustomers 访问方法,它返回numberofCustomers属性值。
- 添加getCustomer方法。它返回与给出的index参数相关的客户。
- 编译并运行TestBanking程序。可以看到下列输出结果:
Customer 1 is Simms,Jane
Customer 2 is Bryant,Owen
Customer 3 is Soley,Tim
Customer 4 is Soley,Maria
当前客户数量 = 4
package banking; import java.util.ArrayList;
import java.util.List; public class Bank1
{
private List<Customer> customers ;
private int numberOfCustomers = ; public Bank1( )
{
customers =new ArrayList<>() ;
} public void addCustomer(String firstName ,String lastName)
{
customers.add(new Customer(firstName,lastName));
} public int getNumberOfCustomers() {
numberOfCustomers=customers.size();
return numberOfCustomers;
} public Customer getCustomer(int index)
{
Customer s=new Customer();
s=customers.get(index);
return s;
} }
package banking; import java.util.List; public class Customer extends Account
{
//成员属性
private String firstName ;
private String lastName ;
private double account ; //构造方法
public Customer()
{ }
//构造方法
public Customer(String f , String l)
{
this.firstName = f ;
this.lastName = l ;
} //get set
public String getFirstName() {
return firstName;
} public void setFirstName(String firstName) {
this.firstName = firstName;
} public String getLastName() {
return lastName;
} public void setLastName(String lastName) {
this.lastName = lastName;
} public double getAccount() {
return account;
} public void setAccount(double account) {
this.account = account;
} public String toString() {
return firstName + ", " + lastName ;
} }
package banking; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; public class TestBanking { public static void main(String[] args)
{
//实例化账户
Account at = new Account() ; System.out.println("Creating an account with a "+at.getBalance( ) +" balance") ;
System.out.println("Withdraw "+(at.getBalance( ) -at.withdraw() ));
double x=at.getBalance( );
System.out.println("Deposit "+(at.deposit(22.5)-x)) ;
System.out.println("Withdraw "+(at.getBalance( ) -at.withdraw(47.62) ));
System.out.println("The account has a balance of "+at.getBalance()) ; System.out.println("————————————————————————"); //实例化顾客
Customer cr = new Customer( ) ; cr.setFirstName("Jane");
cr.setLastName("Smith");
cr.setBalance();
System.out.println("Creating the customer "+cr.getFirstName() +" "+cr.getLastName());
System.out.println("Creating her account with a " +cr.getBalance()+" balance");
System.out.println("Withdraw "+(cr.getBalance()-cr.withdraw()) );
double x1 = cr.getBalance( ) ;
System.out.println("Deposit "+(cr.deposit(22.5)-x1));
System.out.println("Withdraw "+(cr.getBalance()-cr.withdraw(47.62)));
System.out.println("Customer "+cr.getLastName()+" "+cr.getFirstName()+
" has a balance of "+cr.getBalance()); System.out.println("————————————————————————"); Customer cr1 = new Customer( ) ; cr1.setFirstName("Jane");
cr1.setLastName("Smith");
cr1.setBalance();
System.out.println("Creating the customer "+cr1.getFirstName() +" "+cr1.getLastName());
System.out.println("Creating her account with a " +cr1.getBalance()+" balance");
System.out.println(cr1.withdraw1() );
System.out.println(cr1.deposit1(22.5));
System.out.println(cr1.withdraw1(47.62));
System.out.println(cr1.withdraw1());
System.out.println("Customer "+cr1.getLastName()+" "+cr1.getFirstName()+
" has a balance of "+cr1.getBalance()); System.out.println("————————————————————————"); Bank bk =new Bank( ) ; bk.addCustomer( "Simms" , "Jane" );
bk.addCustomer( "Bryant" , "Owen" );
bk.addCustomer( "Soley" , "Tim" );
bk.addCustomer( "Soley" , "Maria" ); System.out.println("————————————————————————"); // Bank1 bk1 = new Bank1(){}; bk1.addCustomer("Simms", "Jane");
bk1.addCustomer("Bryant", "Owen");
bk1.addCustomer("Soley","Tim");
bk1.addCustomer("Soley","Maria"); for(int i= ;i <bk1.getNumberOfCustomers();i++)
{
System.out.println("Customer "+(i+)+" is"+" "+bk1.getCustomer(i));
} System.out.println("当前客户数量 = "+bk1.getNumberOfCustomers()); System.out.println("————————————————————————");
} }
用List表示多重性的更多相关文章
- uml设计之多重性
---------------------------------------------------------------------------------------------------- ...
- UML课程复习重点
第一章 一.UML图示建模工具 二.UML--统一建模语言,以图形符号为基础,描述软件模型既简洁又清晰.它不是开发方法,是独立于任何开发方法之外的语言.它用于描述软件系统分析.设计和实施中的各种模型. ...
- 【MSP是什么】MSP认证之成功的项目群管理
同项目管理相比,项目群管理是为了实现项目群的战略目标与利益,而对一组项目进行的统一协调管理. 项目群管理 项目群管理是以项目管理为核心.单个项目上进行日常性的项目管理,项目群管理是对多个项目进行的总体 ...
- UML类图与面向对象设计原则
1. 引言 从大一开始学习编程,到如今也已经有两年了.从最初学习的Html,Js,JaveSe,再到JavaEE,Android,自己也能写一些玩具.学习过程中也无意识的了解了一些所谓的设计模 ...
- Java三大框架之——Hibernate关联映射与级联操作
什么是Hibernate中的关联映射? 简单来说Hibernate是ORM映射的持久层框架,全称是(Object Relational Mapping),即对象关系映射. 它将数据库中的表映射成对应的 ...
- Enterprise Achitect使用与类的关系的简单介绍
本文作为Enterprise Achitect初步使用,另外也是类图基本介绍,是设计模式的基础. 类的关系有泛化(Generalization).实现(Realization).依赖(Depende ...
- 《UML大战需求分析》阅读随笔(一)
UML:Unified Modeling Language(统一建模语言) 作为我专业学科里的一门语言,其目的就是交流,同客户交流,同自己交流. 用图像和文字,详细地讲解将要做的工程的 需求和功能细节 ...
- 《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述
微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF ...
- 《Entity Framework 6 Recipes》中文翻译系列 (6) -----第二章 实体数据建模基础之使用Code First建模自引用关系
2-5 使用Code First建模自引用关系 问题 你的数据库中一张自引用的表,你想使用Code First 将其建模成一个包含自关联的实体. 解决方案 我们假设你有如图2-14所示的数据库关系图的 ...
随机推荐
- Linux:安装CentOS 6.x和CentOS 7.x
1,准备镜像,这里到阿里云镜像网站下载 https://opsx.alibaba.com/mirror 2,安装CentOS6.10 打开vmware workstation--> 典型--&g ...
- Mysql - ORDER BY详解
0 索引 1 概述 2 索引扫描排序和文件排序简介 3 索引扫描排序执行过程分析 4 文件排序 5 补充说明 6 参考资料 1 概述 MySQL有两种方式可以实现ORDER BY: 1.通过索引扫描生 ...
- [luoguP1816] 忠诚(st表 || 线段树)
传送门 其实我就是想练练 st表 本以为学了线段树可以省点事不学 st表 了 但是后缀数组中用 st表 貌似很方便 所以还是学了吧,反正也不难 ——代码 #include <cstdio> ...
- [tsA1490][2013中国国家集训队第二次作业]osu![概率dp+线段树+矩阵乘法]
这样的题解只能舔题解了,,,qaq 清橙资料里有.. #include <iostream> #include <cstdio> #include <cstdlib> ...
- route 详解
语法: [root@test root]# route [-nee] [root@test root]# route add [-net|-host]目标主机或网域[netmask] [gw|dev] ...
- install pip 回顾
在install pip的时候遇到如下问题 1. yum install 想安装一个package 总是提示没有package 可以安装. 但是后来可以了 2. make 和 configure 到底 ...
- 豆瓣 jsonp 请求数据 并分页
豆瓣分页 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4 ...
- CF #319 div 2 E
在一个边长为10^6正方形中,可以把它x轴分段,分成1000段.奇数的时候由底往上扫描,偶数的时候由上往下扫描.估计一下这个最长的长度,首先,我们知道有10^6个点,则y邮方向最多移动10^3*10^ ...
- Codeforces Round #305 (Div. 2) C题 (数论)
C. Mike and Frog time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- ubuntu 关于sublime text3的一些应用
安装 如今能够通过ppa的方法来安装sublime text3 了,个人感觉就是有有点儿慢,毕竟要update一下. sudo add-apt-repository ppa:webupd8team/s ...