In this project, my main aim was to deepen my knowledge of class hierarchy in C++ and to automate the creation of documentation using Doxygen. The project encompasses a variety of object models, such as Animal, Mammal, and Cat. Currently, the animal farm has an array-based database of cats, where each attribute is stored in an array. Additionally, there’s another array-based database where each cat’s attributes are encapsulated in a struct. Furthermore, there’s a procedural singly linked-list database of cats, where each cat is treated as an object. Lastly, there’s a collection class that implements a singly linked database of Animal objects.
Some example of the object in Animal Farm :
class classCat : public classMammal {
protected:
///// Protected Attributes /////
string name ;
bool isCatFixed = false ;
///// Protected Attributes /////
public:
///// Static Public Attributes /////
static const string SPECIES_NAME ;
static const classWeight::t_weight MAX_WEIGHT ;
///// Static Public Attributes /////
public:
///// Constructor /////
classCat( const string &NewName ) ;
classCat( const string &NewName,
const Color newColor,
const bool newIsFixed,
const Gender newGender,
const classWeight::t_weight newWeight ) ;
///// Constructor /////
public:
///// Getters /////
string getName() const noexcept ;
bool isFixed() const noexcept ;
///// Getters /////
///// Setters /////
void setName ( const string &NewName ) ;
void fixCat () noexcept ;
///// Setters /////
public:
///// Static Public Member Function /////
static bool validateName( const string &NewName ) ;
///// Static Public Member Function /////
public:
///// Validation & Print /////
string speak () const noexcept override ;
void print () const noexcept override ;
bool validate () const noexcept override ;
///// Validation & Print /////
public:
///// Debug Print /////
void debugPrint() const noexcept override ;
///// Debug Print /////
};