在学习了Java这个面向对象的编程语言、学习了java的一些核心思想,这些思想包括继承、封装以及多态,下面将用以上思想简单地实现一个图书系统。
首先,要明确我们要做一个什么样的系统:
主要包括两个功能:
1:实现图书管理人员对书架的图书进行增删查改。
2:实现借阅图书的人对书进行借出以及查找所要借的书是否借出。
下面介绍具体实现过程和思想:
第一步,实现书的类:
书的类里面属性包括:
1:书的名字
2:书的类型
3:书的作者
4:书的价格
5:书是否被借出
方法:实现对某一本书的借出和归还进行操作的功能;对这本书的状态,以及书的详细细节进行打印;获取书的名字,获取书的作者,获取书的价格,获取书的类型。
代码如下:
每一本书的属性:(这里用到了封装的思想,即运用private关键字进行修饰成员变量,使得这些成员变量只能在该类下进行修改和赋值,具体实现途径是下面调用该类里面的方法对该类里面的成员变量进行赋值操作。)
每一本书这个类里面的方法:
书的构造方法(即每一次新建一个书的对象的时候就应该输入的属性):
书的状态toString函数(重写了方法)即打印状态的方法:
第二步是创建一个书架用来放上面的书:
里面的属性包括:
定义一个书的数组,并new一个 含10个书的类的对象数组,用来存放书。
然后定义一个整形变量size用来查看目前书的容量。
方法:实现方法对书架上的书进行添加,和容量size的修改,以及获取在特定位置下的的书,获取特定位置下的书的名字(即通过书类型的数组下标进行访问)。
这里我将书进行初始化先给书架上放三本书,并在构造方法里面实现。
代码如下:
1:创建一个书类型的数组(也就是书架,里面放一个个书的对象)
2:在构造方法里面先放入三本书:
3:实现书架类里面的功能
第三步 :实现图书系统管理人员和借书人的类
首先图书管理人员和借书的人都是图书系统的使用者,我们按照这个思想,将共同点提炼出来,实现一个父类,然后该父类被子类继承,并设置该父类为抽象类,即子类若不是抽象类的话去继承父类,将要重写父类里面的所有抽象方法。该思想体现了继承。
1:子类继承父类:
借书人继承父类并在构造方法下初始化父类(继承规则):
然后是图书管理人员继承父类:
第四步:实现对每一本书进行增删查改的操作:
这里所有的方法都放在一个类当中,并新建一个接口,让所有操作的方法都继承这个接口:
下面不进行过多赘述每一个操作的具体实现过程,因为并不复杂,直接上代码:
1)添加书的类:
2)借书的类:
3)删除某一本书的类:
4)打印显示书架所有书的类:
5)退出程序类:
6)归还书的类:
7)查找某一本书的类:
8)父类 即接口:
第五步:实现图书管理人和借书人的内部具体的方法实现:
这里用到了上面的接口,上面用所有的操作类继承接口,目的就是为了在不同使用者类下能有专属的方法,例如借书的人只需要实现 a.查找书 b.借阅书 c.归还书 d.退出系统 而图书系统管理人却需要实现 a.删除书 b.添加书.....所以这里运用继承中的向上转型,由于上面操作的类继承了接口,即接口时父类,创建接口类型数组,数组成员放的是每一个操作类的对象:、
建立接口数组:
将数组成员赋值操作类的对象:
第六步:在main函数内实现:
这里用到了login方法,该方法是判断使用该图书系统的人的身份的,返回一个ueser类的对象,巧妙地运用了向上转型的思想:
login方法具体如下:
这里用到了向上转型后,就可以知道使用者的身份,然后就可以分别调用user的子类的方法,用到了多态的思想。补充:多态的实现必须包含三个步骤:1:子类继承父类;2:子类重写父类里面的方法;3:通过父类对象来调用子类中重写的方法。
=========================================================================
下面是运行图书系统的结果(只展示部分操作结果):
1—>图书管理员:
登录界面:
显示书架里面的图书:
查找书架里面的图书:
添加书籍:
添加完后显示书架上的所有图书:
0—>借阅书籍的人
借阅书籍的人的登录界面:
查找图书:
借阅图书:
查看接完书后的书的状态: