Classes are pretty much the most important part of a class model, so
I'll go into depth on what you can do with them here. There are two
ways in which to look at a class. The first is through the model
view, which looks like this:
This view is meant to give you a look at all of the classes in your
model, and give you a sense of how they interact. From here you can
right click on the public/protected/private fields to quickly create
and organize methods, variables, and anything else (more on these
later). You can move them around simply by dragging and dropping.
Also note that you can drag and drop members between different
classes. You can also move your class around in the model, and resize
it to help fit it in and make it easier to work with. When you are
done with this you can bring up the other view of classes, the dialog
From here you have access to everything within your class. Just as on
the model view, you can right click in the tree to create new methods
and variables, etc, but unlike the model view you can also edit these
things. We'll look at the specifics of the members later, for now
let's look at the three tabs associated with a class. We're currently
on the Main tab. From here you can change the name of the class and
write in some documentation. You can also have this class be written
as a struct with the "is a struct" check box.
These should seem pretty straight
The next tab is the Inheritence tab:
The box on top shows you all of the parent classes for this class.
Internally there are 2 kinds of inheritence, Internal and External.
Internal inheritence is when you inherit from a class that is in this
model. From this example we can see that the Dog class inherits from
the Animal class, which is also in the model. With External
inheritence, the class inherits from a class that is not shown in the
model, in this case the boost::noncopyable class. This is important
only so that the KlassModeler can keep track of whether or not it
needs to draw inheritence lines in the model or not. You can add
either type of inheritence by simply clicking on the Add button. When
you select a parent you can go ahead and fill in the documentation to
help explain why you are including it.
The final tab in the class notebook is the Misc tab.
This tab contains information about the header and HTML files that will
be generated for this class.
The first field is for the header file.
It's important to note where this file
will be placed. If you fill in a full path then the header will be
written exactly where you want it. If you specify a partial path then
the header will be placed relative to the .kml model file. So for
example if the quickstart.kml model file is saved in:
and in the "Header File:" field you enter "MyHeader.h" then the header
will be generated at:
The second field is for the HTML file. HTML file generation requires
a structure to where the files are placed, so it's not as open to
letting you fill in paths. When HTML files are generated they are
put in an HTMLDocs path next to the kml file. The path you specify
in this field is a path under the HTMLDocs directory.
The checkboxes let you exclude the header or HTML file from full model
generation. On the main model view page of the KlassModeler there's an
option to generate all headers or all HTML files. If these boxes are
checked then the header and HTML file for this object will not be
That's all there is to the class. The next few sections will take a
closer look at the member objects within the class.