当前课程知识点:Java程序设计 >  第二章 类与对象 >  2.5-应用举例 >  2.5-应用举例

返回《Java程序设计》慕课在线视频课程列表

2.5-应用举例在线视频

2.5-应用举例

下一节:2.6-第2章小结

返回《Java程序设计》慕课在线视频列表

2.5-应用举例课程教案、知识点、字幕

大家好

欢迎继续学习

Java语言程序设计

这一节我们来

一起看一个应用实例

在这一节呢

我要通过一个

银行帐户类的实例

给大家复习和演示一下

在这一章我们学到的语法

首先我们来看一下

在前面例题中

我们已经设计好的

这个初步的银行帐户类

这就是这个基本的银行帐户类

Bank Account类

我们看到在这个类里面

声明了有包括类的属性

状态 构造方法

还有get方法和set方法

那我们来看这个构造方法呢

有不的重载形式

这都是我们前面例题中

看到过的

然后对于这些私有的属性呢

相应的都提供了

get方法和set方法

这里呢是一个简单的测试程序

在这个测试方法中呢

我们构造一个

银行帐户类的对象

然后呢 尝试调用它的

一些set方法和get方法

我们看到的测试结果呢

如我们预期的结果是一样的

好 接下来呢

我们要对这个银行帐户类呢

进行一系列的修改和测试

首先呢

我们来对这个银行帐户类

进行一些修改

我们要覆盖tu String()方法

然后呢

要声明存取款方法

要使用Decimal Format类

对于输出的数据类型

进行格式化

还要声明类方法

用它来声明特殊的实例

我们还要在这个类里边

声明类变量

也就是属于整个类的所有对象

所共享的变量

这是我们将对银行帐户类

进行的修改

首先我们来看

这个to String()方法

我们需要将对象的内容

转换成字符串

也就是说我们在这儿看到的

这两种输出方式呢

它应该是等效的

我们可以直接

将一个银行帐户类的对象

放在println方法的参数里面

作为实参

或者去调用to String()

进行转换以后把它作为实参

这两种实际上是等价的

为什么呢

因为在每个类中

默认都有一个

to String()方法

当我们在上下文中

需要一个字符串

String类型对象的时候

如果我们给它了

一个类的对象

那么这个类的

to String()方法

就会自动被调用

将这个对象转化成 String类型

但是呢

在前面的简单例子中

我们也到了

继承而的这个天然的

to String()方法呢

不是那么有用

这个时候呢

我们需要自己来覆盖

这个to String()方法

那么覆盖的时候

要注意什么问题呢

首先必须生命为public类型

返回值必须是String

方法的名称必须是to String

而且不能有参数

还有一点很重要

就是在方法体中

不要使用输出方法

不要使用这个println方法

下面呢

我们就一起来看一下

在改进的银行帐户类中

我们是怎样

覆盖to String()方法的

现在我们就来看

在Bank Account类中呢

怎么覆盖

这个to String()方法

由于从(英文)这个类

继承过来的

这个to String()方法

它输出的信息

转换的信息呢

对我们来说没有什么意义

所以我们现在在这个类中

自己来重写一下

也就是覆盖一下

这个to String()方法

使得将这个类的对象

转换成字符串的时候

能够输出帐号

还有呢

它的余额

所以我们在这儿呢

就将我们需要

转换成需要显现的这些信息

拼接成一个字符串

作为这个to String()方法的

执行结果返回

这样修改以后呢

我们再重新编一个

Bank Account类

然后呢

我们依然运行

前面的那个测试程序

这个时候呢

我们看到测试结果

这个帐户的信息输出来呢

就有意义了

是我们帐户里面

各个项的真实信息

它的帐号 它的余额

那么下一个问题呢

我们来考虑一下

这个银行帐户中的存款余额

我们知道一般来说呢

什么会引起余额变动

存取款操作

会引起帐户的余额变动对吧

所以这个余额

应该不能够人为去设置的

那么接下来呢

我们就在这个银行帐户类中

添加存取款方法

通过存取款来变动余额

这里呢

是我们新增的

存款方法和取款方法

在这个Bank Account

也就是帐户类中呢

应该是由存款方法来增加余额

由取款方法来减少余额的

而不应该是直接去设置余额

所以我们看这个deposit方法呢

就是存款方法

参数呢是存款数额

这次存多少钱

那就按照这个参数的存款数额呢

向这个balance

余额上累加

累加完了以后

这不就余额变动了吗

然后呢将这个余额返回

作为这个方法的返回值

同样呢

取款方法也是这样的

这次要取款多少

这是一个取款数额

我们将这个取款数额呢

从这个余额上减掉

然后呢

把取款数额呢返回

当然这儿呢

其实应该

大家回去再修改一下

把它做得更完备一些

然后先判断一下

它余额够不够

你要求的取款数额

如果不够呢

应该就取不了这么多钱的

这个呢

大家可以在这个基础上

自己把这个判断条件呢

完善一下

现在呢

我们在测试程序中

测试一下这个存取款的功能

我们看到构造好帐户对象以后

把它的一些基础数据设置好

并且呢先输出一下

帐户信息看一下

接下来呢

我们又再构造一个

另一个帐户信息

也是把帐户信息输出看一下

接下来我们就来尝试

存款和取款了

那我们先存一个数额

再存一个

接下来呢

输出一下当时帐户的状态

就是经过存款以后

这个帐号下的

它的余额

然后接下来呢

再做一个取款

在取款之后

再输出一下这个帐户的信息

我们来看

这个余额呢

确实是变动了

所以我们靠

这个存款和取款操作呢

来变动了余额

如果我们希望对输出的数据

进行格式化

希望它有一个很漂亮的格式

这个时候我们可以用

Java.text这个包里面的

DecimalFormat类

来对输出的数据进行格式化

DecimalFormat类呢

是在Java.text包里面

如果说我们

在to String()方法中

想对输出数据进行格式化的话

我们就可以使用

DecimalFormat类的

实例方法format

现在呢

我们进一步

在这个to String()方法中呢

再做一点修改

我们给输出的信息呢

设置一下格式

我们希望在输出

这个金额的时候呢

设置一个比较

大家看的舒服的

比较习惯的这样的格式

那么当我们需要

设置格式的时候呢

可以使用这个

DecimalFormat类的功能

调用这个类里面的format方法

在前面呢

构造这个

DecimalFormat对象的时候呢

就将这个

我们希望的格式信息

作为参数给到它

然后呢调用format方法

将我们希望输出的数据

这个balance余额

放在这儿做参数

这样我们看到

这个输出的格式呢

就按照我们规定的格式来了

那么DecimalFormat

这个类里面的更多的功能

更多的格式呢

大家如果感兴趣

可以自己去看一下

这个(API)的稳当

在这儿呢

这个例子仅仅是提示大家一下

DecimalFormat类

可以用来设置输出信息的格式

那么详细内容呢

就没有时间多讲了

只举这一个例子

试想一下

有的时候我们可能

需要在系统中

生成一些比较特殊的样例帐户

那么这个时候呢

我们可以在类中

定一些静态方法

或者说属于类的方法

让这些方法

为我们来生成特殊的帐户实例

现在我们看一下这个类怎么样

提供生成样例帐户对象的功能

假设我们希望

生成三个不同的样例帐户

那我们就可以在类里面

写三个静态的方法

我们看到example1 example2

还有呢这个

empty Account Example

这个empty Account Example

生成的是一个空的

没有余额的这样一个帐户

看这个example1生成的帐户呢

它有帐户的名字

有帐号 然后呢

进行了一次存款操作

存了1000

那么这个example2呢

也是它设置了这个名字

还有帐号

进行了两次存款操作

改变了它的余额

那么这个

empty Account Example呢

只是生成了一个帐户

然后设置它的名字和帐号

但是呢

没有进行存款操作

通常我们在银行中

去开了一个新帐户的时候呢

就会有一个帐号被自动生成

这个帐号一般来说

是按照某种规则去生成的

而不是说

我们随意输入一些数字

或字符去人为指定的

那这一般

是一个常识性的问题

大家都知道

那么在我们系统中呢

目前还是采用什么办法呢

是采用我们

硬生生的去设置一个帐号的

这样的办法

显然这个办法不好

那么接下来呢

我们要对这个银行帐户类呢

进行修改

要修改它的构造方法

让这个构造方法

在初始化一个帐户对象的时候

能够自动给它一个帐号

那么这里呢

我们采用一个比较简单的规则

就用这个对象的序号

作为自动的帐号

接下来我们来看

在程序中进行怎么样的修改

可以达到这一点

我们要做的修改呢

首先就是修改构造方法

取消构造方法

参数列表中的那个帐号参数

帐号不是由你指定的参数

去初始化的

那么另外呢

就不允许直接修改帐号

所以要取消

set Account Number

这个方法

那我刚才说了

我们采用的简单规则呢

就是用这个对象的序号

来代表帐号

这个时候我们就需要

增加一个类变量

对对象进行计数

初始值是零

每生成一个新的

BankAccount对象

那么它的帐号就自动设置为

LAST ACCOUNT NUMBER

它的值加1

同时呢

这个LAST ACCOUNT NUMBER

要被更新成新的值

那么这样情况下呢

我们就可以实现自动生成帐号

按照规则自动生成

规则呢虽然比较简单

但是呢

它也是自动生成的

如果大家愿意的话呢

去模仿现在的实际的银行

比如说你加上

你的银行(分支)机构的代码

加上其它的代码

那么最后是一种序号

道理其实都是一样的

除此而外呢

我们接下来还要做一个修改

就是要取消

set Balance的方法

我们有了存取款的方法了

还要通过存取款来改变余额

那么随意设置余额

显然是不科学的

所以set Balance方法呢

也要被取消

好 下面呢

我们就来看一下

修改以后的完整的银行帐户类

以及对这个类的测试代码

看看这个完整的程序

这里我们看到的

就是这个修改以后的

这个完整的新的帐户类

BankAccount2

我们看到这里面的

这个静态成员

LAST ACCOUNT NUMBER

这就是用来生成帐户的

帐号的这个基数

(初启)的时候呢 是零

然后呢每增加一个帐户呢

它自己会增一

作为新帐户的帐号

还有呢

在这个构造方法中

都少了一个参数

就没有这个帐号参数了

因为帐号是不应该直接

去编一个数去设置的

应该是根据这个累计的数

LAST ACCOUNT NUMBER

去每次加1生成帐号的

另外呢

我们看到也就没有

设置帐号的方法了

那么还有设置余额的方法呢

也相应的取消了

我们看到这些方法呢

只有一个ownerName

设置帐户名

然后另外有几个get方法

那这个取得帐号

取得帐户名和取得余额

这几个方法是有的

然后to String方法

使我们将这个帐号

还有呢余额

都作为一个整个字符串

拼接起来作为返回值

这里它的格式呢

我们用了DecimalFormat

这个类的功能

用它的format方法

来设置了它的表现格式

另外呢

我们看了这个新增的

存款方法deposit

还有取款方法withdrawl

用两个方法呢

来改变余额

而不是设置余额了

还有呢

这儿我们刚才看到的例子中的

三个静态方法

example1 example2

还有empty Account Example

这都是用来生成

样例帐户的方法

也都在这里面

这是刚才前面我们讲到的

几个修改的地方呢

都集中修改在

这第二个版本的帐户类里面了

接下来呢

我们就通过这个测试程序

测试一下新的帐户类对象

我们看到呢 构造这个

这个地方呢

example1 example2

就是来构造样例帐户

我们这儿构造了

几个不同的样例帐户

然后呢 去设置它的帐户名

去进行存款操作

然后输出帐户的状态

那直接将这个对象名

放在println里面输出呢

就使得系统自动调用了

to String()

将对象转换成字符串

我们看这个输出的格式呢

使我们通过这个

DecimalFormat类的

format的方法

进行格式化以后的这个结果

我们看到这个帐号

还有这个余额都是我们

按照我们规定的格式

输出的数字

在这一节呢

我们以银行帐户类为例

体验和复习了

我们在这一章中

学过的这些语法

好我们这一节的内容就是这些

Java程序设计课程列表:

第一章 Java语言基础知识

-1.0-导学

--1.0-导学

--JDK的安装与配置01

--JDK的安装与配置02

--JDK的安装与配置03

--编辑并执行第一个java程序01

--编辑并执行第一个java程序02

--编辑并执行第一个java程序03

--eclipse的安装和配置01

--eclipse的安装和配置02

--eclipse的安装和配置03

--使用eclipse进行Java的开发01

--使用eclipse进行Java的开发02

--使用eclipse进行Java的开发03

-1.1-Java与面向对象程序设计简介

--1.1.1 Java与面向对象程序设计简介

--第一章 Java语言基础知识--1.1-Java与面向对象程序设计简介

-1.2-基本数据类型与表达式

--1.2.1-基本数据类型与表达式

-第一章 Java语言基础知识--1.2-基本数据类型与表达式

-1.3-数组

--1.3.1-数组

-第一章 Java语言基础知识--1.3-数组

-1.4-算法的流程控制

--1.4.1-算法的流程控制

--第一章 Java语言基础知识--1.4-算法的流程控制

-1.5-第一章小结

--1.5.1-第一章小结

-第一章编程练习题

-课件

--外部链接

第一章续-习题讲解视频

-Java环境配置、Eclipse使用、Helloworld程序详解

--JAVA的安装和配置

--编写并执行第一个Java程序及Java的跨平台性

--eclipse的安装和配置

--使用eclipse建立Java项目、编写和运行Java程序

--Java注释和Eclipse中的注释操作

--详解HelloWorld程序

-Java数据类型

--Java数据类型介绍

--Java整数类型

--Java浮点类型

--Java字符类型和布尔类型

--数据类型实战

--数据类型转换

--Java强制类型转换精度损失示例与表达式中的数据类型转换

-Java数组

--Java数组介绍、声明与使用

--一维数组的初始化与length属性

--数组索引的原理与使用

--二维数组的介绍与使用

-Java变量

--Java的变量

-命令行参数

--命令行参数的介绍

第二章 类与对象

-2.0-导学

--2.0-导学

-2.1-面向对象方法的特性

--2.1-面向对象方法的特性

--第二章 类与对象--2.1-面向对象方法的特性

-2.2-1-类声明与对象创建

--2.2-1-类声明与对象创建

--第二章 类与对象--2.2-1-类声明与对象创建

-2.2-2-数据成员

--2.2-2-数据成员

--第二章 类与对象--2.2-2-数据成员

-2.2-3-方法成员

--2.2-3-方法成员

--第二章 类与对象--2.2-3-方法成员

-2.2-4-包

--2.2-4-包

--第二章 类与对象--2.2-4-包

-2.2-5-类的访问权限控制

--2.2-5-类的访问权限控制

--第二章 类与对象--2.2-5-类的访问权限控制

-2.3-1-对象初始化

--2.3-1-对象初始化

--第二章 类与对象--2.3-1-对象初始化

-2.3-2-内存回收

--2.3-2-内存回收

--第二章 类与对象--2.3-2-内存回收

-2.4-枚举类

--2.4-枚举类

--第二章 类与对象--2.4-枚举类

-2.5-应用举例

--2.5-应用举例

-2.6-第2章小结

--2.6-第2章小结

-第二章编程练习题

-课件

--第二章课件

第三章 类的重用

-3.0-导学

--3.0-导学

-3.1.1-3.1.2-类继承的概念和语法

--3.1.1-3.1.2-类继承的概念和语法

--第三章 类的重用--3.1.1-3.1.2-类继承的概念和语法

-3.1.3-隐藏和覆盖

--3.1.3-隐藏和覆盖

--第三章 类的重用--3.1.3-隐藏和覆盖

-3.2-Object 类

--3.2-Object 类

--第三章 类的重用--3.2-Object 类

-3.3-终结类与终结方法

--3.3-终结类与终结方法

--第三章 类的重用--3.3-终结类与终结方法

-3.4-抽象类

--3.4-抽象类

--第三章 类的重用--3.4-抽象类

-3.5-泛型

--3.5-泛型

--第三章 类的重用--3.5-泛型

-3.6-类的组合

--3.6-类的组合

-3.7-小结

--3.7-小结

-第三章编程练习题

-课件

--课件

第四章 接口与多态

-4.0-导学

--导学

-4.1-接口

--接口

--第四章 接口与多态--4.1-接口

-4.2.1-4.2.2-类型转换

--类型转换

--第四章 接口与多态--4.2.1-4.2.2-类型转换

-4.2.3-方法的查找

--方法的查找

--第四章 接口与多态--4.2.3-方法的查找

-4.3-多态的概念

--多态的概念

--第四章 接口与多态--4.3-多态的概念

-4.4-多态的应用举例

--多态的应用举例

--第四章 接口与多态--4.4-多态的应用举例

-4.5-构造方法与多态性

--构造方法和多态性

--第四章 接口与多态--4.5-构造方法与多态性

-4.6-本章小结

--本章小结

-第四章编程作业

-课件

--课件

第五章 输入输出

-5.0-导学

--5.0-导学

-5.1.1-5.1.2-异常处理的概念

--5.1.1-5.1.2-异常处理的概念

--第五章 输入输出--5.1.1-5.1.2-异常处理的概念

-5.1.3-5.1.5-异常的处理

--5.1.3-5.1.5-异常的处理

--第五章 输入输出--5.1.3-5.1.5-异常的处理

-5.2-输入输出流的概念

--输入输出流的概念

--第五章 输入输出--5.2-输入输出流的概念

-5.3.1-写文本文件

--写文本文件

--第五章 输入输出--5.3.1-写文本文件

-5.3.2-读文本文件

--读文本文件

--第五章 输入输出--5.3.2-读文本文件

-5.3.3-写二进制文件

--写二进制文件

--第五章 输入输出--5.3.3-写二进制文件

-5.3.4-读二进制文件

--读二进制文件

-5.3.5-File类

--File类

-5.3.6-处理压缩文件

--处理压缩文件

-5.3.7-对象序列化

--对象序列化

-5.3.8-随机文件读写

--随机文件读写

-5.4-本章小结

--本章小结

-课件

--课件

第六章 对象群体的组织

-6.0-导学

--导学

-6.1-Java集合框架介绍

--Java集合框架介绍

--第六章 对象群体的组织--6.1-Java集合框架介绍

-6.2-主要接口及常用的实现类

--6.2-主要接口及常用的实现类

--第六章 对象群体的组织--6.2-主要接口及常用的实现类

-6.3-常用算法

--常用算法

-6.4-数组实用方法

--6.4-数组实用方法

-6.5-基于动态数组的类型(Vector, ArrayList)

--基于动态数组的类型(Vector, ArrayList)

-6.6-遍历Collection

--遍历Collection

-6.7-Map接口及其实现

--Map接口及其实现

-6.8-第6章小结

--第6章小结

-课件

--课件

第七章 图形用户界面

-7.0-导学

--导学

-7.1-绘图

--绘图

-7.2-Swing基础

--Swing基础

-7.3-Swing的层次

--Swing的层次

-7.4-布局管理

--布局管理

-7.5-内部类

--内部类

-7.6-事件处理的基本概念

--事件处理的基本概念

-7.7-事件派发机制

--事件派发机制

-7.8-顶层容器

--7.8-顶层容器

-7.9-中间层容器(一)

--7.9-中间层容器(一)

-7.10-中间层容器(二)

--7.10-中间层容器(二)

-7.11-原子组件(一)

--7.11-原子组件(一)

-7.12-原子组件(二)

--7.12-原子组件(二)

-7.13-原子组件(三)

--7.13-原子组件(三)

-7.14-其它Swing特性

--7.14-其它Swing特性

-7.15-第7章小结

--7.15-第7章小结

-课件

--课件

2.5-应用举例笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。