You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java公交票务系统代码中应用OOP封装特性

Java公交票务系统引入封装的实现方案

1. 优先确定需要封装的核心业务类

公交票务系统中常见的可封装类包括Ticket(车票)、BusRoute(公交线路)、Passenger(乘客)三类,你可以先从现有代码中抽取出这几类的属性,优先做封装改造。

2. 封装的标准实现逻辑

封装的核心规则是类的属性私有化,仅通过公开方法对外提供访问/修改入口,你可以直接在对应的业务类中替换原有逻辑即可,不需要额外找特殊插入位置。
以下是车票类的封装示例:

public class Ticket {
    // 第一步:所有属性用private修饰,禁止外部直接访问修改
    private String ticketId;
    private String routeName;
    private double price;
    private boolean isUsed;
    private long buyTime;

    // 第二步:提供公开构造方法,初始化时自动做参数校验,避免生成非法对象
    public Ticket(String ticketId, String routeName, double price) {
        this.ticketId = ticketId;
        this.routeName = routeName;
        if (price < 0) {
            throw new IllegalArgumentException("票价不能为负数");
        }
        this.price = price;
        this.isUsed = false;
        this.buyTime = System.currentTimeMillis();
    }

    // 第三步:仅对外提供必要的get/set方法,生成后不可修改的属性不要加set方法
    public String getTicketId() {
        return ticketId;
    }

    public String getRouteName() {
        return routeName;
    }

    public double getPrice() {
        return price;
    }

    public boolean isUsed() {
        return isUsed;
    }

    public long getBuyTime() {
        return buyTime;
    }

    // 车票状态变更逻辑封装在类内部,外部无需关心实现细节直接调用即可
    public void useTicket() {
        if (this.isUsed) {
            throw new IllegalStateException("该车票已使用,不可重复检票");
        }
        this.isUsed = true;
    }
}

3. 原有业务代码的适配修改

原来你可能写的是Ticket t = new Ticket(); t.price = -5;这类直接操作属性的代码,现在替换为调用封装好的方法即可:

public class TicketDemo {
    public static void main(String[] args) {
        // 初始化时自动校验票价合法性
        Ticket ticket = new Ticket("T2024001", "12路环线", 2.0);
        // 检票直接调用封装好的方法,内部自动做重复使用校验
        ticket.useTicket();
        System.out.println("车票使用状态:" + ticket.isUsed());
    }
}

4. 封装逻辑的插入位置说明

  • 所有业务类的属性定义部分,直接把原来的public修饰符改成private
  • 在类内部补充对应属性的get/set方法和业务逻辑方法,生成后不可修改的属性不要提供set方法(比如车票ID、购买时间这类字段)
  • 把原来散在各处的属性校验、状态修改逻辑都挪到对应类的内部方法中,外部只需要调用方法即可完成操作

注意:不需要一次性改造所有代码,可以先从核心的车票、线路类开始改造,逐步替换原有逻辑即可。

内容的提问来源于stack exchange,提问作者Ruben Sandique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 06:09:03