title: What is the proper way to approach a program structured with an "outside control"?
body: <p>Consider a program structured essentially like this:</p>
  
  <p><img src="https://i.stack.imgur.com/Pk0XR.png" alt="Structure Diagram"></p>
  
  <p>ClassA, B, and C fit together logically in a parent/child relationship, and they never expose their private properties. The program would make perfect sense (and would compile and run) with just these three components. However, in order for the program to be particularly useful, the user needs to have the ability to change all of the properties while the program is running, hence the "control" object, which could be a Windows Form for example. The control should be seen as a sort of phantom: it should have the ability to alter properties, but as far as the rest of the program is concerned, it doesn't exist. The problem is, I am not aware of way to do this without changing the fundamental structure of the main program (essentially making all the properties public).</p>
  
  <p>So my question is really on a general programming level: is there a name for this kind of structure, and if so how is it accomplished? If not, is there a better approach to what I'm trying to do?</p>
  
  <p>Edit: Since the solution may depend on the language, assume that the core program is completely cross-platform c++, and the control is some type of GUI programmed for any specific platform.</p>