跳转至

《高级程序设计-6写一个程序》复习精要⚓︎

约 803 个字 预计阅读时间 4 分钟

一、 开发程序的三大步骤 (The Three Stages)⚓︎

在编写正式代码前,必须经过严谨的设计过程。

  1. Prep Code (伪代码):专注于逻辑,忽略语法。描述“要做什么”,而不是“怎么做”。
  2. Test Code (测试代码):用于验证真实代码是否能完成预期的功能。
  3. Real Code (真实 Java 代码):类的最终实现。

二、 测试驱动开发 (TDD - Test Driven Development)⚓︎

  • 核心逻辑:在写功能代码之前,先写测试代码。除非测试失败,否则不增加新功能。
  • TDD 的优势
  • 强迫开发者以“调用者”的视角思考。
  • 促使接口设计更简洁,代码与环境解耦。
  • 测试代码本身就是一份“永不撒谎”的文档。
  • XP (极限编程) 要点
  • 频繁发布小版本。
  • 结对编程 (Pair Programming)。
  • 随时重构,保持简单。
  • 不添加规格之外的多余功能。

三、 案例:SimpleDotCom 类设计⚓︎

这是游戏的简化版(一维数组),需要关注其关键逻辑:

  1. 实例变量locationCells (int 数组存储位置)、numOfHits (记录命中次数)。
  2. 核心方法 checkYourself(String stringGuess): - 将 String 转换为 int。 - 循环遍历位置数组。 - 命中逻辑:如果匹配,命中数加 1;如果命中数等于数组长度,返回 "Sunk";否则返回 "Hit"。 - 缺陷/改进:PPT 提到如果用户重复输入同一个命中坐标,会重复计数导致逻辑错误。改进方案是使用 boolean 数组标记或使用 ArrayList 移除已命中的元素。

四、 核心数据结构:Array vs. ArrayList (重难点)⚓︎

这是考试最容易考细节对比的地方。

特性 传统数组 (Array) ArrayList
大小 创建时必须确定大小,不可变。 动态调整大小,可自动扩缩。
存取方式 使用索引 [i] 使用方法调用:add(), get(), remove()
类型限制 可存基本类型和对象。 只能存对象(基本类型需自动装箱)。
位置确定 必须指明具体位置存放。 简单地通过 add(Object) 顺序添加。
定位元素 需手动循环遍历查找。 内置 indexOf() 方法直接获取索引。

ArrayList 常用方法清单:⚓︎

  • add(element): 添加元素。
  • remove(index/object): 删除元素。
  • indexOf(object): 返回元素索引,不存在则返回 -1。
  • isEmpty(): 判断是否为空。
  • size(): 获取当前元素个数。

五、 Java API 与包 (Packages)⚓︎

  1. Java 库组织:类被包装在包 (Package) 中。
  2. 使用方式: - import java.util.ArrayList; (必须显式导入)。 - 或者使用全名:java.util.ArrayList list = new java.util.ArrayList();
  3. 特殊包java.lang 包是默认自动导入的(如 System, String),除此之外的所有 API 类都需要 import。
  4. 查阅 API:考试可能会考察如何通过文档了解一个类具备的功能。

复习建议 (5天冲刺)⚓︎

  1. 第1-2天:手写一遍 ArrayList 的常用方法和 SimpleDotComcheckYourself 逻辑(尤其是循环和条件判断)。
  2. 第3天:理解 TDD 的哲学,记背 XP 的几个关键词。
  3. 第4天:对比 Array 和 ArrayList 的细微差别(考试可能考选择或判断)。
  4. 第5天:查漏补缺,模拟写一个简单的 GameHelper 类获取用户输入。