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.

#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;
}

0 Responses to “C++ Aggregation Assocation”


Comments are currently closed.