Software Development Methodology> Guidelines for new implementations >  Reference file

Release Information

Project: Siconos
Internal Release Number: 1.0
Last update: September 15, 2005
Related Documents:


next up previous

Reference files

As an example, the preceding remarks are summarized in the following header and cpp files


  • Header file:

// ========================== BASE CLASS
==========================
#ifndef CLASS_NAME_H
#define CLASS_NAME_H

// include ...

class BaseClassName

{
public:

// -- CONSTRUCTORS --

// From XML
BaseClass(DSXML dsXML);

// From a minimum set of data
BaseClass(typeObject A, typeObject * B);

// -- DESTRUCTOR --
virtual ~BaseClass();

// -- GETTERS AND SETTERS --

// get sizeB
inline const int getSizeB() const { return sizeB;}

// assign newValue to sizeB
inline void setSizeB(const int& newValue) { sizeB = newValue; }

// get the value of objectMemberB
inline const Type getObjectMemberB() const { return *objectMemberB; }

// get the pointer
inline Type* getObjectMemberBPtr() const { return objectMemberB; }

// set the value of the pointed object
inline void setObjectMemberB(const Type& newValue) { *objectMemberB = newValue; }

// set the pointer
inline void setObjectMemberBPtr(Type newPtr)
 { if(isObjectMemberBAllocatedIn) delete objectMemberB; objectMemberB = newPtr; isObjectMemberBAllocatedIn=false;}

//...

/// -- OTHER FUNCTIONS --
// able to change data members
returnType func1(...) ;

// which is not supposed to modify data members
returnType func2() const ;

// which can not modify input arguments
returnType func3(const typeInput& inputArg);

// with return argument that can not be modified => can not be set as an lValue
const returnType func4();

// and combinations of these previous cases ...

// -- PRIVATE/PROTECTED MEMBERS --

protected:

//- Default constructor -
BaseClass();

// - data members -
typeObject ObjectMemberA ;

TypeObject* ObjectMemberB;

bool isObjectMemberBAllocatedIn;

int sizeB;

//...

};

#endif

// =================== DERIVED CLASS  =============================/

// warning !! Implemented in a different file !!

#ifndef DERIVED_CLASS_NAME_H
#define DERIVED_CLASS_NAME_H

// include ...

class DerivedClassName: public BaseClassName
{
public:

// -- CONSTRUCTORS --
// From XML
DerivedClass(DSXML dsXML);
//From a minimum set of data
DerivedClass(typeObject A, typeObject B);
//-- DESTRUCTOR --
~DerivedClass();

// -- GETTERS AND SETTERS --
//...

//-- OTHER FUNCTIONS --
//...

//-- PRIVATE/PROTECTED MEMBERS --

protected:

//- Default constructor -
DerivedClass();

//- data members -
typeObject* ObjectMemberC ;

int sizeC;
bool isObjectMemberBAllocatedIn;
...

};

#endif

  • cpp file:
//============================== BASE CLASS ==================================//

include ...
// -- CONSTRUCTORS --

// From XML
BaseClass::BaseClass(DSXML *dsXML): objectMemberA(initValue), sizeB(0), objectMemberB(NULL), isObjectMemberBAllocatedIn(false)
{
// xml data loading
sizeB = ...;
//...
//Memory allocation
objectMemberB = new typeObject(sizeB) ;
isObjectMemberBAllocatedIn = true;
}

// From a minimum set of data
BaseClass::BaseClass(typeObject A, typeObject* B, int size):objectMemberA(A), sizeB(size), objectMemberB(NULL),isObjectMemberBAllocatedIn(false)
{
// Memory allocation
objectMemberB = new typeObject(B) ;  // copy constructor
isObjectMemberBAllocatedIn = true;
...
}

// -- DESTRUCTOR --
BaseClass::~BaseClass()
{
if (isObjectMemberBAllocatedIn)  delete objectMemberB;
objectMemberB=NULL;
}

// -- Default constructor --
BaseClass::BaseClass(): objectMemberA(0), sizeB(0), objectMemberB(NULL),isObjectMemberBAllocatedIn(false)
{}

  // ======================== DERIVED CLASS  =================================//

// warning !! Implemented in a different file !!
// include ...
//-- CONSTRUCTORS --

// From XML
DerivedClass::DerivedClass(DSXML dsXML): BaseClass(dsXML), objectMemberC(NULL),sizeC(0), isObjectMemberCAllocatedIn(false)
{
//xml data loading
sizeC= ...;
//...
// Memory allocation
objectMemberC = new typeObject(sizeC) ;
isObjectMemberCAllocatedIn = true;
}

From a minimum set of data
DerivedClass::DerivedClass(typeObject C, typeObject A, typeObject B, int size): BaseClass(A,B,size), objectMemberC(NULL), sizeC(size),
                                                                                                                                               isObjectMemberCAllocatedIn(false)
{
objectMemberC = new typeObject(C) ;
isObjectMemberCAllocatedIn = true;
...
}

// -- DESTRUCTOR --
DerivedClass::~DerivedClass()
{
if(isObjectMemberCAllocatedIn) delete objectMemberC;
objectMemberC=NULL;
 // Warning: do not delete baseClass members, the base destructor is automatically called.
}

// ...

//-- Default constructor --
DerivedClass::DerivedClass(): BaseClass(), objectMemberC(NULL),sizeC(0), isObjectMemberCAllocatedIn(false)
{}



next up previous