Sei sulla pagina 1di 20

#include <iostream.

h>
class A
}
public:
A() {cout<<"A1"<<endl{;
A(const A& a){cout<<"A2"<<endl;}
virtual ~A() {cout<<"A3"<<endl;}
void f(){cout<<"A4"<<endl;}
virtual void g(){h(); cout<<"A5"<<endl;}
virtual void h(){cout<<"A6"<<endl;}
};
class D
{
public:
D(){cout<<"D1"<<endl;}
~D(){cout<<"D2"<<endl;}
};
class B: public A
{

public:
D d;
B() {cout<<"B1"<<endl;}
B(const B& b){cout<<"B2"<<endl;}
~B() {cout<<"B3"<<endl;}
void f() {cout<<"B4"<<endl;}
void h() {cout<<"B5"<<endl;}
virtual void i(){cout<<"B6"<<endl;}
};
class C: public B
{
public:
B b;
A a;
C() {cout<<"C1"<<endl;}
virtual ~C() {cout<<"C2"<<endl;}
void f(){cout<<"C3"<<endl;}
virtual void h(){cout<<"C4"<<endl;}
void i(){cout<<"C5"<<endl;}
B j(){cout<<"C6"<<endl; return b;}
{;
void main()
}
//part A.1
A *ptrAtoB = new B();
//Part A.2
B *ptrBtoC = new C();
//Part B.1
ptrAtoB->h();
//Part B.2
ptrBtoC->h();
//Part C.1
ptrAtoB->f();
//Part C.2
ptrBtoC->f();
//Part D
ptrAtoB->g();
//Part E.1
delete ptrBtoC;
//Part E.2
delete ptrAtoB;
{

D class VTABLE

C class VTABLE
C::~C()
C::h()
C::i()
A::g()

B class VTABLE
B::h()
B::i()
A::g()
B::~B()

//----------------------// Part A:
//-----------------------

A1

A1

D1
B1
A1
D1
B1
A1
C1

D1
B1

//----------------------// Part B:
//-----------------------

C4

B5

A class VTABLE
A::~A()
A::g()
A::h()

//----------------------// Part C:
//-----------------------

B4

A4

//----------------------// Part D:
//-----------------------

B5
A5

//----------------------// Part E:
//-----------------------

B3
D2
A3

C2
A3
B3
D2
A3
B3
D2
A3

Digit.h

class Digit
{
int digit;
public:
// Cosntructors
Digit ();
Digit (int x);
Digit (const Digit& other);
// Set and get methods
int get_digit ()const;
int set_digit (int x)const;
// Operators
??
};

main.cpp
# include "Digit.h"
int main()
{
Digit a1, *a2, *a3, a4;

1.
a4 /= a1;
2.
a4 *= 9;
3.
a3 = a2;
4.
cout<<a1;
5.
a3++;
6.
a4 = 1+ (*a2);
7.
a1 = *a2;
8.
cout<<(a4 + 3);
9.
a2 += 5;
10.
a1 *= *a3;
11.
int i1 = (int) a3;
12.
cout<< (6 + a3);
}

1.
2.
3.
4.
5.
13.

Digit operator (const Digit& other) const;


Digit operator (int other) const;
friend Digit operator (const Digit & a1, const Digit & a2);
friend Digit operator (int a1, const Digit & a2);
friend Digit operator (const Digit & a1, int a2);
a1 = a4 7;

TheClock.Go();
return 0;
}

Observer.h
#ifndef _OBSERVER_H
#define _OBSERVER_H
class Subject;
class Observer
{
public:
Observer(Subject& rSubject);
virtual ~Observer(){}
virtual void NotificationFromSubject(const Subject& rSubject)=0;
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
};
class TimerViewDigital : public Observer
{
const char* m_timerName;
int m_wakeUpTime;
public:
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

};
#endif //_OBSERVER_H

Subject.h
#ifndef _SUBJECT_H
#define _SUBJECT_H
#include <windows.h>
#include <list>
using namespace std;
class Observer;
class Subject
{
list<Observer*> m_observers;
public:
Subject() {}
vtual ~Subject() {}
int AddObserver(Observer* pObs);
int RemoveObserver(Observer* pObs);
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
protected:
void NotifyObservers();
};
class Clock : public Subject
{
private:
int m_numOfTicks;
public:
Clock():m_numOfTicks(0) {}
virtual ~Clock() {}
void Go() {
while(1)
{
// sleep for 1 second (1000 msec) and then continue
Sleep(1000);
++(*this);
}
}
int WhatTime() const { return m_numOfTicks;}
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
};
extern Clock theClock; // create global object named theClock
#endif //_SUBJECT_H

Potrebbero piacerti anche