# 12. Glossary | Term | Definition | |------|-----------| | **Plateau** | The rectangular grid on Mars within which rovers operate. Defined by its upper-right corner `(width, height)`; the lower-left corner is always `(0, 0)`. | | **Rover** | An autonomous vehicle deployed on the plateau. Holds a position `(x, y)` and a heading. Processes commands one at a time. | | **Position** | A coordinate pair `(x, y)` on the plateau grid. `x` increases eastward; `y` increases northward. | | **Heading** | The cardinal direction a rover is facing: `N` (North), `E` (East), `S` (South), or `W` (West). | | **Command** | A single instruction sent to a rover. Valid values: `L` (turn left 90°), `R` (turn right 90°), `M` (move one step forward in the current heading direction). | | **Command String** | A sequence of commands for a single rover, e.g. `LMLMLMLMM`. | | **Turn Left (L)** | Rotate the rover 90° counter-clockwise without moving. `N → W → S → E → N`. | | **Turn Right (R)** | Rotate the rover 90° clockwise without moving. `N → E → S → W → N`. | | **Move Forward (M)** | Advance the rover one grid step in its current heading direction. Ignored if the move would leave the plateau. | | **Safe-Stop** | The behaviour where a rover ignores a move command that would take it outside the plateau (or into an obstacle), remaining at its current position. | | **Obstacle** | *(Optional extension)* A cell on the plateau that a rover cannot enter. Triggers a safe-stop before the blocked cell. | | **Mission** | The complete execution of all command strings for all rovers on a given plateau. | | **Operator** | The human (or system) that provides the plateau definition, rover starting positions, and command strings. | | **InputParser** | The adapter component responsible for converting raw stdin text into domain objects (`Plateau`, `Rover`, `Command` list). | | **OutputFormatter** | The adapter component responsible for converting final `Rover` state into the `x y HEADING` output string. | | **MissionController** | The application-layer component that orchestrates a mission — iterating over rovers and applying their command sequences. | | **Hexagonal Architecture** | An architectural style (also called Ports & Adapters) that isolates the domain from I/O by placing all external concerns in adapter classes. | | **ADR** | Architecture Decision Record — a short document capturing a significant design decision, its context, and its consequences. | | **arc42** | A lightweight, pragmatic template for software architecture documentation with 12 standardised chapters. | | **C4 Model** | A hierarchical diagramming approach (Context → Container → Component → Code) for visualising software architecture. | | **PlantUML** | A text-based diagramming tool used to author C4 diagrams in this project. |