java面向对象共享单车案例

基本思路:1.创建公司数组,单车数组,在公司类里面写主程序,单车管理类里面写用户交互程序;
        2.接口制定增删改查规则,创建三家单车子公司类继承父类,父类作为实现类去实现接口(因本案例             三家公司增删改查方法一致,所以只需父类重写方法,其他三家公司直接用父类方法即可);
        3.难点已在注视标出;

一.接口
package com.edu.java.pdfexercise.sharebike;
//接口  具备对单车的操作功能只能是公司
//接口 具备 对单车进行CRUD操作的功能
public interface ShareBikeDao {
    //投放的单车数量
    void addBike(int bikeNum);
    //根据id操作单车对象
    void removeBike(int bikeId);
    void queryBike();
    void borrowBike(int bikeId);
    void backBike(int bikeId);
    
}
二.公司类
package com.edu.java.pdfexercise.sharebike;

import java.util.Arrays;
import java.util.Date;

//父类:公司类
public abstract class SharedBikeCompany implements ShareBikeDao {
    private int CompanyId;// 公司id
    private String bikeName;// ofo 哈罗 摩拜
    private ShareBike[] shareBikes;// 公司持有共享单车的最大容量[取决于中括号的数字]
    private int sum;//公司真正拥有单车总量
    private int count;// 公司单车借出次数
    private int bikeIndex = 1;//为了生成单车的id


    public SharedBikeCompany() {
    }

    public SharedBikeCompany(int CompanyId, String bikeName, ShareBike[] shareBikes, int sum, int count) {
        this.CompanyId = CompanyId;
        this.bikeName = bikeName;
        this.shareBikes = shareBikes;
        this.sum = sum;
        this.count = count;
    }

    @Override

    public void addBike(int bikeNum) {
        //判断数组扩容(第二次投放的时候可能索引越界)
        if ((sum + bikeNum) > shareBikes.length) {
            System.out.println("需要扩容,开始扩容");
            shareBikes = Arrays.copyOf(shareBikes, (shareBikes.length + bikeNum) * 2);
            System.out.println("扩容后的数组长度:" + shareBikes.length);

        }
        //单车遍历难点:单车id唯一性;数组元素的索引值用sum
        for (int i = 0; i < bikeNum; i++) {
            shareBikes[sum] = new ShareBike(bikeIndex++, 1, null);
            sum++;
        }
        System.out.println("投放成功");
    }

    @Override
    public void removeBike(int bikeId) {
        for (int i = 0; i <sum ; i++) {
            ShareBike shareBike =shareBikes[i];
            if (bikeId==shareBike.getId()){
                //开始进行删除,元素一定
                for (int j = i; j <sum-1; j++) {
                    shareBikes[j]=shareBikes[j+1];
                }
                sum--;
                //将最后一个元素置为null
                 shareBikes[sum]=null;
                System.out.println("删除成功");
                return;
            }
        }
        System.out.println("没有此id:" + bikeId + ",对应的单车,请重新录入");
    }

    @Override
    public void queryBike() {

    }

    @Override
    public void borrowBike(int bikeId) {
        //根据id找到单车对象
        for (int i = 0; i < sum; i++) {
            ShareBike shareBike = shareBikes
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值