Saying that $cmc "contains" the checkbox multiple choice object is not quite true.
Actually $cmc is a scalar variable which contains a pointer to
the checkbox multiple choice object, but you can think of the checkbox multiple choice
object as being shoe horned into the variable $cmc.
You need to remember that $cmc contains (a pointer to)
an object, and not ordinary data such as a number or string.
Some people use the convention $o_cmc to remind them that
the variable contains an object.
An object contains both data (in this case the list of
questions and answers) and subroutines (called methods)
for manipulating that data.
The construction $cmc->qa(..one question and a list of the answers..)
Asks the object $cmc to store the question and answers given in the argument
in its private data.
The construction $cmc->extra(..list of incorrect answers)
Asks the object $cmc to store several incorrect answers as possible correct
answers for the student to choose from.
$out = $ml->print_q() asks the object to store a string of the formatted question in the variable $out.
$out = $ml->print_a() asks the object to store a string of the formatted answers in the variable $out.