Podatke i program je nemoguce zastitii. Dokaz za to su ti razne zastite, koje neki znalci razbijaju.
public, private i protected su izmisljeni da bi olaksali planiranje i programiranje. Kada pravis neku klasu, postavi se u ulogu nekoga ko tu klasu treba da koristi i dizajniraj njen interface tako da bude sto laksa za upotrebu. Samim tim, potencijalni korisnik nece pokusati da procita nesto sto si ti stavio kao protected ili private.
dodatak:
Sad sam pogledao tvoj site i video projekat wood. Mislim da sam skapirao sta u stari zelis, a to je da jedan igrac ne moze da pristupi podacima koje drugi igrac ima. Resenje je da sakrijes implementaciju od interface-a, tj. da napravi pure virtual klasu (interface) a da zatim izvedes i napravis implementaciju. Ukratko:
Code:
class IPlayer
{
public:
IPlayer(){};
virtual ~IPlayer(){};
virtual int Metoda1(IPlayer* p) = 0;
virtual void Metoda2(int param1) = 0;
...
} ;
Zatim negde napravi implementaciju:
Code:
class PlayerV1: public IPlayer
{
public:
Player();
virtual ~Player();
// implementacija metoda interface-a
virtual int Metoda1(IPlayer* p);
virtual void Metoda2(int param1);
private:
// promenljive koje implementacija koristi u svom radu.
};
napravi isto i za class PlayerV2, PlayerV3,...a zatim:
Code:
IPlayer* p1 = new PlayerV1;
IPlayer* p2 = new PlayerV2;
IPlayer* p3 = new PlayerV3;
Ako sada napises
Code:
p1->Metoda1(p3);
funkcija
PlayerV1::Metoda1 nema sansi da sazna koja se implementacija nalazi iza parametra p (osim ako se ne koristi RTTI), kao sto ne moze da sazna ni koliko se bajtova nalazi u private ili protected delu.
yooyo
[Ovu poruku je menjao yooyo dana 07.12.2005. u 00:57 GMT+1]
[Sadowed: obrisan nepotreban citat.]
[Ovu poruku je menjao Shadowed dana 07.12.2005. u 07:45 GMT+1]