#if !defined MODULE_H
#define MODULE_H
#include <iostream>
using namespace std;
class Module {
public:
Module();
Module(const char* description, const char* vendor, int type, int category, int units);
virtual ~Module();
Module(const Module& obj);
Module& operator= (const Module& obj);
void SetDescription(const char* description);
const char* GetDescription() const;
void SetVendor(const char* v);
const char* GetVendor() const;
void SetType(int type);
int GetTypeID() const;
virtual const char* GetType() const = 0;
void SetCategory(int category);
int GetCategoryID() const;
virtual const char* GetCategory() const = 0;
void SetUnits(int u);
int GetUnits() const;
void SetSupportMetric(int m);
int GetSupportMetric() const;
protected:
virtual void ComputeSupportMetric() = 0;
private:
string description;
string vendor;
int type;
int category;
int units;
int supportMetric;
friend ostream& operator<< (ostream&, const Module&);
};
#endif