Mis on OOP?
Objektorienteeritud programmeerimine (OOP) on viis koodi korraldamiseks klasside ja objektide kaudu. See on tänapäeva programmeerimise alus — suurem osa professionaalsetest programmidest on kirjutatud OOP põhimõtteid kasutades.
- Klass on mall ehk “joonis” — see kirjeldab, millised omadused ja tegevused on objektil
- Objekt on konkreetne eksemplar klassi alusel — see on “päris asi”
Näide: Auto on klass (mall). Sinu punane Toyota on objekt (konkreetne auto).
class Opilane
{
// Väljad (fields) — omadused
public string Nimi;
public int Vanus;
public double Hinne;
}
Objekti loomine ja kasutamine
// Loome objekti
Opilane opilane1 = new Opilane();
// Määrame väärtused
opilane1.Nimi = "Anna";
opilane1.Vanus = 20;
opilane1.Hinne = 4.8;
// Kasutame väärtusi
Console.WriteLine($"Nimi: {opilane1.Nimi}");
Console.WriteLine($"Vanus: {opilane1.Vanus}");
Console.WriteLine($"Hinne: {opilane1.Hinne}");

Konstruktor
Konstruktor on erikomeetod, mis kutsutakse välja objekti loomisel. See võimaldab kohe loomisel väärtused määrata. Konstruktori nimi on alati sama mis klassi nimi.
class Opilane
{
public string Nimi;
public int Vanus;
public double Hinne;
// Konstruktor
public Opilane(string nimi, int vanus, double hinne)
{
Nimi = nimi;
Vanus = vanus;
Hinne = hinne;
}
}
// Loome objekti konstruktoriga — väärtused kohe kaasa
Opilane opilane1 = new Opilane("Anna", 20, 4.8);
Opilane opilane2 = new Opilane("Jaan", 22, 3.5);
Meetodid klassis
Klassidel võivad olla oma meetodid — tegevused, mida objekt oskab teha.
class Opilane
{
public string Nimi;
public int Vanus;
public double Hinne;
public Opilane(string nimi, int vanus, double hinne)
{
Nimi = nimi;
Vanus = vanus;
Hinne = hinne;
}
// Meetod — kuvab õpilase info
public void KuvaInfo()
{
Console.WriteLine($"Nimi: {Nimi}, Vanus: {Vanus}, Hinne: {Hinne}");
}
// Meetod — kontrollib, kas õpilane on läbinud
public bool OnLabinud()
{
return Hinne >= 3.0;
}
}
// Kasutamine
Opilane opilane = new Opilane("Marta", 21, 4.2);
opilane.KuvaInfo();
if (opilane.OnLabinud())
Console.WriteLine(opilane.Nimi + " on aine läbinud!");
else
Console.WriteLine(opilane.Nimi + " ei ole läbinud.");

Mitu objekti — listi kasutamine
OOP-i suur eelis on see, et saame luua palju objekte sama klassi alusel ja neid kogumisse salvestada.
List<Opilane> opilased = new List<Opilane>();
opilased.Add(new Opilane("Anna", 20, 4.8));
opilased.Add(new Opilane("Jaan", 22, 3.5));
opilased.Add(new Opilane("Marta", 21, 2.5));
opilased.Add(new Opilane("Peeter", 23, 5.0));
Console.WriteLine("=== Kõik õpilased ===");
foreach (Opilane op in opilased)
{
op.KuvaInfo();
}
// Leiame parimad õpilased
Console.WriteLine("\n=== Läbinud õpilased ===");
foreach (Opilane op in opilased)
{
if (op.OnLabinud())
Console.WriteLine(op.Nimi);
}

Täielik koodinäide
using System;
using System.Collections.Generic;
class Auto
{
public string Mark;
public string Mudel;
public int Aasta;
public double Labisoidu; // km
public Auto(string mark, string mudel, int aasta, double labisoidu)
{
Mark = mark;
Mudel = mudel;
Aasta = aasta;
Labisoidu = labisoidu;
}
public void KuvaInfo()
{
Console.WriteLine($"{Aasta} {Mark} {Mudel} — {Labisoidu} km");
}
public bool OnVana()
{
return (2024 - Aasta) > 10; // vanem kui 10 aastat
}
public string Seisund()
{
if (Labisoidu < 50000) return "Suurepärane";
else if (Labisoidu < 150000) return "Hea";
else return "Kulunud";
}
}
class Program
{
static void Main()
{
List<Auto> autod = new List<Auto>();
autod.Add(new Auto("Toyota", "Corolla", 2018, 85000));
autod.Add(new Auto("Volkswagen", "Golf", 2010, 210000));
autod.Add(new Auto("BMW", "320i", 2022, 15000));
autod.Add(new Auto("Ford", "Focus", 2013, 130000));
Console.WriteLine("=== Autode nimekiri ===");
foreach (Auto auto in autod)
{
auto.KuvaInfo();
Console.WriteLine($" Seisund: {auto.Seisund()}");
if (auto.OnVana())
Console.WriteLine(" ⚠ See auto on vanem kui 10 aastat.");
Console.WriteLine();
}
}
}
