Meetodid erinevates klassides

Mis on meetod?

Meetod on nimega koodiplokk, mis täidab kindlat ülesannet. Meetodid võimaldavad jagada programmi väikesteks loogilisteks osadeks, vältida koodi kordamist ja muuta programm kergemini loetavaks.

Meetodi struktuur:

ligipääs tagastustüüp Nimi(parameetrid)
{
    // kood
    return väärtus;
}

Meetod ilma parameetrite ja tagastuseta (void)

void tähendab, et meetod ei tagasta midagi — ta lihtsalt täidab mingi tegevuse.

static void TervitaKasutajat()
{
    Console.WriteLine("Tere tulemast programmi!");
    Console.WriteLine("=======================");
}

// Väljakutsumine:
TervitaKasutajat();

Meetod parameetritega

Parameetrid on väärtused, mida meetodile edastame väljakutsumise hetkel.

static void TervitaNimepidi(string nimi, int vanus)
{
    Console.WriteLine($"Tere, {nimi}! Sa oled {vanus} aastane.");
}

// Väljakutsumine:
TervitaNimepidi("Anna", 20);
TervitaNimepidi("Jaan", 25);

Meetod tagastusväärtusega (return)

Meetod võib arvutada midagi ja tagastada tulemuse. Tagastustüüp kirjutatakse void asemele.

static int Liida(int a, int b)
{
    return a + b; // tagastame summa
}

static double ArvetaKeskmine(int[] arvud)
{
    int summa = 0;
    foreach (int arv in arvud)
    {
        summa += arv;
    }
    return (double)summa / arvud.Length;
}

// Väljakutsumine:
int tulemus = Liida(10, 25);
Console.WriteLine("Summa: " + tulemus);

int[] hinded = { 3, 4, 5, 4, 5 };
double keskmine = ArvetaKeskmine(hinded);
Console.WriteLine($"Keskmine: {keskmine:F2}");

Meetodid erinevas klassis

Koodi saab jagada mitmesse klassi. See muudab programmi struktureeritumaks — iga klass vastutab oma teema eest. Teise klassi meetodi väljakutsumiseks kasutatakse KlassiNimi.MeetodNimi().

// Eraldi klass — vastutab arvutuste eest
class Kalkulaator
{
    public static int Liida(int a, int b)
    {
        return a + b;
    }

    public static int Lahuta(int a, int b)
    {
        return a - b;
    }

    public static double Jagamine(double a, double b)
    {
        if (b == 0)
        {
            Console.WriteLine("Veaga: nulliga jagamine ei ole võimalik!");
            return 0;
        }
        return a / b;
    }
}

// Eraldi klass — vastutab kuvamise eest
class Kuvaja
{
    public static void KuvaReegel()
    {
        Console.WriteLine("====================");
    }

    public static void KuvaTulemus(string toiming, double tulemus)
    {
        Console.WriteLine($"{toiming} tulemus: {tulemus}");
    }
}

// Peaklass
class Program
{
    static void Main()
    {
        Kuvaja.KuvaReegel();

        int summa = Kalkulaator.Liida(15, 8);
        Kuvaja.KuvaTulemus("Liitmine", summa);

        int vahe = Kalkulaator.Lahuta(20, 7);
        Kuvaja.KuvaTulemus("Lahutamine", vahe);

        double jagatis = Kalkulaator.Jagamine(10, 3);
        Kuvaja.KuvaTulemus("Jagamine", jagatis);

        Kuvaja.KuvaReegel();
    }
}

Täielik koodinäide

using System;

class TempTeisendaja
{
    // Celsius Fahrenheitiks
    public static double CelsiusToFahrenheit(double celsius)
    {
        return celsius * 9 / 5 + 32;
    }

    // Fahrenheit Celsiuseks
    public static double FahrenheitToCelsius(double fahrenheit)
    {
        return (fahrenheit - 32) * 5 / 9;
    }

    // Kuvab temperatuuri mõlemas ühikus
    public static void KuvaTeisendus(double celsius)
    {
        double fahrenheit = CelsiusToFahrenheit(celsius);
        Console.WriteLine($"{celsius}°C = {fahrenheit:F1}°F");
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine("=== Temperatuuri teisendaja ===");

        TempTeisendaja.KuvaTeisendus(0);
        TempTeisendaja.KuvaTeisendus(20);
        TempTeisendaja.KuvaTeisendus(37);
        TempTeisendaja.KuvaTeisendus(100);

        Console.Write("\nSisesta temperatuur Celsius: ");
        double sisend = double.Parse(Console.ReadLine());
        TempTeisendaja.KuvaTeisendus(sisend);
    }
}