C++ Aggregation Assocation

Hello all. I created the program at the bottom as a test as I was having problems with Aggregation Assocation in my assignment. The program below has the person class that we created in the last post but now it also has a new link class with two functions. The first function sets the pointer to the person, the second increases the person’s age by one. You can see that I have commented out the orginal command that sets the person’s age.

A pointer is a link to the RAM address of something else, in this case a instance of the person class. You access a pointer’s public functions / variables by the -> symbol. So pointer->setValue(newValue) would run the setValue function of what the pointer is connected too.

A Aggregation Assocation is a connection between two classes that do not own one another. For example a pet belongs to it’s owner but a student does not belong to a school as student and school are both independant entities that are connected.

This is something I did quickly and thought I’d stick online so if you have any questions leave a comment and I’ll get back to you.

[source language=”cpp”]#include <iostream>
#include <string>

using namespace std;

class person
{
private:
int age;
string name;

public:
// Constructors
person();
person(string newName, int newAge);

// Accessors
string getName() { return name; };
int getAge() { return age; };
// datatype getVariable() { return variable; };

// Mutators
void setName(string newName);
void setAge(int newAge);
// void setVariable(datatype newVariable);

};

person::person()
{
name = "Stranger";
age = 100;
}

person::person(string newName, int newAge)
{
name = newName;
age = newAge;
}

void person::setName(string newName)
{
name = newName;
}

void person::setAge(int newAge)
{
age = newAge;
}

///////////////////////////////////////////////////
class pointerClass
{
private:
person *link; // pointer to a person

public:
void setLink(person * newLink); // set the pointer to a person you’ve created
void incAge(); // increase their age by one

};

// set the pointer to a person you’ve created
void pointerClass::setLink(person * newLink)
{
link = newLink;
}

// Increse their age by one.
void pointerClass::incAge()
{
int temp = link->getAge(); //get Age
// cout << "temp: " << temp << endl; // output orginal age
link->setAge(++temp); // inc and set new age.
// cout << "temp: " << temp << endl; // output new age
}

///////////////////////////////////////////////////
int main()
{
pointerClass myLink;
person steve("Steve", 20);
myLink.setLink(&steve);
cout << steve.getAge() << endl;
// steve.setAge(21);
myLink.incAge();
cout << steve.getAge() << endl;
}[/source]

Leave a Reply