Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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