6.6. Encapsulation and generalization

Encapsulation usually means taking a piece of code and wrapping it up in a function, allowing you to take advantage of all the things functions are good for. We have seen two examples of encapsulation, when we wrote printParity in Section 4.3 and isSingleDigit in Section 5.8.

Generalization means taking something specific, like printing multiples of 2, and making it more general, like printing the multiples of any integer.

Here’s a function that encapsulates the loop from the previous section and generalizes it to print multiples of n.

void printMultiples (int n) {
  int i = 1;
  while (i <= 6) {
    cout << n * i << "   ";
    i = i + 1;
  }
  cout << endl;
}

To encapsulate, all I had to do was add the first line, which declares the name, parameter, and return type. To generalize, all I had to do was replace the value 2 with the parameter n.

If we call this function with the argument 2, we get the same output as before. With argument 3, the output is:

3   6   9   12   15   18

and with argument 4, the output is

4   8   12   16   20   24

By now you can probably guess how we are going to print a multiplication table: we’ll call printMultiples repeatedly with different arguments. In fact, we are going to use another loop to iterate through the rows.

int i = 1;
while (i <= 6) {
  printMultiples (i);
  i = i + 1;
}

First of all, notice how similar this loop is to the one inside printMultiples. All I did was replace the print statement with a function call.

Try running the active code below, which uses printMultiples.

The output of this program is

1   2   3   4   5   6
2   4   6   8   10   12
3   6   9   12   15   18
4   8   12   16   20   24
5   10   15   20   25   30
6   12   18   24   30   36

which is a (slightly sloppy) multiplication table. If the sloppiness bothers you, you can also use tab characters, like below.

The active code below uses tab characters to make the table neater.

Create a function called powersOfTwo which prints out a table with the powers of two up to \(2^{5}\).

Now let’s generalize the function to print out the powers of a parameter n up to \(n^{5}\). Create a function called powersOfn which takes an int n as a parameter.

You have attempted of activities on this page