Nesne Yönelimli Programlama (OOP), veri ve davranış içerebilen “nesneler” kavramına dayanan bir yazılım tasarım paradigmasıdır. Java, kalıtım, kapsülleme, soyutlama ve polimorfizm gibi OOP kavramlarını destekleyen nesne yönelimli bir programlama dilidir.
Java’da bir nesne, bir sınıfın örneğidir. Sınıf, nesnelerin özniteliklerini ve yöntemlerini tanımlayan bir plan veya şablondur. Örneğin, isim, yaş, adres gibi verileri ve konuş ve ye gibi yöntemleri içeren “Kişi” adında bir sınıf oluşturabilirsiniz. Sınıfın bir nesnesini oluşturmak için “yeni” operatörünü kullanmanız ve sınıfın yapıcısını çağırmanız gerekir.
Kapsülleme, bir sınıfın uygulama ayrıntılarını gizleme ve yalnızca genel arabirimini açığa çıkarma işlemidir. Bu, Java’da “özel” ve “genel” gibi erişim değiştiricileri kullanılarak elde edilir. Bir sınıfın özel üyelerine yalnızca sınıf içinden erişilebilirken, genel üyelere sınıf dışından erişilebilir. Bu, nesnelerin dahili durumunun harici varlıklar tarafından değiştirilmesini önlemeye yardımcı olur.
Soyutlama, basit ve sezgisel bir arayüz sağlayarak bir sistemin karmaşıklığını gizleme işlemidir. Bu, Java’da soyut sınıflar ve arayüzler kullanılarak elde edilir. Soyut bir sınıf, somutlaştırılamayan ancak diğer sınıflar tarafından genişletilebilen bir sınıftır. Arayüz, nesnelerin davranışını tanımlayan soyut yöntemler topluluğudur. Arayüzler, birden çok sınıf tarafından uygulanabilen sözleşmeleri tanımlamak için kullanılır.
Kalıtım, sınıfların özellikleri ve yöntemleri üst sınıflarından devralmasına izin veren bir mekanizmadır. Bu, mevcut sınıfları temel alan yeni sınıflar oluşturmanıza ve bunların işlevlerini yeniden kullanmanıza olanak tanır. Java’da kalıtım, “extends” anahtar kelimesi kullanılarak elde edilir. Örneğin, “Kişi” sınıfını genişleten ve öğrencilere özel yeni nitelikler ve yöntemler ekleyen “Öğrenci” adında bir sınıf oluşturabilirsiniz.
Polimorfizm, nesnelerin birçok biçim alma yeteneğidir. Bu, Java’da yöntem aşırı yükleme ve yöntem geçersiz kılma kullanılarak elde edilir. Yöntem aşırı yüklemesi, aynı ada ancak farklı parametrelere sahip birden çok yöntem oluşturma işlemidir. Yöntem geçersiz kılma, üst sınıfındaki bir yöntemle aynı ada, dönüş türüne ve parametrelere sahip bir alt sınıfta yeni bir yöntem oluşturma işlemidir. Bu, alt sınıfa özgü yöntemin yeni bir uygulamasını sağlamanıza olanak tanır.
Java, yukarıdaki OOP kavramlarına ek olarak jenerikler, ek açıklamalar ve lambda ifadeleri gibi çeşitli gelişmiş özellikleri de destekler. Jenerikler, farklı türdeki verilerle çalışabilen sınıflar, arabirimler ve yöntemler oluşturmanıza olanak tanır. Ek açıklamalar, kodunuza çalışma zamanında işlenebilen meta veriler eklemenizi sağlar. Lambda ifadeleri, yöntemlere bağımsız değişken olarak iletilebilen veya değişkenlerde saklanabilen anonim işlevler oluşturmanıza olanak tanır.
Sonuç olarak, Java, çok çeşitli OOP kavramlarını ve özelliklerini destekleyen, güçlü ve esnek bir nesne yönelimli programlama dilidir. Bu kavramları ve özellikleri kullanarak, bakımı kolayca yapılabilen ve genişletilebilen verimli, modüler ve yeniden kullanılabilir kodlar oluşturabilirsiniz. İster basit bir masaüstü uygulaması ister karmaşık bir web tabanlı sistem oluşturuyor olun, Java size sağlam ve ölçeklenebilir yazılım çözümleri oluşturmak için ihtiyaç duyduğunuz araçları ve özellikleri sağlar.
İbrahim Ebrar AKÇAKOYUN
