Nesne yönelimli programlama nedir? OOP prensiplerinin amacı nedir? Bu yazımızda bunları inceleyeceğiz…
Nesne Yönelimli Programlama destekleyen programlama dillerini kendi içinde yüksek seviye diller olarak adlandırılır.
Bunun 4 temel prensibi vardır. Bunlara OOP Prensibi adı verilir:
Abstraction (soyutlama): Detay azaltma,
Inheritance (kalıtım): Bir nesnenin özelliklerinin başka nesneler tarafından kullanılması,
Encapsulation (kapsülleme): Varlığı bütünlemek ve dışarıya karşı korumayı amaçlar,
Polymorphism (çok biçimlilik): nesneyi farklı şekilde işleme yeteneği.
Public: Öğenin kod içerisinde herhangi bir yerden erişilebilir olduğunu belirtir.
Private: Öğrenin sadece tanımlandığı sınıf içerisinde ve o sınıfta türeyen sınıf, sınıflardan erişilebilir olduğunu belirtir.
Abstraction
Soyutlama: Yazılım mühendisliğinin en önemli kavramlardan biridir. Genelde ‘abstract’ olarak bilinir.
Projenizde temelini attığınız ve üzerine inşa edeceğiniz kısımın ilk adımı buradan başlıyor.
Programlamada Abstraction olmaması, matematikte işlem yapmak için sayıların olmaması ile aynıdır. Soyut bir kavramın ne anlama geldiğini ne kadar çok bilirseniz o kadar doğru ilerlersiniz projenizde. Örnek üzerinden gidecek olursak; ayakkabı üreticisini düşünün, derisi, bağcıkları, tabanı, boyası vs. onlarca küçük ve birbiriyle bağımsız detaylardan oluşur. Ama hepsinin en nihayetinde bir amacı vardır değil mi? Sonuç olarak hepsine sadece ‘ayakkabı’ diyoruz. Abstraction da tıpkı bu mantıkta çalışır.
Inheritance
Kalıtım olgusu: Bir (class) sınıfta tanımlanmış değişkenlerin veya metotların (fonksiyon) yeniden tanımlanmasına gerek kalmadan yeni bir sınıfa taşıyabilirsiniz. Bunu işlerin yapılı olduğu sınıfınıza bir alt sınıf eklemektir(subclass). Yeni açılan yani iş class’ınızdan türeyen alt sınıf, üst sınıfınızdan (superclass) ilerde ek olarak projeye gerekli olan başka değişken ve metotları da tanımlayabilir yine otomatik olarak alt sınıfınız bunları da içerisine alır.
Bir (superclass) üst sınıf istediğiniz sayıda alt sınıfa sahip olabilir. Ama bir alt sınıf ne yazık ki sadece bir adet üst sınıfa sahip olabilir. (sorun yaşayanlar multiple inheritance ’ın desteklendiğinin kontrolünü yapabilirler)
Bir alt sınıf üst sınıfın tüm üyelerini (fields, methods) de miras alabilir. Alt sınıf mantığını daha iyi oturtmak için; üst sınıfı ebeveyn alt sınıfları da çocuklar olarak düşünebilirsiniz.
Üst sınıfta bulunan private bir üye alt sınıf tarafından miras alamaz. Ama private üyelere ulaşmak isterseniz property (get; ve set; metotları) kullanılır. Bununla birlikte bu private üyeleri kullanabiliriz.
Encapsulation
Kapsülleme: Bir nesnenin belirli özellik ve metotlarının saklanıp tutulması, erişiminin kısıtlandırılmasıdır.
Erişime kısıtlanan bu özellik ve metotları zaten kullanıcının görmemesi/kullanmaması gerekiyordur. Encapsulation kontrolsüz veri girişini ve kötü amaçlı kullanımı önler. Konuyu daha detaylı anlamak için örneğin; Televizyonu düşünün, açıp kanalları değiştirir gezeriz. arkada kaç volt elektrik var veya kurulum düzeni devreleri nasıldır bilmeyiz ki bilmekte istemeyiz çoğunlukla. Erişimimiz de kolay değildir zaten.
Kısacası bu özellik dilin nesne kullanıcısında gereksiz uygulama ayrıntılarını saklar. Oluşturulan bir sınıf içerisinde kullanıcının işlemlerini daha kolay, hızlı gerçekleştirilmesi için bazı işlemler birleştirilerek tek bir işlemmiş gibi gösterilir. Üzerinde durduğumuz bu birleştirme işlemine ‘kapsülleme’ denir. Ayrıca erişim belirteçleri (access modifier) sayesinde kapsülleme daha kolay yapılmaktadır. Erişim belirteçleri, oluşturulan sınıf /sınıf içindeki elemanların erişim seviyelerini belirlemek için kullanılan anahtar kelimeler grubuna verilen isimdir.
Polymorphism
Çok biçimlilik: Bir türün başka bir tür gibi davranabilme/kullanabilme, aynı temel sınıfta türetilmiş olan sınıflardan paylaşılan başka bir ifadeyle aşırı yüklenen ayrı metodun bu sınıflardan farklı şekillerde uyarlanabilmesidir. Nesnenin davranışı çalışma anında belirlendiği için programcılar da polymorphism özelliği sayesinde nesnelerin türünü önceden bilmek zorunda kalmaz.
Konunun anlaşılması için örneğin; yemek siparişi işini telefondan, evden birisine söyleyerek, kapıcı vs. sağlanabilir. Şu an önemli olan sipariş edilen ürünün alınmasıdır. Burada bir tane amaç var ürünün alınması. Bunu yapacak olan olan ne yolla olursa olsun amacı ürünü almasıdır.
Ayrıca polymorphism aynı isme sahip fonksiyonların benzer olabilse de farklı işlevleri yerine getirme işidir. Tıpkı günlük hayatta duvarı silmek, yazıyı silmek, pencere silmek fiilleri her biri birbirinden farklı olsa da aynı isimle anılır ‘silmek’ uyguladığı nesneye göre anlam kazanır.
Kılıktan kılığa giren Polymorphism çok şekillilik olarak da anılır.
Nesne yönelimli programlama;
yazımızda sadece tanıtım şeklinde bilgi yazısıdır. Konunun daha iyi pekişmesi için projelerinizde çalışırken isimlerini/kullanımını gördüğünüzde aklınızdan amacını bilirseniz nerede kullanacağınızı da bilir, daha doğru ve hızlı ilerlersiniz.
Yeni haber ve gelişmelerden geri kalmayın…