面向对象编程之继承、多态、封装、抽象类、接口、包-下(实战图书管理系统)

该博客介绍了一个基于面向对象编程的图书管理系统实现,涉及继承、多态、封装、抽象类、接口和包的概念。通过分析需求,设计了Book、BookList、IOperation接口及各类操作类。管理员和普通用户类继承自抽象User类,实现了不同权限的操作。博客展示了系统运行截图,并提供了源码链接。
摘要由CSDN通过智能技术生成

下篇👇
java之String、StringBuffer 、 StringBuilder有什么区别?String不可变?
上篇👇
面向对象编程之继承、多态、封装、抽象类、接口、包-上

概述

使用面向对象思想,运用继承、多态、封装、抽象、接口、包等思想、技术、方法等来实现图书管理系统。

需求分析

图书管理系统首先要有书,书有属性,有名字、价格、作者、书的类型、是否被借阅等,所以可以设计为一个Book 类来存放这些属性。将属性设置为私有,提供对应get和set方法,这就是封装
图书馆不止一本书,有书架来存放许多书,所以在设计一个BookList类,来存放多本书。书可以被借阅、查询、管理员可以增加书籍等,是不是类似与顺序表或链表的增删查改?可以使用顺序表链表结构来设计这个BookList类。
可以有两类用户,一个管理员和普通用户,这两类用户都有对书共同的操作,如查阅等,还有自己独有的操作,管理员可以增加或删除书籍,普通用户可以借阅书籍。是不是想到了上篇说的向上转型?所以可以想到,设计一个抽象父类User,有name属性,一系列操作等,然后管理员类和普通用户类继承这个User类,重写父类声明的方法然后来重写这些方法,分别实现自己所独有的操作,也体现了多态
还有就是两类用户所对应的操作了。他们有相同的操作和不同的操作,可以设计一个接口Operation,它有一个work方法,然后让不同操作去实现它的work方法,这就用到了接口
最后可以将对有关书籍的类放在同一个中,将有关操作放在一个包中,将用户类放在一个包中。

核心需求

核心也就是来实现对应的增删查改操作,本质上就是对顺序表的基本操作。这里我使用了简单的顺序表。
🎄简单的登录
🎄管理端de
🎈查阅书籍
🎈增加书籍
🎈删除书籍
🎈显示书籍列表
🎈退出
🎄普通用户端
🎈查询书籍
🎈借阅书籍
🎈归还书籍
🎈显示书籍列表
🎈退出

抽象实现

所需要创建的包和类、接口

在这里插入图片描述

👧书类

提供构造方法,加入对应set/get方法

/**
 * user:ypc;
 * date:2021-04-22;
 * time: 15:40;
 */
public class Book {
   
    private String name;
    private String author;
    private int price;
    private String type;
    private boolean isBorrowed = false;
    public Book(String name, String author, int price, String type, boolean isBorrowed) {
   
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
        this.isBorrowed = isBorrowed;
    }
    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }

    public String getAuthor() {
   
        return author;
    }

    public void setAuthor(String author) {
   
        this.author = author;
    }

    public int getPrice() {
   
        return price;
    }

    public void setPrice(int price) {
   
        this.price = price;
    }

    public String getType() {
   
        return type;
    }

    public void setType(String type) {
   
        this.type = type;
    }

    public boolean isBorrowed() {
   
        return isBorrowed;
    }

    public void setBorrowed(boolean borrowed) {
   
        isBorrowed = borrowed;
    }

    @Override
    public String toS
  • 29
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值