Da se podsetimo:

Klase i objekti

Klase su opisi koji definišu kako će se generisati objekti i koje osobine i funkcionalnosti ti objekti poseduju. Kroz njih se vrši objedinjavanje podataka i operacija koje mogu da se vrše nad njima. Ko može da pristupi kom podatku klase odnosno kojoj metodi klase (kojem članu klase) zavisi od toga kako su im zadata prava pristupa, odnosno kakav im je modifikator pristupa.

U programskom jeziku C# postoje sledeći modifikatori pristupa:

  • private - niko spolja ne može da pristupi članu klase (unutar klase)

  • public - član klase je dostupan svima (unutar i van klase)

  • protected - dostupan samo unutar klase ili unutar izvedenih klasa koje su izvedene iz date klase

  • protected internal - dostupan samo unutar klase, unutar izvedenih klasa koje su izvedene iz date klase ili klasa u istom programu

  • internal - dostupan samo unutar klase ili klasa u istom programu.

Deklaracija klase

class ime_klase : NazivOsnovneKlase
{
        atribut tip clan_podatak;
        ...
        atribut tip f_ja_clan(niz_argumenata);
        ...
}

Konstruktori i destruktori

Konstruktori

Konstruktori su funkcije koje karakteriše: isto ime kao i ime klase, nemaju povratnu vrednost. Sve ostale karakteristike koje važe za bilo koju funkciju važe i za konstruktore. Svaki put kada se kreira objekat neke klase zapravo se poziva konstruktor te klase. Veoma često se u konstruktorima vrši inicijalizacija podataka članova klase. Konstruktori mogu biti bez argumenata (podrazumevani konstruktori ili default konstruktori) ili sa argumentima.

Constructor - konstruktor je najjednostavnije rečeno prva metoda koja se izvršava kad se poziva vaša klasa, stručnije rečeno kad se stvara primerak tipa. Svaka klasa ima konstruktor čak iako ga vi ne napišete i svaki konstruktor se u C# programskom jeziku zove isto kao i klasa. Znači konstruktor je specijalna metoda. Konstruktori su specijalna metoda.koja ne vraća vrednost ali bez ključne reči void jer konstruktori nikada ne mogu da vraćaju vrednosti. Konstruktori služe da vi inicijalizujete podatke klase ili strukture pre upotrebe. Ali konstruktori mogu biti redefinisani da bi obezbedili neku namensku funkcionalnost.

Svaka klasa ili struktura može imati jedan konstruktor, čak iako ga ne napišete ili možete imati više konstruktora, ali svi se oni zovu isto kao i klasa. Međutim, da bi se konstruktori razlikovali jedan od drugog oni moraju da imaju različite atribute. Sintaksa za konstruktor je sledeća:

public bool ime_promenjive;
public class ime_klase
{
          public ime_klase( bool ime_atributa )
          { 
                     ime_promenjive = ime_atributa; 

          }
}

Možete pomisliti da u navedenoj sintaksi postoji greška, da je trebalo napisati ime konstruktora, ali jednostavno ime konstruktora nije opcija, već, kao što je rečeno, ime konstruktora mora biti isto kao i ime klase.

Primer:

public class Pravougaonik
{
    private float duzina;
    private float sirina;
 
    public Pravougaonik(float duz, float sir)
    {
        duzina = duz;
        sirina = sir;
    }
}


Destruktori

Konstruktori se pozivaju svaki put kada se kreira neki objekat. Pri uništavanju objekata pozivaju se destruktori pre samog uništavanja objekta.

Destruktor je specijalna metoda koja služi za čišćenje resursa memorije. Za razliku od konstruktora, koji se kao metoda uvek izvršava prva, destruktor je specijalna metoda koja se uvek izvršava poslednja.

Destruktori su funkcije koje imaju isto ime kao i ime klase tj. ime konstruktora sa dodatkom znaka ~ (tilda) kao prvog simbola imena. Oni nemaju definisan modifikator pristupa, ni povratne vrednosti kao ni naredbu return u telu. Takođe nemaju ni parametre.

Sintaksa za destruktora u C# programskom jeziku je sledeća:

class ime_klase 
{
            ~ ime_klase()
           {

           }
}


Primer:

~Pravougaonik()
{
    // neki kod
}

Svaka klasa može imati samo jedan destruktor. Destruktori se ne mogu nasleđivati. Ne mogu se ni pozivati jer se sami automatski pozivaju i destruktori ne mogu imati niti modifikatore niti parametre. I još jedan savet. Nemojte nikad pisati prazne destruktore.

U C# programskom jeziku, destruktori se retko koriste. Razlog je zato što u .Net Framework okruženju u jeziku C# reference objekata uklanja sakupljač otpadaka (engl. garbage collector). To podrazumeva da može doći do kašnjenja stvarnog brisanja objekata u odnosu na izlaženje reference van dometa.

Last modified: Friday, 13 September 2019, 9:56 AM