Základ C# 11 – Vlastnosti [Properties]

Vlastnosti sú špeciálne metódy, ktoré sú prakticky rovnako použiteľné ako premenné. 

Vlastnosti sú kombináciou metód a premenných – je teda možné k ním pristupovať ako ku klasickým premenným, ale vykonajú sa pri tom aj iné činnosti.

private int premenna;

public void SetPremenna(int Hodnota)
{
   premenna = hodnota;
}

public int GetPremenna()
{
   return premenna;
}

Tento príklad ukazuje, ako by ste mohli nadstaviť a získať hodnotu premennej z inej triedy, ak by bola private. Skrátka si vytvoríte 2 public metódy, ktoré to robia za vás. Na tomto princípe práve fungujú vlastnosti.

Tvorba vlastnosti s priamym napojením na premennú

Rovnako ako v predošlom prípade budete potrebovať privátnu premennú. Následne už len vytvoríte vlastnosť – začnete ako pri klasickej premennej. Napíšete modifikátory (za normálnych okolností sa používa public), typ, meno a začnete blok kódu.

private int _premenna

public int premenna
{
   get
   {
      return premenna;
   }
   set
   {
      _premenna = value;
   }
}

Vnútri bloku kódu definujete získavač [getter]nastavovač [setter]. Tie zastupujú metódy, na priradenie a získanie hodnoty. Pri nastavovači dostanete k dispozícií premennú value, ktorú používateľ odovzdal – napríklad pri premenna = 5;  by to bola 5. Získavač naopak cez return vracia hodnotu. Všimnite si, že získavač ani nastavovač nevyžaduje definíciu typu alebo parametru. Zaujímavé je to, že sú oboje nepovinné. Čiže vlastnosť nemusí obsahovať nastavovač, ani získavač.

Vlastnosti s nepriamým napojením na premennú

Vlastnosť nemusí byť na premennú napojená priamo a odosielať jej presnú hodnotu premennej. Tak isto nemusí byť napojená len na jednú premennú – nastavovač môže nadstaviť hodnotu jednej, a získavač inej. Tak isto to môže byť prepojené s inou. Na nasledujúcom príklade vám ukážem všetky možnosti.

private int _sekundVMinute;
public int sekund;

public int sekundVMinute
{
   set
   {
      _sekundVMinute = value;
   }
}

public int minut
{
   get
   {
      return sekund / _sekundVMinute;
   }
   set
   {
      sekund = Value * _sekundVMinute;
   }
}

V tomto príklade vidíte, že vlastnosť sekundVMinute, ktorá označuje koľko sekúnd má minúta nemá získavač, ale len nadstavovač – čiže je možné nadstaviť jej hodnotu, ale nie ju zistiť. To síce nemá význam, ale na ukážku to stačí.

Druhá vlastnosť je minut. Pomocou nej môžme zistiť, koľko minút je uložených v premennej sekund. Nie je napojená na vlastnú premennú, ale na verejnú premennú určujúcu počet sekúnd. Automatický ich však prepočíta na minúty podľa nami definovanej hodnoty.

Prístupnosť získavača a nastavovača

Získavač a nastavovač tak isto môže mať modifikátory public alebo private. Ak chcete, aby bola premenná nastaviteľná len z triedy v ktorej sa nachádza, ale pripočítateľná aj z iných, je to možné.

private int _vlastnost

public int Vlastnost
{
   public get
   {
      return vlastnost;
   }
   private set
   {
      vlastnost = value;
   }
}

Toto sa hodí, pokiaľ napríklad trieda, v ktorej sa táto vlastnosť nachádza vypočítava jej hodnotu, ale nechcete aby ju upravoval niekto iný. Pozrite sa na príklad z reality : Ste pred obchodom a pozeráte sa na výklad. Nemôžete len tak strčiť ruku cez sklo a presunúť ten hnusný papier nabok aby vám nezavadzal. Predavač v obchode to však spraviť môže. V tomto prípade je nastavovač „vlastnosti“ verejný z pohľadu triedy obchod, ale z pohľadu triedy zákazník nie.

Týmto sme pokryli vlastnosti. Bol to síce kratší a jednoduchší článok, nabudúce si však ukážeme niečo zložitejšie, a to dedičnosť, čo je zložitejšia časť objektovo orientovaného programovania týkajúca sa tried.

Pridajte Komentár

Vaša e-mailová adresa nebude zverejnená.

Scroll to Top