In the Desktop Swing application, there is the Item class in the Data package, the ItemFrame class (graphically filling and editing the Item class) in the GUI package, and the NetWorker class in the NetDB package for working with DB and network. The names of classes and packages are conditional.
According to the program logic, when creating (and editing) an instance of the Item class, a graphical interface ItemFrame into which data is entered, when you click the Save button, an Item object is created that should be written to the DB and, under certain conditions, methods should be called to transfer it over the network and write to XML.
It turns out that when the button is pressed, the Item constructor from another package is called, and the methods for working with DB and the network from the third one are called. Looks a bit confusing. How, in this case, to properly organize the structure, in which class which methods are best implemented?
The correct decision interests from the point of view of OOP.