I hate UML as a phenomenon, as an entity, as a product. In real life, I have not seen a single developer who would have designed something worthwhile on UML. UML is a cool tool if you need to push a poor student ** or fill up too much junior for an interview. Here is a hike, just the very case when the teacher decided to fill up the student :)
In real life, the agile approach works: when a construction is built in my head, a working layout is written based on this construction, then the construction is modified, then the layout is created again, modified again, and so on. When a construction becomes more or less sane, the UML design is already written and reported to the wise leadership, which UML primitives begin to rule with a clever look :)
In the end, everyone is happy and everyone laughs: the developer has a working prototype, a guide to the UML scheme, which is already implemented.
I suppose that here we have to go the same way: to begin the implementation of "tic-tac-toe" at the level of a common prototype with plugs instead of real steps and rendering. Then shift the resulting classes to the UML diagrams.
Update
And tell me how then to distribute a complex structure so that it is visually and conveniently? It is for yourself not to report?
Agile to help you: Any normal Java IDE makes it easy to write classes. Write classes immediately (that is, entities), without methods, but with fields. When classes are drawn, it will be more or less clear what to do with the methods. Then it turns out that either there are many classes, or there are not enough of them, you are iterating. After a couple of iterations, everything will become clear. If the iterations are more than 3-4, then you have not yet understood the task - sit, have coffee, smoke, meditate, and again on the new one. When it clears up with methods, you can begin to abstract - enter interfaces, abstract classes, all sorts of patterns, and so on.
Где мне хранить информацию о выигранных партиях- the task does not say that it needs to be stored between the launches of the application. Just so you can store in a variable. Keep it simple) - Nick Volynkin ♦