Statički razred

poruka: 6
|
čitano: 4.244
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Statički razred

Bok ljudi!

Ajmo odmah na stvar. Dali bih mogao napravit razred koji je nešto kao bezimena unija. Dakle ima jedan objekt razreda i to je to. Isti rezultat bi se dobio da se svi funkc. članovi i podaktovni članovi učine statičkim, pa da ih se dohvaća sa ime_razreda::funkcija()/ime_razreda::broj. Jasno je zašto ovo ne ide...

Ovo bi bilo korisno u npr nekom menageru, gdje bi bilo besmisleno   deklarirati objekt kad treba samo jedan. Moglo bi se napraviti i globalni objekt razreda, ali mislim da mora postojati neko elegantnije rješenje. Ima takvo nešto?

Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Statički razred

struct
{
public:
    int metoda() { return clan; }
private:
    int clan;
} nesto;

Moj PC  
0 0 hvala 0
16 godina
odjavljen
offline
Re: Statički razred

Koji k ti je razred? Klasa? Ako je klasa, u kojem programskom jeziku? C# podržava static klasu: http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.80).aspx

Druga opcija ti je singleton: http://en.wikipedia.org/wiki/Singleton_pattern

 

Static klasa je na prvu jednostavnija za shvatiti i implementirati, ali singleton je u skladu s OO pristupom, a s njim radiš kao sa svakim instanciranim objektom.

Big wheel keep on turning, Proud Mary keep on burning, Trolling, trolling, trolling on the river.
15 godina
neaktivan
offline
Re: Statički razred
DigiMagic kaže...

struct
{
public:
      int metoda() { return clan; }
private:
      int clan;
} nesto;

 

Um, treba mi za rezred, ne strukture.

MrBlc kaže...

Koji k ti je razred? Klasa? Ako je klasa, u kojem programskom jeziku? C# podržava static klasu: http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.80).aspx

Druga opcija ti je singleton: http://en.wikipedia.org/wiki/Singleton_pattern

 

Static klasa je na prvu jednostavnija za shvatiti i implementirati, ali singleton je u skladu s OO pristupom, a s njim radiš kao sa svakim instanciranim objektom.

 

Pa klasa/razred, šta nije isto? Koristim C++. Ne kužim šta je ovaj singleton

 

 

EDIT:

Evo skužio sam.

Samo treba napisati:

class {

//kod

} ime_objekta;

Kao i za uniju, i za strukture... Čudno da to ne spominju u demistificiranom c++

Poruka je uređivana zadnji put čet 31.3.2011 20:55 (King of Games).
16 godina
odjavljen
offline
Re: Statički razred
King of Games kaže...

Pa klasa/razred, šta nije isto? Koristim C++. Ne kužim šta je ovaj singleton

Razred mi zvuči kao prijevod korištenjm google translatora.

 

Singleton ti je patern koji se koristi kada je potrebno osigurati da klasa ima samo jednu instancu. Nisam baš nešto konkretno radio u C++ ali ne bi trebalo biti previše razlike. Sigleton klasa izgleda oprilike ovako:

 

class SingletonPrimjer

{

   //fieldovi koji ti trebaju u klasi

   private static SingletonPrimjer _singletonPrimjer;

 

 

   private SingletonPrimjer()

   {

      //Ako se nešto treba obaviti u konstruktoru tu ide

   }

 

   //metode koje ti trebaju u klasi

 

   public static getSingletonPrimjer()

   {

       if (_singletonPrimjer == null)

         _singletonPrimjer = new SingletonPrimjer();

      return _singletonPrimjer;

   }

}

 

Kao što možeš vidjeti, konstruktor je private, pa ako izvan klase pozoveš:

SingletonPrimjer x = new SingletonPrimjer();

dobiti ćeš grešku jer ne možeš pristupiti konstruktoru. Kada trebaš pristupiti toj klasi pozivaš:

SingletonPrimjer x = getSingletonPrimjer();

Što se daljnjeg korištenja tiće, tebi je x objekt klase SingletonPrimjer i koristiš ga kao takvog. Jedina razlika koju imaš je što postoji samo jedna instanca klase SingletonPrimjer.

Big wheel keep on turning, Proud Mary keep on burning, Trolling, trolling, trolling on the river.
15 godina
neaktivan
offline
Re: Statički razred
MrBlc kaže...
King of Games kaže...

Pa klasa/razred, šta nije isto? Koristim C++. Ne kužim šta je ovaj singleton

Razred mi zvuči kao prijevod korištenjm google translatora.

 

Singleton ti je patern koji se koristi kada je potrebno osigurati da klasa ima samo jednu instancu. Nisam baš nešto konkretno radio u C++ ali ne bi trebalo biti previše razlike. Sigleton klasa izgleda oprilike ovako:

 

class SingletonPrimjer

{

    //fieldovi koji ti trebaju u klasi

    private static  SingletonPrimjer _singletonPrimjer;

 

 

    private SingletonPrimjer()

    {

          //Ako se nešto treba obaviti  u konstruktoru tu ide

    }

 

    //metode koje ti trebaju u klasi

 

    public static  getSingletonPrimjer()

    {

            if (_singletonPrimjer == null)

                _singletonPrimjer = new SingletonPrimjer();

          return _singletonPrimjer;

    }

}

 

Kao što možeš vidjeti, konstruktor je private, pa ako izvan klase pozoveš:

SingletonPrimjer x  = new SingletonPrimjer();

dobiti ćeš grešku jer ne možeš pristupiti konstruktoru. Kada trebaš pristupiti toj klasi pozivaš:

SingletonPrimjer x  = getSingletonPrimjer();

Što se daljnjeg korištenja tiće, tebi je x objekt klase SingletonPrimjer i koristiš ga kao takvog. Jedina razlika koju imaš je što postoji samo jedna instanca klase SingletonPrimjer.

 

Termin "razred" se koristi u knjizi demistificirani c++, a ja neznam dali je točan il ne.

Kao što vidiš "izmislio" sam si način. Samo sam probao kao za uniju i radilo je. Ovaj singleton izgleda konpliciranije od mog načina.

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice