Answer:
c. Using public member functions to access and manipulate the data members
Step-by-step explanation:
In object oriented programming, abstraction is used in order to lessen the complexity and hiding non essential details about how a program is actually working in the background. In order to achieve abstraction, classes are defined in such a way that the data members are hidden and the member functions form public interface. The public member functions here are used to access and manipulate these hidden or private data members. So the use of public member functions shows the abstraction here. These members functions are public so they can be directly accessed and the hidden or private data members can be accessed indirectly with the help of these member functions. So internal details of the classes and its data members are hidden from the outside world. Thus abstraction used here ensures security of data members of two classes and protects them from any accidental alterations by other parts of program.