This is a cool article, written with the best of intentions no doubt, that might help less experienced coders learn more familiarity with hand coding.
But I am interested to know what the object of the exercise would be, other than perhaps presenting an abstract challenge to coders.
Am I right in interpreting the exercise as writing lower level code, to generate higher level classes?
In the case of larger Systems, it would be the role of a Systems Architect, or Systems Engineer, to define object classes using UML or SysML, having derived those models directly from stakeholder requirements (“The system specification”), by process known in Systems Engineering as “Model Based Design”.
Those are then converted to code by hand coding, or perhaps automatically generated.
In other words, in a system designed to meet high level stakeholder requirements, the classes would be derived “Top downwards”, directly from the system requirements, otherwise there is a high chance that the Stakeholder requirements are not met, instead offering functionality not required by the Stakeholders, thus the System would be unfit for purpose.
The process is described further here:
Or am I missing something?