Tools.h++ Manual

21-142 104011 Tandem Computers Incorporated
21
RWModel
Synopsis
#include <rw/model.h>
(abstract base class)
Description This abstract base class has been designed to implement the “Model” leg of a
Model-View-Controller architecture. A companion class,
RWModelClient
,
supplies the “View” leg.
It maintains a list of dependent RWModelClient objects. When member
function
changed(void*)
is called, the list of dependents will be traversed,
calling
updateFrom(RWModel*, void*)
for each one, with itself as the first
argument. Classes subclassing off
RWModelClient
should be prepared to
accept such a call.
Example This is an incomplete and somewhat contrived example in that it does not
completely define the classes involved. "Dial" is assumed to be a graphical
representation of the internal settings of "Thermostat". The essential point is
that there is a dependency relationship between the "Thermostat" and the
"Dial": when the setting of the thermostat is changed, the dial must be notified
so that it can update itself to reflect the new setting of the thermostat.
Code Example 21-4
#include <rw/model.h>
class Dial : public RWModelClient {
public:
virtual void updateFrom(RWModel* m, void d);
};
class Thermostat : public RWModel {
double setting;
public:
Thermostat( Dial* d )
{ addDependent(d); }
double temperature() const
{ return setting; }