Classes

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 view:


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 forward.

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:
/usr/share/doc/KlassModeler/quickstart.kml
and in the "Header File:" field you enter "MyHeader.h" then the header will be generated at:
/usr/share/doc/KlassModeler/MyHeader.h

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 generated.

That's all there is to the class. The next few sections will take a closer look at the member objects within the class.