The Object Model

In our example, the object model includes companies that take part in projects. A company is composed of several departments, each employing a number of people who contribute to the projects. Each department has a manager. A manager is a specific kind of employee. Employees, employee contributions and projects have a cost, which is calculated as follows:

  • Cost of an employee = monthly salary of the employee x the number of months spent on all projects

  • Cost of a contribution = monthly salary of the employee x the number of months spent on the contribution

  • Cost of a project = sum of the contribution costs

The object model can be coded as follows:

class Company: public IlsEntity

{

public:

IlsUsesList<Company,Project> projects;

IlsOwnsList<Company,Department> departments;

};

 

class Department: public IlsObject

{

public:

IlsEntry<IlsString> name;

IlsOwnsList<Department,Employee> employees;

IlsUses<Departement,Manager> manager;

IlsInvertedRelation<Department,Company> company;

};

 

 

class Employee: public IlsObject

{

public:

IlsEntry<IlsString> name;

IlsEntry<int> monthCost;

IlsDerived<Employee,int,NbMonthsEvaluator> nbMonths;

IlsDerived<Employee,int,CostEvaluator> cost;

IlsInvertedRelation<Employee,Department> department;

IlsInvertedRelationList<Employee,Contribution> contributions;

};

class Manager: public Employee

{

};

 

class Project: public IlsEntity

{

public:

IlsOwnsList<Project,Contribution> contributions;

IlsInvertedRelationList<Project,Company> companies;

IlsDerived<Project,int,CostEvaluator> cost;

};

 

class Contribution: public IlsObject

{

public:

IlsUses<Contribution,Employee> employee;

IlsInvertedRelation<Contribution,Project> project;

IlsEntry<int> nbMonths;

IlsDerived<Contribution,int,CostEvaluator> cost;

};

Figure 7.1 shows the class diagram of this object model.

The Company Object Model in IBM Rational Rose Modeler

Figure 7.2 illustrates an instance of the model.

An Instance of the Company Object Model