Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Delphi - nastavenie statických premenných v triede

Ide o to, že nevieš čo v mojom programe ako bude. Obrázky sú v resource a budú nemenné. Majú pevné rozmery a tie sa nikdy nebudú meniť. Je nezmysel, aby som si zisťoval programovo rozmer obrázka, ktorý už dopredu viem. Ak v budúcnosti dám iné obrázky (o čom pochybujem), tak si tie rozmery v tej statickej premennej len zmením.

Prečo nie konštanta? Pretože konštanta je viditeľná von a ja potrebujem tú hodnotu len v tejto jedinej triede a nikde inde. Takže ju potrebujem zapúzdriť do nej. Má to svoje výhody a to napríklad pri použití doplňovača syntaxe mi nebude túto premennú ponúkať, pretože v triede bude v časti private, čiže ju nič okrem tejto triedy vidieť nebude. Keďže statická premenná nie je v skutočnosti konštanta, programovo ju môžem zmeniť. To ale neurobím, pretože to nebude mať význam. Budem ju používať ako konštantu. Keďže to bude konštanta (pre mňa) nemá význam, aby s každou inštanciou triedy vznikala znova a tak ju tieto inštancie budú zdielať ako si správne napísal.

Prečo nie define? No lebo Delphi, resp. Lazarus nič také nepozná, aspoň nie v takom zmysle ako o tom uvažuješ ty.

A aký je príklad využitia statických premenných? Napríklad v matematickej triede, ktorá bude počítať rôzne funkcie sa dajú takéto premenné použiť ako konštanty (napr. pí a podobne). Používateľ túto konštantu nezmení, pretože mu to trieda nedovolí a trieda túto konštantu tiež nemá dôvod meniť.

Takže všetko má svoj zmysel. Aj používanie statických členov pri programovaní. Musel by si viac programovať v OOP, aby si pochopil rôzne princípy. Napr., kým som ja nevidel C# a spôsob programovania v ňom, tak som kopec vecí z OOP nerozumel. Hlavne som nechápal základnému princípu OOP a to zapúzdreniu. Metódy som volal 5. cez 9. a podstatné bolo, že to fungovalo. Potom som sa tomu trochu venoval viac a pochopil som, že kopec vecí, čo som kedysi robil okľukou sa dalo robiť oveľa lepšie.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny