跳转到正文
← 返回学习板块
Java 实习自学 · 设备运维工单平台

第 01 课 工单对象与封装

从两个普通Java类开始,分三步练习对象、封装、构造器和参数校验。

完整学习目录 · 14 篇
本篇目录

这节课开始做设备运维工单平台,为你以 2028 届学生身份申请 2027 年暑期 Java 实习积累项目能力。我们先把一张工单变成 Java 对象,再逐步加入业务规则。

全课预计60—90分钟,可以分两次完成。首次先完成起点问题和 A 步,再继续 B、C;先自己尝试,卡住时记录具体疑问。

先确认三个概念 #

用约10分钟回答,不用背术语。暂时答不清可以带着问题完成本课。

  1. 把成绩字段设为 private 后,是否就能自动阻止构造器保存 101?为什么?
  2. 构造器与修改成绩的方法,为什么都需要检查 0—100 的范围?
  3. 创建两个不同对象时,普通实例字段为什么可以保存不同的值?如果把字段改成 static,情况会怎样?

自查提示:private 限制从哪里访问,数据合法性依靠校验逻辑;每个对象拥有自己的实例字段,而静态字段属于类。能口述后,还要通过下面的代码实验验证。

工单表示什么 #

例如“教室投影仪无法开机”是一条报修。以后它会经历报修、派单、处理、验收。今天的 Ticket 只保存两个信息:id 是工单编号,title 是问题标题。

本课最终规则是:编号必须大于 0;标题不能是 null,去掉两端空格后不能为空,长度不能超过 50;编号创建后不提供修改入口,标题可以通过 rename 修改。

在自己选择的工作目录创建或打开 ops-ticket 普通 Java 项目,在其中创建 src\Ticket.java 和 src\TicketDemo.java:前者描述工单,后者放 main 方法运行小例子。先用普通 Java 项目,不需要 Spring 或 Maven。

本课语法兼容 Java 8 和 21。第3周学习 Maven 时统一使用 Java 21,并核对项目 SDK 与终端实际使用的 JDK。

A 步 创建对象并读取信息 #

预计 25–35 分钟。先实现正常输入的流程,边界校验放到 B 步。

请在 Ticket 中完成:

  • 两个私有字段,类型分别为 long 和 String。
  • 构造器 Ticket(long id, String title),把参数保存到当前对象。
  • getId() 和 getTitle(),读取当前对象的信息。
  • 不提供 setId()。

在 TicketDemo 中创建两张不同工单,并通过 getter 打印它们。

创建时的输入读取时的预期结果
1001, "教室投影仪无法开机"编号为 1001,标题为 教室投影仪无法开机
1002, "实验室电脑无法联网"编号为 1002,标题为 实验室电脑无法联网;第一张工单信息不变

局部提示:字段使用 private,getter 使用 public 并返回对应字段。当参数名与字段名相同时,想一想 this 指向什么。构造器名称与类名一致,没有返回类型。

验收时请解释:为什么创建两张工单后,第一张的标题不会被第二张覆盖?为什么读取标题的方法不应该使用 static?

B 步 保证创建出来的工单有效 #

预计 15–20 分钟,A 步通过后再做。加入编号和标题校验,不合法时抛出 IllegalArgumentException;合法标题保存去掉两端空格后的值。

输入预期结果
编号 0 或 -1,标题正常拒绝创建
编号 1,标题为 null、"" 或 " "拒绝创建
编号 1,标题为 " 无法联网 "保存的标题为 无法联网
编号 1,标题为连续 50 个英文字母创建成功
编号 1,标题为连续 51 个英文字母拒绝创建

局部提示:先判断是否为 null,再考虑调用 trim()、isEmpty()、length()。当条件不满足时,用 throw new IllegalArgumentException("说明原因") 拒绝非法参数。

本课长度按 String.length() 计算;它不等同于所有 Unicode 字符的实际个数,表情等情况留待后续。测试边界时用英文字母即可。非法输入可先逐次运行验证;未捕获异常会结束本次程序,这是需要观察的结果。

C 步 修改标题时遵守同一套规则 #

预计 10–15 分钟。增加 rename(String newTitle),让它与构造器复用标题校验,避免两处规则逐渐不同。

操作预期结果
将标题改为 " 投影仪无信号 "新标题为 投影仪无信号,编号保持不变
将标题改为空白或超过 50 个英文字母拒绝修改,原编号和标题不变

局部提示:可以把“检查标题并得到处理后的标题”提取成一个私有方法。先得到合法结果,再修改字段。思考如果先改字段再检查,失败时对象会处于什么状态。

保存哪些学习证据 #

首次保存三个起点问题的回答、A 步的两个 Java 文件和运行输出,并用一句话写出最不确定的地方。B、C 可以在下一次学习时完成。

完成本课后,按第1周任务与验收检查边界,再核对第1周参考答案。笔记区分“独立完成”“参考提示完成”“仍有疑问”;能解释并独立小改之后,再记录已掌握。

← 浏览全部课程回到顶部 ↑