1. Uvod

Kada pišemo programe, često nam se desi da isti zadatak radimo mnogo puta.
Na primer — više puta sabiramo brojeve, ispisujemo podatke o korisniku, pretvaramo vrednosti iz jednog tipa u drugi, učitavamo nešto sa tastature…

Bez metoda, morali bismo svaki put ispočetka da pišemo isti kod. To bi ubrzo postalo haotično, nepregledno i puno grešaka.

Zato programiranje uvodi metode — male, jasno definisane funkcionalne celine, koje možemo da pozovemo kad god nam trebaju.
U C# metodu možete posmatrati kao „mini-program“ unutar većeg programa.

Metode:

  • pomažu da kod bude kraći i pregledniji,

  • omogućavaju ponovno korišćenje logike,

  • čine program modularnim,

  • olakšavaju održavanje i unapređivanje programa.


2. Šta je metoda u C#?

Metoda je blok koda koji ima:

  • ime

  • ulazne podatke (parametre) – ne moraju uvek da postoje

  • povratnu vrednost – vrednost koju metoda vraća nazad pozivaocu

  • telo metode – instrukcije koje se izvršavaju

Najosnovniji oblik metode izgleda ovako:

<tip_povratne_vrednosti> NazivMetode(<parametri>)
{
    // telo metode
}

Primer najjednostavnije metode:

void Pozdrav()
{
    Console.WriteLine("Zdravo!");
}

Ova metoda ne vraća ništa (koristi void) i samo ispisuje poruku.

Primer metode koja vraća vrednost:

int Saberi(int a, int b)
{
    return a + b;
}

Ova metoda prima dva broja i vraća njihov zbir.
Veoma je jednostavno – kao matematička funkcija.

Kako se metoda poziva?

Saberi(3, 5);     // vraća 8
Pozdrav();        // ispisuje "Zdravo!"

3. Metode u okviru klase

U objektno orijentisanom programiranju sve metode se nalaze unutar klasa.
Na primer:

class Kalkulator
{
    public int Saberi(int a, int b)
    {
        return a + b;
    }
}

Da bismo koristili ovu metodu, moramo da napravimo objekat klase:

Kalkulator k = new Kalkulator();
int rezultat = k.Saberi(10, 20);
Console.WriteLine(rezultat); // 30

4. Zašto nam treba preklapanje metoda (Method Overloading)?

Zamislite situaciju: želite metodu Saberi koja sabira različite tipove podataka:

  • dva cela broja

  • dva broja sa decimalama

  • tri cela broja

  • dva broja u string formatu

Ako bismo morali da metodama dajemo različita imena, imali bismo:

  • SaberiInt

  • SaberiDouble

  • SaberiTriBroja

  • SaberiStringove

To bi bilo ružno i nepraktično.

C# zato dozvoljava da metode imaju isto ime, ali različite parametre.
To se zove preklapanje metoda.


5. Preklapanje metoda (Method Overloading)

Preklapanje metoda znači da u istoj klasi imamo više metoda istog imena, ali se razlikuju po:

  1. Broju parametara

  2. Tipu parametara

  3. Redosledu parametara

Važno pravilo: Povratni tip NE MOŽE biti jedina razlika.
Dakle, ove dve metode NIJE moguće preklopiti:

int Metoda() { ... }
double Metoda() { ... } // Pogrešno

6. Primeri preklapanja metoda

Primer 1: različiti tipovi parametara

class Kalkulator
{
    public int Saberi(int a, int b) 
    { 
        return a + b; 
    }

    public double Saberi(double a, double b) 
    { 
        return a + b; 
    }
}

Ako pozovemo:
Saberi(2, 3) → pozvaće se prva metoda
Saberi(2.5, 4.5) → pozvaće se druga


Primer 2: različit broj parametara

public int Saberi(int a, int b, int c)
{
    return a + b + c;
}

Primer 3: različit redosled parametara

public void Info(string ime, int godine)
{
    Console.WriteLine($"{ime} ima {godine} godina.");
}

public void Info(int godine, string ime)
{
    Console.WriteLine($"{ime} ima {godine} godina.");
}

7. Kako C# bira koju verziju metode da pozove?

Kompajler bira na osnovu:

  1. broja parametara,

  2. tipova parametara,

  3. redosleda parametara.

Ako postoji idealno poklapanje – koristi se ta metoda.
Ako ne postoji – program ne može da se prevede.


8. Primer — klasa Converter

class Converter
{
    public string ConvertToString(int broj)
    {
        return "Ceo broj: " + broj;
    }

    public string ConvertToString(double broj)
    {
        return "Decimalni broj: " + broj.ToString("0.00");
    }

    public string ConvertToString(bool vrednost)
    {
        return vrednost ? "Tačno" : "Netačno";
    }
}

9. Vežbe 

Vežba 1 – Osnovno razumevanje metoda

Napisati klasu Osoba sa:

  • poljima: ime, prezime, godine

  • metodom Prikazi(), koja ispisuje podatke

Napraviti 2 objekta i pozvati metod.


Vežba 2 – Preklapanje metoda

Napraviti klasu Matematika sa preklopljenim metodama:

  1. Mnozi(int a, int b)

  2. Mnozi(double a, double b)

  3. Mnozi(int a, int b, int c)

Proveriti da li rade kako treba.


Vežba 3 – Različit redosled parametara

Napraviti tri metode Info:

  1. Info(string ime, int godine)

  2. Info(int godine, string ime)

  3. Info(string ime)
    – poslednja metoda poziva neku od prethodnih.


Vežba 4 – Naprednija: formatiranje teksta

Napraviti klasu FormatHelper sa metodama:

  1. Format(string tekst)

  2. Format(int broj) — pretvara u string i dodaje “(broj)”

  3. Format(double broj) — zaokruži na 2 decimale

  4. Format(object o) — vraća tip objekta (typeof(o))


10. Zadaci za vežbu (malo teži zadaci)

Zadatak 1

Napraviti klasu Statistika sa metodama:

  • Prosek(int a, int b)

  • Prosek(int a, int b, int c)

  • Prosek(double[] brojevi) — vraća prosek niza

Testirati sve metode.


Zadatak 2

Napraviti klasu Printer sa metodama Print:

  • Print(string tekst)

  • Print(int broj)

  • Print(string[] reci) – ispisuje niz reči, svaku u novom redu

  • Print(object o) – ispisuje tip i vrednost


Zadatak 3 (za bolje učenike)

Kreirati klasu Kalkulator2 sa metodama:

  • Izracunaj(int a, int b, string operacija)
    gde operacija može biti: “+”, “-”, “*”, “/”

  • Izracunaj(double a, double b, string operacija)

  • Izracunaj(string izraz)
    koristi prethodne metode, parsira izraz poput
    "3 + 4" ili "10 * 5"


11. Zaključak

Preklapanje metoda čini naš kod:

  • čitljivijim (koristimo isto ime metoda za istu namenu)

  • jasnijim (korisnik klase zna samo jedno ime metode)

  • fleksibilnim (program radi sa raznim tipovima podataka)

  • lakšim za održavanje (sve verzije metode su na jednom mestu)

Last modified: Friday, 21 November 2025, 11:06 AM