Guest User

Untitled

a guest
Jun 18th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. class Document
  7. {
  8. public:
  9. virtual ~Document() { }
  10. virtual string text() const = 0;
  11. virtual void edit() = 0;
  12. };
  13.  
  14. class Document;
  15. class Editor
  16. {
  17. public:
  18. Editor() { }
  19.  
  20. void edit(Document* D)
  21. {
  22. cout << D->text() << endl;
  23. D->edit();
  24. cout << D->text() << endl;
  25. }
  26. };
  27.  
  28. class RealDocument : public Document
  29. {
  30. public:
  31. RealDocument(string t): Text(t) {
  32. }
  33.  
  34. string text() const { return Text; }
  35. void edit() { Text = "Gewijzigd"; }
  36. private:
  37. string Text;
  38. };
  39.  
  40. class Document;
  41. class DocumentProxy : public Document
  42. {
  43. public:
  44. DocumentProxy(Document *D, string p): RD(D), password(p)
  45. {
  46.  
  47. }
  48.  
  49. virtual string text() const {
  50. return RD->text();
  51. }
  52.  
  53. virtual void edit() {
  54. string p;
  55. cout << "Password: ";
  56. cin >> p;
  57.  
  58. if (p == password) RD->edit();
  59. else cout << "Geen toegang!" << endl;
  60. }
  61. private:
  62. Document * RD;
  63. string password;
  64. };
  65.  
  66. int main(void)
  67. {
  68. do {
  69. RealDocument *RD = new RealDocument("eerste text");
  70. DocumentProxy *DP = new DocumentProxy(RD, "geheim");
  71.  
  72. Editor *E = new Editor();
  73. E->edit(DP);
  74.  
  75. cin.get();
  76. cin.get();
  77. } while(true);
  78.  
  79. return 0;
  80. }
Add Comment
Please, Sign In to add comment