Part 2:Bug Variations - 2015年软件工程实训 - SoYa Wiki1

preview
需积分: 0 0 下载量 87 浏览量 更新于2022-08-03 收藏 468KB PDF 举报
在本篇关于“Bug Variations”的2015年软件工程实训内容中,我们主要讨论了Bug类及其扩展,以及观察这些行为的“runner”类。以下是对标题和描述中涉及知识点的详细说明: 1. **Bug类的方法**: Bug类提供了三个关键方法来定义虫子如何移动和转向: - `canMove()`:该方法检查虫子是否能够向前移动到一个空位置或包含花朵的位置。 - `move()`:如果虫子可以移动,它会前进并将一朵花放在它原来所在的位置。 - `turn()`:虫子向右转45度,但不改变其当前位置。这些方法在`act()`方法中被调用。 2. **虫子的行为**: 虫子的行为由其`act()`方法控制,如果虫子可以移动,它将执行`move()`;否则,执行`turn()`。 3. **BoxBug类**: - **sideLength实例变量**:这个变量通常用于表示BoxBug形成的正方形模式的边长。它决定了BoxBug在移动时形成的方块大小。 - **steps实例变量**:这个变量跟踪BoxBug当前的步数或移动次数。当BoxBug完成一个完整的边长移动后,它与sideLength的关系会影响到`turn()`方法的调用。 4. **turn方法的调用**: 当`steps`等于`sideLength`时,`turn()`方法被调用两次,这是因为BoxBug需要完成90度的转弯,以便开始绘制正方形的下一个边。 5. **move方法的继承**: BoxBug类虽然没有自己的`move()`方法,但它继承了父类Bug的`move()`方法,因此可以直接调用,以执行虫子的移动行为。 6. **BoxBug的模式大小**: 一个BoxBug构造完成后,其正方形模式的大小是否会保持一致取决于`sideLength`的初始值。如果sideLength不变,则模式大小保持不变;如果sideLength在运行时可变,则模式大小也会变化。 7. **steps为零的情况**: `steps`的值会在BoxBug开始移动之前或每次完成一个正方形的绘制后变为零。 8. **Runner类**: Runner类如BugRunner和BoxBugRunner是观察actor行为的关键。它们创建了一个ActorWorld对象,将演员(如Bug、BoxBug、Rock等类的实例)放入网格中,并展示世界的状态。`add`方法的重载使得可以将不同类型的actor添加到网格中。 这些知识点涵盖了基础的面向对象编程概念,如类的方法、继承和实例变量,以及如何通过runner类来模拟和观察对象的行为。在实际的软件工程实训中,理解并应用这些知识点有助于开发出更加复杂和动态的程序。