podporuje gcc property objektov?

Sekcia: Programovanie 26.03.2006 | 19:59
Avatar Frantisek Klabzuba Debian  Používateľ
Ahoj. Mam taku otazku. V object pascale existuje taka vec "property" ktora umoznuje pisat velmi prehladny interface k objektom, neexistuje nieco take v C++ ??? Pascal: type TNieco = class private procedure SetZlozObj(value : TZlozObj); function GetZlozObj : TZlozObj; protected FCislo : integer; FZlozObj : TZlozObj; public property Cislo : integer read FCislo write FCislo; property ZlozObj : TZlozObj read GetZlozObj write SetZlozObj; end C++ teraz: class TNieco { protected int FCislo; TZlozObj FZlozObj; public int GetCislo; void SetCislo(int value); TZlozObj GetZlozObj; void SetZlozObj(TZlozObj value); } Vyhody pascalovskeho zapisu sa objavia pri pouzivani: Pascal Nieco.Cislo := 5; if Nieco.Cislo = 5 then ... Nieco.ZlozObj := XYZ; if Nieco.ZlozObj.Jablko then ... C++ Nieco.SetCislo(5); if (Nieco.GetCislo() = 5) ... Nieco.SetZlozObj(XYZ); if (Nieco.GetZlozObj().Jablko) ... Takze existuje take nieco v GCC ? V Borland C++ Builder tusim je nieco ako __property alebo cosi take... dvh
    • Re: podporuje gcc property objektov? 24.03.2006 | 14:10
      m0d0r   Návštevník
      skusil si google pred tym ako si sa toto vobec spytal ? najskor sa kukni napr sem http://www.cplusplus.com/doc/tutorial/
      • Re: Re: podporuje gcc property objektov? 24.03.2006 | 14:43
        Avatar Frantisek Klabzuba Debian  Používateľ
        Pozrel som sa. Nepisu o tom ani slovo takze C++ prehladny interfejs nepodporuje!
        • Re: Re: Re: podporuje gcc property objektov? 24.03.2006 | 14:54
          m0d0r   Návštevník
          a co ty myslis pod pojmom prehladny interface lebo to hore som velmi podla teba nepochopil
          • Re: Re: Re: Re: podporuje gcc property objektov? 24.03.2006 | 17:46
            Avatar Frantisek Klabzuba Debian  Používateľ
            No ze napr. mas objekt Okno kde je nadpis okna property "Caption". Ked ale nastavis nejake caption tak chces aby sa zobrazilo, nie len zapisalo do premennej FCaption takze sa to robi v oboch jazykoch priblizne takto: procedura_na_zapis_caption(hodnota) { FCaption = hodnota; PrekresliCaption(); } funkcia_na_citanie_caption() { return FCaption; } No a PASCAL navyse obsahuje specialnu jazykovu konstrukciu zvanu "property" ktora ti umozni ZJEDNOTIT citanie a zapis toho FCaption cize potom property Caption citas aj zapisujes rovnako: Pascal: if Caption='Ahoj' then Caption:='Nazdar'; C++: if (GetCaption()=="Ahoj") SetCaption("Nazdar"); Uz chapes o co mi ide? Dost pochybujem ze by to bolo na stranke www.cplusplus.org lebo toto je velmi zavysle na kompilatore a ja potrebujem vediet ci to pozna GCC? dvh
            • Re: Re: Re: Re: Re: podporuje gcc property objekto 24.03.2006 | 20:09
              Avatar borg Fedora  Administrátor
              deklaruj clensku premenu caption ako public ak to nechces riesit cez clennske metody triedy, ale je to potom prasacina (nedorziava princiy OOP). class Okno { public: string caption; . . . } Okno okno(); if (okno.caption == "Ahoj") okno.caption = "nazdar";
              • Re: Re: Re: Re: Re: Re: podporuje gcc property obj 24.03.2006 | 20:35
                Avatar Frantisek Klabzuba Debian  Používateľ
                Nie. To potom funguje len pre jednoduche priklady zapisu do premennej ale v mojom priklade je zapis a refresh a v kode to vyzera prehladne ako zapis. A plne suhlasim s tym ze je to nie OOP. dvh
                • Re: Re: Re: Re: Re: Re: Re: podporuje gcc property 24.03.2006 | 20:53
                  Avatar borg Fedora  Administrátor
                  to je potom zalezitost konkretnej kniznice a nie jazyka. je na funkcii ktora nastavuje napr. caption okna aby toto okno prekreslila.
                  • Re: Re: Re: Re: Re: Re: Re: Re: podporuje gcc prop 26.03.2006 | 19:51
                    Avatar Frantisek Klabzuba Debian  Používateľ
                    Vidim ze si ma nepochopil. "je na funkcii ktora nastavuje napr. caption okna aby toto okno prekreslila" Ja nechcem ziadne funkcie na zapis a funkcie na citanie. Je chcem "property" ktora bude pre zapis aj citanie! To je uplne nieco ine. A nieje to na kniznici lebo ja pisem tu kniznicu a chcem tam mat 1 property namiesto dvoch funkcii. Kvoli prehladnosti. A mam taky pocit ze sa to tyka kompilatora ci to podporuje, mozno dokonca preprocesora... dvh
                    • Re: Re: Re: Re: Re: Re: Re: Re: Re: podporuje gcc 26.03.2006 | 19:59
                      WlaSaTy   Návštevník
                      aha, takze ty hovoris o rozsireni jazyku pascal ktore vzniklo a udrziava sa v dielnach borlandu. prvy krat to bolo pouzite v delphi ktore je object pascal. toto iste bolo preportovane aj do c++buildera od toho isteho vyrobcu. a silne pochybujem ze tieto novinky presli do noriem pre c alebo pascal aby to podporovalo gcc.