From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../Prog1/examples/ch07/Fig07_20_23/fig07_23.cpp | 39 ++++++++++++++++++ .../examples/ch07/Fig07_20_23/implementation.h | 48 ++++++++++++++++++++++ .../Prog1/examples/ch07/Fig07_20_23/interface.cpp | 48 ++++++++++++++++++++++ .../Prog1/examples/ch07/Fig07_20_23/interface.h | 34 +++++++++++++++ 4 files changed, 169 insertions(+) create mode 100644 Bachelor/Prog1/examples/ch07/Fig07_20_23/fig07_23.cpp create mode 100644 Bachelor/Prog1/examples/ch07/Fig07_20_23/implementation.h create mode 100644 Bachelor/Prog1/examples/ch07/Fig07_20_23/interface.cpp create mode 100644 Bachelor/Prog1/examples/ch07/Fig07_20_23/interface.h (limited to 'Bachelor/Prog1/examples/ch07/Fig07_20_23') diff --git a/Bachelor/Prog1/examples/ch07/Fig07_20_23/fig07_23.cpp b/Bachelor/Prog1/examples/ch07/Fig07_20_23/fig07_23.cpp new file mode 100644 index 0000000..a11a543 --- /dev/null +++ b/Bachelor/Prog1/examples/ch07/Fig07_20_23/fig07_23.cpp @@ -0,0 +1,39 @@ +// Fig. 7.23: fig07_23.cpp +// Hiding a class’s private data with a proxy class. +#include + +using std::cout; +using std::endl; + +#include "interface.h" // Interface class definition + +int main() +{ + Interface i( 5 ); + + cout << "Interface contains: " << i.getValue() + << " before setValue" << endl; + + i.setValue( 10 ); + + cout << "Interface contains: " << i.getValue() + << " after setValue" << endl; + + return 0; + +} // end main + +/************************************************************************** + * (C) Copyright 1992-2003 by Deitel & Associates, Inc. and Prentice * + * Hall. All Rights Reserved. * + * * + * DISCLAIMER: The authors and publisher of this book have used their * + * best efforts in preparing the book. These efforts include the * + * development, research, and testing of the theories and programs * + * to determine their effectiveness. The authors and publisher make * + * no warranty of any kind, expressed or implied, with regard to these * + * programs or to the documentation contained in these books. The authors * + * and publisher shall not be liable in any event for incidental or * + * consequential damages in connection with, or arising out of, the * + * furnishing, performance, or use of these programs. * + *************************************************************************/ diff --git a/Bachelor/Prog1/examples/ch07/Fig07_20_23/implementation.h b/Bachelor/Prog1/examples/ch07/Fig07_20_23/implementation.h new file mode 100644 index 0000000..1630a50 --- /dev/null +++ b/Bachelor/Prog1/examples/ch07/Fig07_20_23/implementation.h @@ -0,0 +1,48 @@ +// Fig. 7.20: implementation.h +// Header file for class Implementation + +class Implementation { + +public: + + // constructor + Implementation( int v ) + : value( v ) // initialize value with v + { + // empty body + + } // end constructor Implementation + + // set value to v + void setValue( int v ) + { + value = v; // should validate v + + } // end function setValue + + // return value + int getValue() const + { + return value; + + } // end function getValue + +private: + int value; + +}; // end class Implementation + +/************************************************************************** + * (C) Copyright 1992-2003 by Deitel & Associates, Inc. and Prentice * + * Hall. All Rights Reserved. * + * * + * DISCLAIMER: The authors and publisher of this book have used their * + * best efforts in preparing the book. These efforts include the * + * development, research, and testing of the theories and programs * + * to determine their effectiveness. The authors and publisher make * + * no warranty of any kind, expressed or implied, with regard to these * + * programs or to the documentation contained in these books. The authors * + * and publisher shall not be liable in any event for incidental or * + * consequential damages in connection with, or arising out of, the * + * furnishing, performance, or use of these programs. * + *************************************************************************/ diff --git a/Bachelor/Prog1/examples/ch07/Fig07_20_23/interface.cpp b/Bachelor/Prog1/examples/ch07/Fig07_20_23/interface.cpp new file mode 100644 index 0000000..0f895fd --- /dev/null +++ b/Bachelor/Prog1/examples/ch07/Fig07_20_23/interface.cpp @@ -0,0 +1,48 @@ +// Fig. 7.22: interface.cpp +// Definition of class Interface +#include "interface.h" // Interface class definition +#include "implementation.h" // Implementation class definition + +// constructor +Interface::Interface( int v ) + : ptr ( new Implementation( v ) ) // initialize ptr +{ + // empty body + +} // end Interface constructor + +// call Implementation's setValue function +void Interface::setValue( int v ) +{ + ptr->setValue( v ); + +} // end function setValue + +// call Implementation's getValue function +int Interface::getValue() const +{ + return ptr->getValue(); + +} // end function getValue + +// destructor +Interface::~Interface() +{ + delete ptr; + +} // end ~Interface destructor + +/************************************************************************** + * (C) Copyright 1992-2003 by Deitel & Associates, Inc. and Prentice * + * Hall. All Rights Reserved. * + * * + * DISCLAIMER: The authors and publisher of this book have used their * + * best efforts in preparing the book. These efforts include the * + * development, research, and testing of the theories and programs * + * to determine their effectiveness. The authors and publisher make * + * no warranty of any kind, expressed or implied, with regard to these * + * programs or to the documentation contained in these books. The authors * + * and publisher shall not be liable in any event for incidental or * + * consequential damages in connection with, or arising out of, the * + * furnishing, performance, or use of these programs. * + *************************************************************************/ diff --git a/Bachelor/Prog1/examples/ch07/Fig07_20_23/interface.h b/Bachelor/Prog1/examples/ch07/Fig07_20_23/interface.h new file mode 100644 index 0000000..5d229e1 --- /dev/null +++ b/Bachelor/Prog1/examples/ch07/Fig07_20_23/interface.h @@ -0,0 +1,34 @@ +// Fig. 7.21: interface.h +// Header file for interface.cpp + +class Implementation; // forward class declaration + +class Interface { + +public: + Interface( int ); + void setValue( int ); // same public interface as + int getValue() const; // class Implementation + ~Interface(); + +private: + + // requires previous forward declaration (line 4) + Implementation *ptr; + +}; // end class Interface + +/************************************************************************** + * (C) Copyright 1992-2003 by Deitel & Associates, Inc. and Prentice * + * Hall. All Rights Reserved. * + * * + * DISCLAIMER: The authors and publisher of this book have used their * + * best efforts in preparing the book. These efforts include the * + * development, research, and testing of the theories and programs * + * to determine their effectiveness. The authors and publisher make * + * no warranty of any kind, expressed or implied, with regard to these * + * programs or to the documentation contained in these books. The authors * + * and publisher shall not be liable in any event for incidental or * + * consequential damages in connection with, or arising out of, the * + * furnishing, performance, or use of these programs. * + *************************************************************************/ -- cgit v1.2.3