summaryrefslogtreecommitdiffstats
path: root/Bachelor/Prog1/examples/ch07/Fig07_20_23
diff options
context:
space:
mode:
Diffstat (limited to 'Bachelor/Prog1/examples/ch07/Fig07_20_23')
-rw-r--r--Bachelor/Prog1/examples/ch07/Fig07_20_23/fig07_23.cpp39
-rw-r--r--Bachelor/Prog1/examples/ch07/Fig07_20_23/implementation.h48
-rw-r--r--Bachelor/Prog1/examples/ch07/Fig07_20_23/interface.cpp48
-rw-r--r--Bachelor/Prog1/examples/ch07/Fig07_20_23/interface.h34
4 files changed, 169 insertions, 0 deletions
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 <iostream>
+
+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. *
+ *************************************************************************/