《高级程序设计-6写一个程序》复习精要⚓︎
约 803 个字 预计阅读时间 4 分钟
一、 开发程序的三大步骤 (The Three Stages)⚓︎
在编写正式代码前,必须经过严谨的设计过程。
- Prep Code (伪代码):专注于逻辑,忽略语法。描述“要做什么”,而不是“怎么做”。
- Test Code (测试代码):用于验证真实代码是否能完成预期的功能。
- Real Code (真实 Java 代码):类的最终实现。
二、 测试驱动开发 (TDD - Test Driven Development)⚓︎
- 核心逻辑:在写功能代码之前,先写测试代码。除非测试失败,否则不增加新功能。
- TDD 的优势:
- 强迫开发者以“调用者”的视角思考。
- 促使接口设计更简洁,代码与环境解耦。
- 测试代码本身就是一份“永不撒谎”的文档。
- XP (极限编程) 要点:
- 频繁发布小版本。
- 结对编程 (Pair Programming)。
- 随时重构,保持简单。
- 不添加规格之外的多余功能。
三、 案例:SimpleDotCom 类设计⚓︎
这是游戏的简化版(一维数组),需要关注其关键逻辑:
- 实例变量:
locationCells(int 数组存储位置)、numOfHits(记录命中次数)。 - 核心方法
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)⚓︎
- Java 库组织:类被包装在包 (Package) 中。
- 使用方式:
-
import java.util.ArrayList;(必须显式导入)。 - 或者使用全名:java.util.ArrayList list = new java.util.ArrayList();。 - 特殊包:
java.lang包是默认自动导入的(如System,String),除此之外的所有 API 类都需要 import。 - 查阅 API:考试可能会考察如何通过文档了解一个类具备的功能。
复习建议 (5天冲刺)⚓︎
- 第1-2天:手写一遍
ArrayList的常用方法和SimpleDotCom的checkYourself逻辑(尤其是循环和条件判断)。 - 第3天:理解 TDD 的哲学,记背 XP 的几个关键词。
- 第4天:对比 Array 和 ArrayList 的细微差别(考试可能考选择或判断)。
- 第5天:查漏补缺,模拟写一个简单的
GameHelper类获取用户输入。