Examine creating "has-a" relationship by making the
safe array class a member of another class.
Now that we have created a safe array, let's use our
class vect
as a member of the
class pair_vect
.
Using a
class
as a member of another
class
is known as the
has-a relationship. Complicated objects can be designed from simpler ones by incorporating them with the
has-a relationship.
#include "vect.h" //the safe array class
//from the previous lesson
class pair_vect {
public:
pair_vect(int i) : a(i), b(i), size(i){ }
int& first_element(int i);
int& second_element(int i);
int ub()const {return size -1;}
private:
vect a, b;
int size;
};
int& pair_vect::first_element(int i){
return a.element(i);
}
int& pair_vect::second_element(int i)
{ return b.element(i);}
Notice how the
pair_vect
constructor is a series of initializers. The initializers of the
vect
members
a
and
b
invoke
vect::vect(int)
. Let's use the
pair_vect class
to build a table of age and weight relationships.
int main()
{
int i;
pair_vect age_weight(5); //age and weight
cout << "table of age, weight\n";
for (i = 0; i <= age_weight.ub(); ++i) {
age_weight.first_element(i) = 21 + i;
age_weight.second_element(i) = 135 + i;
cout << age_weight.first_element(i) << ","
<< age_weight.second_element(i)<< endl;
}
}