Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- class Document
- {
- public:
- virtual ~Document() { }
- virtual string text() const = 0;
- virtual void edit() = 0;
- };
- class Document;
- class Editor
- {
- public:
- Editor() { }
- void edit(Document* D)
- {
- cout << D->text() << endl;
- D->edit();
- cout << D->text() << endl;
- }
- };
- class RealDocument : public Document
- {
- public:
- RealDocument(string t): Text(t) {
- }
- string text() const { return Text; }
- void edit() { Text = "Gewijzigd"; }
- private:
- string Text;
- };
- class Document;
- class DocumentProxy : public Document
- {
- public:
- DocumentProxy(Document *D, string p): RD(D), password(p)
- {
- }
- virtual string text() const {
- return RD->text();
- }
- virtual void edit() {
- string p;
- cout << "Password: ";
- cin >> p;
- if (p == password) RD->edit();
- else cout << "Geen toegang!" << endl;
- }
- private:
- Document * RD;
- string password;
- };
- int main(void)
- {
- do {
- RealDocument *RD = new RealDocument("eerste text");
- DocumentProxy *DP = new DocumentProxy(RD, "geheim");
- Editor *E = new Editor();
- E->edit(DP);
- cin.get();
- cin.get();
- } while(true);
- return 0;
- }
Add Comment
Please, Sign In to add comment