Commit 9c736f

2026-06-11 08:22:12 lisa: Tool 2: add VCAA object description table for Student, CriterionGrade as exercise Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
sd/C05/From SRS to Detailed Designs - Data and Logic.md ..
@@ 114,6 114,24 @@
So the data dictionary's "stored vs derived" split is the object model's "attribute vs method" split. `final` carries `()` nowhere — it is a value you keep. `calculated()` carries `()` — it is a value you *compute on demand* and throw away.
+#### The same class as an object description table
+
+A class diagram is the *drawn* form. The **object description** is the written form VCAA asks for, and its layout is slightly different — a small table, one per object, with three rows:
+
+> An object description is used to design an object to be used within a software module. Object descriptions include the name of the object, a list of the required attributes/properties (data) and a list of the required methods (behaviours) that are required to maximise the potential future use of the object. The data type of each property/attribute may or may not be listed with the property/attribute. Where required, parameters should be included in the description of methods.
+
+Here is `Student` — the same class you just read as a UML box — written as an object description:
+
+| | |
+| ---------------------- | ----------------------------------------------------------------------------------- |
+| Name | Student |
+| Properties/ Attributes | name (string) <br><br>comment (string) <br><br>advice (string) |
+| Methods | criterion_result(cid) <br><br>total1() <br><br>total2() <br><br>total() |
+
+Same information, different costume: the UML box's upper compartment became the **Properties/Attributes** row, the lower compartment became the **Methods** row. Notice the conventions at work — every property lists its data type in brackets (optional, but do it), and `criterion_result(cid)` includes its parameter because the method needs one.
+
+> **Your design log:** write the object description table for `CriterionGrade` from its UML box above. It has seven properties and three methods — and when you list `calculated()` in the Methods row, you have restated "computed, never stored" in a third costume.
+
### Tool 3 — Pseudocode: how the derived value is actually computed
The data dictionary says a calculated score *is* derived. The object model says `calculated()` is a method. The pseudocode says **how**. Algorithm 1 derives it, hop by hop, for Cohen's C03 (`[8, 7]`, weights `[60, 40]`):
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9