开发者学堂课程【Scala 核心编程-基础:使用抽象完成银行案例】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8964
使用抽象完成银行案例
内容介绍:
一、引入
二、面向对象的三大特性
三、面向对象编程方法-抽象
四、总结
一、引入
由于此前对于 java 进行过学习,故而本课程进对于 scala 与 java 的不同点进行详细叙述,相同点将一笔带过
二、面向对象的三大特性
1、封装
2、继承
3、多态
三、面向对象编程方法-抽象
1、抽象的理解
在定义一个类时,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模板)。此种研究问题的方法称为抽象。
2、经典案例
进行银行账号的填写:
(1)、分析属性、方法
分析出不论银行,各个账号共有的属性、方法。+
1、属性
每个银行账号都应存在账号信息、余额信息、密码
2、方法
查询方法、存取款方法
以上即为抽象过程
3、实际操作
//根据分析,使用 scala 编写 Account 类
class Account (inAccount:stringh ,inBalance:Double,inPwd:string) {
/*
属性
账号,余额,密码 //账号不进行修改
方法:
查询
取款
存款
*/
//进行构造函数的编写
//放入相应值进行初始化
val account = inAccount
val balance = inBalance
//double 类型
//密码一般为字符串
val pwd = inPwd
//在银行开卡过程中,账号的余额账号密码需要指定,故应编写一个主构造器
//进行查询方法的书写
//查询方法需公开、提供查询的密码。排除跨行查询意外,由于查询时即使用卡本身进行调用,故可不进行卡号的查询
def query(pwd:string): Unit = {
//进行密码若与传输值不正确的相关编写
if(!this.pwd.equals(pwd)) {
printfln(“密码错误”)
return
}
//进行格式化
printf(“账号为%s 当前余额为=%.2f\n”,this.accountNo,this.balance) //为输入美观进行格式化
}
//取款
det withDraw(pwd:string,money:Double):Any = {
//进行密码是否正确的判断
if(!this.pwd.equals(pwd)) {
printfln(“密码错误”)
return
//当前若编写 return,由于其本身不带有值,将会出现问题,故而编写 Any 类型
//return 包含返回值、终止程序执行的作用,将其拿掉后程序将会在错误的基础上继续执行,故而不应去掉。但若不去掉,此后的值将出现不匹配的情况,进一步推断出应采用 Any 类型。
//此处体现出语法的灵活使用
}
//判断取款金额是否合理(主要不能超过金额限制)
if(this.balance < money) {
println(“余额不足”)
return
}
//符合条件后进行取款
this.balance -= money
//返回 money
money
}
}
//进行执行
//开卡,即创建一个账号
val account = new Account(
“
gh0001
”
,890.4,“111111”)
//查询
account.query(“111111”)
//进行密码的传输
//取款
account.withDraw(“111111”,100.0)
//取款时应输入正确的密码
//进行查询
account.query(“111111”)
}
}
//进行代码的运行
D:\program\jdk8\bin\java...
账号为ph00001 当前余额是890.40
账号为ph00001 当前余额是790.40
Process finished with exit code 0
四、总结
使用抽象的此过程与 java 具有共通点,仅是形式上放生了部分变化。