Nesne Yönelimli Programlama (OOP) Temelleri Ve Java

Java programlama dili, nesne yönelimli programlamayı (OOP) destekleyen güçlü bir dildir. Bu yaklaşım, programı nesneler etrafında şekillendirir ve yazılım geliştirme sürecini daha düzenli, esnek ve modüler hale getirir. OOP’nin dört temel ilkesi; sınıflar ve nesneler, kapsülleme, kalıtım ve çok biçimlilik (polymorphism) olarak sıralanabilir. Şimdi, bu kavramları detaylıca inceleyelim.

Sınıflar ve Nesneler

Java’da nesneler, sınıflar adı verilen şablonlardan türetilir. Sınıflar, nesnelerin özelliklerini (alanlar) ve davranışlarını (metotlar) tanımlar. Nesneler ise sınıfın örnekleridir.

class Araba {
    String marka;
    int yil;

    void bilgiVer() {
        System.out.println("Marka: " + marka + ", Yıl: " + yil);
    }
}

public class Main {
    public static void main(String[] args) {
        Araba araba1 = new Araba();
        araba1.marka = "Toyota";
        araba1.yil = 2022;
        araba1.bilgiVer();
    }
}

Bu örnekte, Araba sınıfı, marka ve yil adında iki özelliğe ve bilgiVer adında bir metoda sahiptir. Main sınıfında ise Araba sınıfından bir nesne oluşturduk ve bu nesnenin özelliklerini atayıp metodu çağırdık.

Kapsülleme (Encapsulation)

Kapsülleme, veriyi korumak için kullanılır. Java’da bu, genellikle sınıfın özelliklerini private yaparak ve bu verilere erişimi public metotlarla sağlayarak yapılır. Böylece, sınıf dışındaki kodlar, doğrudan verilere erişemez, sadece belirlenen yollarla erişim sağlayabilir.

class Calisan {
    private String isim;
    private int maas;

    public void setIsim(String isim) {
        this.isim = isim;
    }

    public String getIsim() {
        return isim;
    }

    public void setMaas(int maas) {
        this.maas = maas;
    }

    public int getMaas() {
        return maas;
    }
}

public class Main {
    public static void main(String[] args) {
        Calisan calisan = new Calisan();
        calisan.setIsim("Ahmet");
        calisan.setMaas(5000);
        System.out.println("Çalışan İsmi: " + calisan.getIsim());
        System.out.println("Çalışan Maaşı: " + calisan.getMaas());
    }
}

Bu örnekte, Calisan sınıfındaki isim ve maas değişkenleri private olarak tanımlanmış, bu sayede doğrudan erişim engellenmiştir. Ancak, get ve set metotları sayesinde bu verilere güvenli bir şekilde erişilebilmektedir.

Kalıtım (Inheritance)

Kalıtım, bir sınıfın başka bir sınıftan özelliklerini ve metotlarını miras almasını sağlar. Böylece kod tekrarını azaltır ve yeniden kullanılabilirliği artırır. Java’da extends anahtar kelimesiyle kalıtım sağlanır.

class Hayvan {
    void sesCikar() {
        System.out.println("Hayvan ses çıkarıyor.");
    }
}

class Kopek extends Hayvan {
    @Override
    void sesCikar() {
        System.out.println("Köpek havlıyor.");
    }
}

public class Main {
    public static void main(String[] args) {
        Kopek kopek = new Kopek();
        kopek.sesCikar();
    }
}

Bu örnekte, Kopek sınıfı Hayvan sınıfından miras almış ve sesCikar metodunu ezmiştir. Bu sayede köpek nesnesi, hayvanın genel ses çıkarma davranışını kendine özgü bir şekilde gerçekleştirmiştir.

Çok Biçimlilik (Polymorphism)

Çok biçimlilik, nesnelerin farklı sınıf türlerinde aynı isimdeki metotları farklı şekillerde uygulayabilmesi anlamına gelir. Bu, özellikle bir sınıf hiyerarşisinde metotları yeniden tanımlamak için kullanılır.

class Kus {
    void uc() {
        System.out.println("Kuş uçuyor.");
    }
}

class Kartal extends Kus {
    @Override
    void uc() {
        System.out.println("Kartal yüksekten uçuyor.");
    }
}

public class Main {
    public static void main(String[] args) {
        Kus kus = new Kus();
        Kus kartal = new Kartal();

        kus.uc();       // Kuş uçuyor.
        kartal.uc();    // Kartal yüksekten uçuyor.
    }
}

Bu örnekte, Kartal sınıfı Kus sınıfından miras almış ve uc metodunu kendi ihtiyaçlarına göre yeniden tanımlamıştır. Böylece, çok biçimlilik sağlanmış olur.

Sonuç

Nesne yönelimli programlama, Java programlamasında yazılımın daha düzenli ve bakımı kolay olmasını sağlayan bir yaklaşımdır. Sınıflar ve nesneler, kapsülleme, kalıtım ve çok biçimlilik gibi kavramlar, OOP’nin temel yapı taşlarını oluşturur. Bu kavramlar sayesinde Java’da esnek, yeniden kullanılabilir ve sürdürülebilir yazılımlar geliştirebiliriz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir