Nesne Yönelimli Programlama Prensipleri (OOP Principles)

Uğurcan Soruç
2 min readSep 1, 2020

--

Nesne yönelimli programlama da 4 temel prensip vardır. Bu prensipler şu şekildedir:

  • Kapsülleme (Encapsulation)
  • Kalıtım (Inheritance)
  • Veri Soyutlama (Abstraction)
  • Çok Biçimlilik (Polymorphism)

Aslında bu prensipler nesne yönelimli programlamanın yapı taşını oluşturur. Bu prensipleri anladığımızda OOP’u daha iyi bir şekilde uygulayabiliriz. Şimdi OOP prensiplerin detaylarına girelim.

Kapsülleme (Encapsulation)

Kapsülleme, ‘bir veya daha fazla öğenin fiziksel veya mantıksal bir paket içine alınması süreci’ olarak tanımlanır. Nesne yönelimli programlama metodolojisinde kapsülleme, uygulama ayrıntılarına erişimi engeller.

Kapsülleme, erişim belirteçleri kullanılarak gerçekleştirilir. Erişim belirticisi, bir sınıf üyesinin kapsamını ve görünürlüğünü tanımlar. C # aşağıdaki erişim belirticilerini destekler -

  • Public
  • Private
  • Protected
  • Internal
  • Protected internal

Kapsülleme, her nesnenin durumunu bir sınıf içinde gizli tuttuğunda elde edilir. Diğer nesnelerin bu duruma doğrudan erişimi yoktur. Bunun yerine, yalnızca yöntem adı verilen genel işlevlerin bir listesini çağırabilirler.

Dolayısıyla, nesne kendi durumunu yöntemler aracılığıyla yönetir ve açıkça izin verilmedikçe başka hiçbir sınıf ona dokunamaz. Nesne ile iletişim kurmak istiyorsanız, sağlanan yöntemleri kullanmalısınız. Şimdi bir örnek gerçekleştirelim. Örneğinimizde, Student classımız olacak ve öğrenci ile ilgili name ve age bilgilerini kapsüle edeceğiz.

Kalıtım (Inheritance)

Bir sınıfın başka bir sınıfın özelliklerini (alanları ve yöntemleri) devralmasına izin verilen mekanizmadır. Burada bilmemiz gereken kavramlar vardır. Bunlar Super Class, Sub Class ve Reusability’dir.

  • Süper Sınıf (Super Class): Özellikleri miras alınan sınıf, süper sınıf (temel sınıf veya ana sınıf / base class(parent)) olarak bilinir.
  • Alt Sınıf (Sub Class): Diğer sınıfı miras alan sınıf, alt sınıf (türetilmiş sınıf, genişletilmiş sınıf veya alt sınıf / Derived Class(child)) olarak bilinir. Alt sınıf, üst sınıf alanlarına ve yöntemlerine ek olarak kendi alanlarını ve yöntemlerini ekleyebilir.
  • Yeniden kullanılabilirlik (Reusability): Miras, “yeniden kullanılabilirlik” kavramını destekler, yani yeni bir sınıf oluşturmak istediğimizde ve istediğimiz kodun bir kısmını içeren bir sınıf zaten mevcut olduğunda, yeni sınıfımızı mevcut sınıftan türetebiliriz. Bunu yaparak mevcut sınıfın alanlarını ve yöntemlerini yeniden kullanıyoruz.

Şimdi bir örnek gerçekleştirelim. Bu örneğimizde bir student classımız olacak ve bu student classımız bazı özelliklerini person classı inherit ederek alacak.

Veri Soyutlama (Abstraction)

Veri soyutlama, belirli ayrıntıları gizleme ve kullanıcıya yalnızca gerekli bilgileri gösterme işlemidir. Soyutlama, soyut sınıflar (abstract classes) veya arayüzlerle (interfaces) elde edilebilir

  • Soyut Sınıflar (Abstract Classes): Bu sınıf, sınıf tanımında anahtar kelime veya değiştirici özetiyle işaretlenen en az bir soyut yöntem içermelidir. Abstract sınıfları, genellikle sınıf hiyerarşisinde bir temel sınıfı tanımlamak için kullanılır.
  • Arayüzler (Interfaces): Arayüz, arayüzü miras alan tüm sınıfların izlemesi gereken sözdizimsel bir sözleşme olarak tanımlanır. Bir arayüz, yalnızca soyut yöntemler ve özellikler içerebilen tamamen “soyut bir sınıftır”.

Şimdi iki örnek gerçekleştireceğiz. Bu örneklerin birinde abstract class diğerinde interface kullanacağız.

Abstract Class
Interface

Çok Biçimlilik (Polymorphism)

Polimorfizm kelimesi birçok biçime sahip olmak anlamına gelir. Nesne yönelimli programlama paradigmasında, polimorfizm genellikle ‘tek arayüz, çoklu fonksiyonlar’ olarak ifade edilir. Inherit veya implemente edilen nesne üzerinden farklı implementasyon veya inheritanceleri kullanma durumudur. Şimdi bir örnek gerçekleştireceğiz. Abstraction’da kullandığımız örneğe benzer bir örnek olacak.

--

--