I am relatively new to Java and am having trouble coming up with a truly object oriented design for a program I am working on. Here is a background to the program. The program is a gui based computer telephony application that monitors a phone and acts as a callerID (among other things). My current design is as follows. I have created the following classes.
MainWindow-this is the main window of the gui
Phone-this models the actual device
PopUpWindow-this models the pop up window that pops up on an event in the Phone class
PhoneMessenger-this sends a message to another device when an event happens in the phone class
The part I am having trouble with is that when an event happens in the Phone class I want it to update a value in the MainWindow class. I have the program working by constructing a static class variable MainWindow window in the MainWindow class and using static methods to change the values of the MainWindow class upon events in the Phone class. It works fine but I don't think this follows object oriented design principles as the Phone class now has access to all of the internal values of the MainWindow class. If someone could help me out with the design that would be amazing.