嗨!同学你好!下面我们看一个应用示例,就是一个银行系统
实际上呢,我们在编这个程序的时候呢
就是把系统当中有需要多少类,每一类呢有什么样的字段或方法
定义好了,那这个程序呢就基本上写好了。
那对于一个银行系统呢 我们需要一个 Account 账号这个类,然后
Bank 银行这个类 以及呢 ATM 机这样一个,三个类
每一类呢,我们再设计一下它需要什么样的字段 需要什么样的方法就可以了。
下面我们再详细地看一下这个字段和方法 先看呢,Account
Account 呢,帐号呢,当然最重要的就是
id、 money 和 password
就是说它的编号、 它的钱数或它的口令
那么,方法呢主要是存钱或取钱,也就是说 save
money 和 Withdraw Mon,另外呢我们定义一些
得到 get 和 set 方法,就说 getId
呀,setId 呀 这样我们方便操纵这个字段。
而对于 Bank 这个类 对于银行这个类呢,它最核心的字段呢
那就是一个集合,这个集合呢就是 accounts,它记录的是
有所有的这些账号的一个集合。
我们 可以用 list 来实现它。
那么它的方法呢,就是 OpenAccount
就是开个账号,CloseAccount 就是关账号,以及呢查找某一个账号。
这是这个银行这个类 在 ATM 机呢,我们主要是实现的界面
ATM 机呢,它又属于某一个银行,所以我们 ATM
机里面 那个字段呢就是银行,通过这个字段呢
就可以关联上它跟银行的关系,ATM 的 bank
字段 还有呢,其他的一些方法,包括 GetInput,用来
输入,表示用户在输入,然后呢 show
用来显示信息,Transaction 呢 用来表示呢做一笔交易。
我们在程序里面 把这些类定义好了以后
然后呢,我们可以呢,这个图呢我们可以手工画,但是呢 在
Visual Studio 里头,它可以呢自动帮我们画出来
这就需要呢,在 Visual Studio 里面添加一个
新项,这个新项呢是一个类图,Class diagram
早期版本呢也叫"类关系图",也就是 在新版本里面就叫"类图"了。
所以我们可以呢很方便地得到这样一个图 就添加一个类图以后,然后呢,把相应的
类,把相应的这个文件呢拖到这个类图上,它就自动生成了
这样一个图 那么源程序呢,大家有兴趣呢可以
自己呢再看一下,这里呢我给大家呢演示一下 大家看这个
Account 类,它定义了个 字段,money,id,password
就是我们刚才讲的钱数,然后呢账号 编号,然后口令。
然后这个 Account 呢,我们定义一个构造方法 它的目的呢就是传进来的
id、 password 和 money 我们把它呢放到这个字段里头。
还有一些方法叫 getMoney 和 setMoney,类似这样的方法目的是为了
方便别人来存取我们这个 money 这个字段
包括得到或设置,其他的 getId、 setId
类似 还有一个呢 我们比较关心的就是 SaveMoney
和 WithdrawMoney 那么存钱呢就是把我们现在的钱数呢,加等于现在这个
money 另外我们在编写方法的时候呢,一般都要加
一条语句,这个语句呢对于参数进行判断 如果这个
money 小于0,那我们不能让它存这个钱 那么这种语句呢称为
guard 语句,就是保卫语句,我也简称为"卫语句"
一般的函数里头都需要有这样的语句。
那么再看取钱 那这个取钱呢,它是把这个钱数减等于一个值
减等于一个值 另外呢,我们有一个
IsMatch 这个方法,它就是判断一个 id 和 password
是不是我们当前这个帐号,那就用 id == this.id
& pwd == this.pwd,就是反复一个 iii 所以这是账号这个类。
我们再看银行这个类
银行这个类呢,它核心,这个核心呢就是一个 accounts
的一个,一个集合 那 accounts 这个集合呢,我们这里用一个列表来表示,一个
List 一个列表 这个列表呢是一个 accounts
的列表,用一个尖括号来表示是什么样的列表 好,有这样一个字段。
下面的方法我们看呢 开一个账号,开一个账号呢,它要做的事情呢 就是 new
一个账号,就是创建一个账号,同时呢 把刚刚重建的账号呢加入到
accounts 里头 那这就是开一个账号,把这个账号给返回。
关一个账号呢? 就是从里面呢 Remove,从里面 Remove
掉这个账号 查找一个账号呢,那就是 遍历所有的
accounts,foreach account in accounts
那如果是这个账号,account 跟我们当前的
id 和 password 匹配的话,那就返回,那否则呢,返回给 null。
所以这是银行的这个类 那银行的类呢,主要就是一个账号的列表,然后呢开关账号或查找账号
我们再看一下 ATM 机 ATM
机呢,它主要是用来 做界面的。
我们定义了一个字段,这个字段呢就是 bank
它通过这个字段呢,来确定这个 ATM 机它是属于哪个银行的
所以这里呢,我们有一个构造方法,ATM 带一个参数
bank 它做一个交易呢,就是我们
得到一些输入,然后呢根据它输入的值,首先呢根据它 这个银行的
id,根据它帐号的 id 和口令 然后呢去从这个银行里面去找
如果找到了,那么说明这个账号是对的,如果是 null
呢 那就这笔,这这笔 这个事务、 这笔交易呢就不做了。
然后我们就显示一个菜单,就是 1 就是做什么,2 就是做什么 啊,3 就是做什么。
根据用户的一个 Input 输入,来进行相应的处理
如果是 1 呢,就显示这个银行的账号的余额
如果是 2 呢,就用来呢显示呢他需要存钱
那么存钱呢让他输入这个钱数,然后执行 account,根据这个账号呢
SaveMoney 类似的,取钱就是 WithdrawMoney。
所以,这里面我们可以看到呢 它通过这个界面来进行呢,这个银行的
查找和,账号的查找,然后或存钱或取钱的动作
还有一个呢,两个方法就是显示信息。
那我们这里呢就是在控制台上 WriteLine,还有一个取得输入,我们就用控制台 ReadLine 输入字符。
所以这三个类呢都是比较清晰的 呃,当然我们也要把这三个类呢来使用它,我们就编写一个 一个啊
demo 类,这个类里面有 Main 方法
首先我们 new 一个 bank,创建一个银行,然后呢这个银行呢
Open 账号,Open 开那个账号,然后我们再创建一个
new ATM 机 在这个 ATM 机里面呢,我们用 ATM
机呢来做五笔交易 那么用户呢他就输入相应的信息,然后呢
显示相应的信息 那我们演示一下