Цитата(mes @ 18.6.2009, 21:32 ) | | а нельзя ли пояснения к этому ? |
я это так представляю: main.cpp
| Код | #include "Composition.h" #include "IdDateCompositor.h" #include "IdPasswordTime.h" #include "LoginTimeCompositor.h" #include "user_info.h"
int main() { user_info user[3] = { {1, "ivan", "pass33", 15}, {2, "zina", "kakad3", 19}, {3, "zhora", "dlsfd", 33} }; Composition *id_date = new Composition(new IdDateCompositor); bool isEq = id_date->Compare(user[0], user[1]);
Composition *id_password_time = new Composition(new IdPasswordTime); isEq = id_password_time->Compare(user[1], user[2]);
Composition *login_time = new Composition(new LoginTimeCompositor); isEq = login_time->Compare(user[0], user[2]);
return 0; }
|
LoginTimeCompositor.h
| Код | #ifndef _LOGINTIME_COMPOSITOR_H_ #define _LOGINTIME_COMPOSITOR_H_
class LoginTimeCompositor : public Compositor { public: LoginTimeCompositor() {}
virtual bool Equal(user_info &lhs, user_info &rhs) { return (lhs.login == rhs.login && lhs.time == rhs.time); } }; #endif // _LOGINTIME_COMPOSITOR_H_
|
Composition.h
| Код | #ifndef _COMPOSITION_H_ #define _COMPOSITION_H_
class Compositor; struct user_info;
class Composition { public: Composition(Compositor *ptr) : _compositor(ptr) {} bool Compare(user_info&, user_info&); private: Compositor *_compositor; };
#endif // _COMPOSITION_H_
|
Compositor.h
| Код | #ifndef _COMPOSITOR_H_ #define _COMPOSITOR_H_
class Compositor { public: virtual bool Equal(user_info &lhs, user_info &rhs) = 0; protected: Compositor(){} };
#endif // _COMPOSITOR_H_
|
IdDateCompositor.h
| Код | #ifndef _IDDATE_COMPOSITOR_H_ #define _IDDATE_COMPOSITOR_H_
#include "Compositor.h" #include "user_info.h"
class IdDateCompositor : public Compositor { public: IdDateCompositor(){}
virtual bool Equal(user_info &lhs, user_info &rhs) { return (lhs.user_id == rhs.user_id && lhs.time == rhs.time); } };
#endif // _IDDATE_COMPOSITOR_H_
|
IdPasswordTime.h
| Код | #ifndef _IDPASSWORDTIMECOMPOSITOR_H_ #define _IDPASSWORDTIMECOMPOSITOR_H_
class IdPasswordTime : public Compositor { public: IdPasswordTime() {} virtual bool Equal(user_info &lhs, user_info &rhs) { return (lhs.user_id == rhs.user_id && lhs.password == rhs.password && lhs.time == rhs.time); } };
#endif // _IDPASSWORDTIMECOMPOSITOR_H_
|
user_info.h
| Код | #ifndef _USER_INFO_H #define _USER_INFO_H
struct user_info { int user_id; char *login; char *password; int time; }; #endif // _USER_INFO_H
|
Composition.cpp
| Код | #include "Composition.h" #include "Compositor.h"
bool Composition::Compare(user_info &lhs, user_info &rhs) { return _compositor->Equal(lhs, rhs); }
|
|