Методе

У овој лекцији биће сумирано све што је до сада требало да научиш о методама, заједно са неколико нових аспеката коришћења метода.

Методе се дефинишу унутар класе и имају повратни тип, име и листу параметара. На пример:

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

Често се у литератури о објектно-оријентисаном програмирању уместо појма „метода” користи појам „функција”. Функција јесте метода, али је метода шири појам који може да обухвати и конструкторе, деструкторе и сл. Функција је појам који се преноси из литературе о програмским језицима ранијих генерација - у овом курсу користиће се појам „метода”. Из примерa изнад можеш да закључиш да је метода члан класе који извршава одређене акције или обавља неки задатак.

За именовање метода, по конвенцији, користи се PascalCase стил, мада то није правило.

Сваки C# програм има макар једну класу, на пример класу Program са методом Main() која представља улазну тачку програма. Редослед писања метода у класи није битан. На пример, свеједно је да ли неку методу у класи Program напишеш пре или после методе Main(). Редослед може бити само ствар интерног договора у организацији.

Методе се позивају преко инстанце класе. На пример:

NekaKlasa c = new NekaKlasa();
int rezultat = c.Saberi(2, 3);
Console.WriteLine(rezultat);    // 5

Методe могу имати повратни тип void ако не враћају ништа и такође, методе не морају имати параметре ако им се не прослеђују вредности. Могу имати различите модификаторе приступа којима се одређују њихова доступност, као што је објашњено у лекцији Енкапсулација.

Ако методе треба да припадају самој класи, а не њеним објектима, онда се декларишу помоћу кључне речи static, а позивају без креирања инстанце класе. На пример:

using System;

public class NekaKlasa
{
    public static void StatickaMetoda()
    {
        Console.WriteLine("Hello, World!");
    }
}

class Program
{
    static void Main()
    {
        NekaKlasa.StatickaMetoda();
    }
}

Методе могу имати променљив број аргумената, приликом чега се користи кључна реч params. На пример:

using System;

public class NekaKlasa
{
    public static void IspisiBrojeve(params int[] brojevi)
    {
        foreach (int broj in brojevi)
        {
            Console.WriteLine(broj);
        }
    }
}

class Program
{
    static void Main()
    {
        NekaKlasa.IspisiBrojeve(0, 1, 1, 2, 3, 5, 8);
    }
}

Једна класа може да има више метода са истим именом али различитим параметрима, што је објашњено у лекцији Преоптерећење метода.

Променљиве декларисане унутар једне методе су „локалне” променљиве доступне само у опсегу те методе - не могу се користити у некој другој методи. Значи, променљиве декларисане у оквиру једне методе потпуно су независне од променљивих декларисаних у другој методи, чак и када су у обе методе коришћени исти идентификатори. Меморија која чува локалну променљиву алоцира се сваки пут када се позове метода и ослобађа након извршавања методе.

Метода може да врати највише једну вредност помоћу оператора return. Параметри метода се прослеђују по вредности или по референци, онако како је објашњено у лекцији Пренос параметара метода по вредности и референци.