In my previous post about this personal C++ project, I described why I had chosen table and seating organisation as the problem I wanted to work on. The next question was more fundamental: what are the objects? It is tempting when developing a desktop application to start with the visible parts. Create the main window. Add a guest list. Add a table editor. Put some buttons around them. Connect a few signals and slots, and very quickly there is something on the screen that looks like progress. I am deliberately trying not to begin there. Before concentrating on the screens, I want a reasonably coherent model of the problem itself. The user interface should eventually manipulate that model; it should not accidentally become the model. My first architectural objective is simple: model an event as a collection of meaningful domain objects before allowing the graphical interface to dictate how those objects behave. Starting with the domain rather than the...