Algorithm-VSM

 view release on metacpan or  search on metacpan

examples/corpus_with_java_and_cpp/RepeatInherit.cc  view on Meta::CPAN

        cout << "Years in job: " << yearsExperience << endl;
        cout << "People skill: " << PeopleSkills[ (int) pSkill ] 
             << endl;
        cout << "Leadership quality: " 
             << LeaderQualities[ (int) leadership ]  << endl;
    }
    virtual ~Employee(){}
};

///////////////////////////  class Manager  ///////////////////////////
class Manager : virtual public Employee {                         //(A)
    Department dept;     // note same name as dept in Employee
                         // but different meaning.  Here it is dept 
                         // supervised and not department worked in
protected:
    bool employeeSatisfaction;
    int yearsInManagement;
public:
    Manager( string name,
             string address,
             EducationLevel education,
             Department aDept )
        :    Employee( name, address, education ), 
             dept( aDept ),
             yearsInManagement( 0 ),
             employeeSatisfaction( false ) {}
    // Since senior-level managers do not belong to any particular
    // department, the next constructor is actually for them
    Manager( string name,
             string address,
             EducationLevel education )
        :    Employee( name, address, education ) {}
    virtual double productivityGainYtoY() {                       //(B)
        int lastProd = dept.getProductionLastYear();
        int prevProd = dept.getProductionPreviousYear();
        return 100 * ( lastProd - prevProd ) / (double) prevProd;
    }
    void setDepartment( Department dept ){ this->dept = dept; }
    int getYearsInManagement() { return yearsInManagement; }
    void setYearsInManagement( int y ) { yearsInManagement = y; }
    bool getEmployeeSatisfaction() { return employeeSatisfaction; }
    void setEmployeeSatisfaction( bool satis ) { 
        employeeSatisfaction = satis; 
    }
    virtual bool readyForPromotion(){
        return ( ( yearsInManagement 
                       >= MinYearsForPromotion ) ? true : false )
                 && ( productivityGainYtoY() > 10 ) 
                 && employeeSatisfaction;
    }
    void print() { Employee::print(); dept.print(); }
    ~Manager(){}
};

//////////////////////  class ExecutiveManager  ///////////////////////
// An ExecutiveManager supervises more than one department
class ExecutiveManager : public Manager {
    short level;
    vector<Department> departments;    // depts in charge of
public:
    // no-arg const. needed in the second example for type conversion
    // from Manager to ExecutiveManager:
    ExecutiveManager() 
        :       Manager( "", "", eUnknown ), 
                Employee( "", "", eUnknown ),                     //(C)
                level( 0 ) {}
    ExecutiveManager( string name, 
                      string address, 
                      EducationLevel education,
                      short level )
              :       Manager( name, address, education ), 
                      Employee( name, address, education ),       //(D)
                      level( level )
    {
        departments = vector<Department>();
    }
    void addDepartment(Department dept){departments.push_back( dept );}
    void setLevel( int lvl ) { level = lvl; }
    // overrides Manager's productivityGainYtoY():
    double productivityGainYtoY() {                               //(E)
        double gain = 0.0;
        vector<Department>::iterator iter = departments.begin();
        while ( iter != departments.end() ) {
            int lastProd = iter->getProductionLastYear();
            int prevProd = iter->getProductionPreviousYear();
            gain += ( lastProd - prevProd ) / prevProd;
        }
        return gain/departments.size();
    }
    void print() {
        Employee::print();
        cout << "Departments supervised: " << endl;
        vector<Department>::iterator iter = departments.begin();
        while ( iter != departments.end() ) 
            iter++->print();
    }
    ~ExecutiveManager(){}
};

/////////////////////////  class SalesPerson  /////////////////////////
class SalesPerson : virtual public Employee {                     //(F)
    int salesLastYear;
    int salesPreviousYear;
protected:
    int yearsInSales;
public:
    SalesPerson( string name,
                 string address,
                 EducationLevel education )
        :        Employee( name, 
                           address, 
                           education, 
                           Department( "Sales" )),
                 salesLastYear( 0 ),
                 salesPreviousYear( 0 ),
                 yearsInSales( 0 ) {}
    int getSalesLastYear() {
        return salesLastYear;
    }
    void setSalesLastYear( int sales ) {
        salesLastYear = sales;



( run in 0.557 second using v1.01-cache-2.11-cpan-39bf76dae61 )