Objekty a triedy sú funkciou objektovo orientovaných jazykov, ako C#. Dovoľujú oddeliť rovnaké časti programu od seba a následne ich upravovať bez toho, aby sa navzájom ovplyvňovali.
Objekty v jazyku C# fungujú podobne ako objekty v reálnom svete. Ako objekt v programe môžete chápať používateľa – naraz ich môže byť viac, riadia sa rovnakými pravidlami, ale niektoré veci v nich sú iné – niektoré ich vlastnosti, hodnoty premenných. Čo je to vlastne objekt v C#? Všetko. Všetko, čo v jazyku C# použijete je chápané ako objekt – preto sa mu hovorí objektovo orientovaný jazyk. My, ako používateľ, však väčšinu objektov nevidíme priamo. Čo ako objekty vidíme priamo sú premenné.
Ako vytvoriť objekt
Objekt v jazyku C# je možné vytvoriť rovnako ako iné premenné – Definíciou alebo Deklaráciou, a je nutné aby bol Inicializovaný. Ako príklad tvorby objektu použijeme triedu Random – často používanú triedu na generovanie náhodných čísel.
Random random = new Random();
Týmto kódom sme vytvorili nový objekt typu Random, priradili sme mu meno random a ako hodnotu sme mu priradili novú inštanciu [instance] typu Random. Nová inštancia typu sa dá získať vždy napísaním slova new, za ním mena typu a zátvoriek s parametrami.
Použitie objektu
tento objekt je následne možné použiť a vygenerovať náhodné číslo.
int cislo = random.Next();
Použitie objektu prebieha napísaním jeho mena a bodky, ktorou s dostanete k jeho členom. V tomto prípade je jeho členom aj metóda Next, tá má ešte alternatívu, pri ktorej je možné zadať maximálnu alebo aj minimálnu hodnotu.
int cislo1 = random.Next(5); //vygeneruje náhodné číslo od 0 do 4 int cislo2 = random.Next(3,9); //vygeneruje náhodné číslo od 3 do 8
Konštruktor
Konštruktor [Constructor] je metóda, pomocou ktorej objekt vytvoríme. V prípade triedy Random je možné použiť konštruktor bez parametrov, ale obsahuje aj preťažený konštrukor, do ktorého je možné zadať parameter, a to seed, čo je hodnota, podľa ktorej sú ďalšie čísla generované.
Random random = new Random(3000);
V tejto inštancií sme použili konštruktor triedy Random – int hodnotu 3000.
Predávanie
Objekty je možné predať metódam ako parametre. Existujú dva druhy ako predať parameter – predať jeho hodnotu, alebo referenciu [reference]. Premenné, sú v základnom stave predávané ako hodnoty. Objekty naopak ako referencie.
static void Main(string[] args) { int a = 3; Zvacsi(a) Console.WriteLine(a); } static void Zvacsi(int a) { a = a + 1; }
Metóda Zvacsi má ako parameter premennú a, ktorú vnútri funkcie zväčšíme o 1. Lenže tým že premenné predávajú len svoju hodnotu, tak po vypísaní premennej a v metóde Main a na obrazovke objaví len číslo 3 a nie 4.
Objekty fungujú presne naopak – ak by a bola objekt, tak by predal svoju referenciu, a teda by bol ovplyvnení a výsledok by bol číslo 4. Predanie premennej ako referencie je možné vynútiť slovom ref.
static void Main(string[] args) { int a = 3; Zvacsi(a) Console.WriteLine(ref a); } static void Zvacsi(ref int a) { a = a + 1; }
V tomto príklade odovzdáva premenná a svoju referenciu a tým sa po jej vypísaní v metóde Main objaví na obrazovke číslo 4.
Zber odpadu
Zber odpadu je dôležitá funkcia jazykov rodiny .Net – je to vstavaný spôsob ako sa jazyk sám zbavuje už nepoužívaných objektov a tým šetrí pamäť počítača. V niektorých iných jazykoch je toto nutné robiť manuálne, ale v jazyku C# sa o toto starať nemusíte a prostredie .Net to väčšinou robí za vás. V prípade že je nutné ručné odstránenie objektu, tak sa na to používa opak Konštruktoru – Deštruktor.
V budúcom diely sa pozrieme na to, ako triedy vyrábať, ako písať konštruktori a čo sú to modifikátori.