Rogue Wave banner
Previous fileContentsIndexNext file
Click on the banner to return to the class reference home page.

RWModel

Data Type and Member Function Indexes
(exclusive of constructors and destructors)

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. Subclasses of RWModelClient should be prepared to accept such a call.

Persistence

None

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.

#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; }
  void setTemperature(double t)
    { setting = t; changed(); }
};
void Dial::updateFrom(RWModel* m, void*) {
  Thermostat* t = (Thermostat*)m;
  double temp = t->temperature();
  // Redraw graphic.
}
 

Public Constructor

RWModel();

Public Member Functions

void
addDependent(RWModelClient* m);
void
removeDependent(RWModelClient* m);
virtual void
changed(void* d);


Previous fileContentsIndexNext file

©Copyright 1997, Rogue Wave Software, Inc.
Send mail to report errors or comment on the documentation.