OOP Nedir?

  • 19 Mart 2018

OOP (Object Oriented Programming) Türkçe karşılığı olarak ise Nesne Tabanlı Programlama diyebiliriz. Bu programlama türü yazılımlardaki karmaşıklığı azaltmak amacıyla ortaya çıkarılmıştır. OOP, kod tekrarının önüne geçmektedir. Programlama mantığına değinecek olursak, her parçanın bir sınıfı olmalıdır, o sınıflar ise birbirleri ile iletişim halinde olmak zorundadır. Bir örnekten yola çıkarak şimdi daha iyi anlayacağız. Düşünün; 1 okul var, okulun içerisinde ise onlarca öğrenci mevcut. Burada okul=projemiz, sınıf=class, öğrenci=nesne Bir öğrenciye en basit yoldan ulaşmayı deneyelim şimdi.

Öncelikle okulun içerisindeki sınıflara, oradan da öğrencilere ulaşabiliriz. Ve bu öğrencinin fizik, kimya, tarih derslerini işleyebildiği gibi aynı öğrenciyi atölye derslerinde programlama dersinde de görebiliriz. Öğrencimiz yani nesnemiz rahatlıkla her yerde hareket edebiliyor.

Biraz farklı bir örnek oldu ama gayet açıklayıcı ve anlaşılır olduğunu düşünüyorum.

Kodlarımızı formumuza çift tıklayıp açılan sayfada yazmayıp, parçalara bölüp class class ayırıp oralardan nesnelerimizi çağırıyorsak buna OOP denir. OOP çatısını sınıf (class) ve nesne (object) olarak oluşturabiliriz. Sınıf ile nesneyi tanımlıyoruz, nesne bir sınıftan türettiğimiz onun özelliklerini taşıyan bir modeldir. Ve daha sonra tekrar tekrar kullanabileceğimiz parçalardır.

Nesne Tabanlı Programlamanın temelini oturtmak sizi çok fazla yükten kurtarmış olacaktır, çalışma düzeninizi de olumlu yönde etkileyeceğini düşünüyorum. Çünkü bu düzende çalışmaya devam edersiniz projenizi daha iyi ve planlı yöneteceksiniz. Neyi nereye koyduğunuzu, hangi işlemi nerede yaptığınızı daha net bir şekilde göreceksiniz.

Nesne Tabanlı Programlamanın 3 ana prensibi vardır.

  1.  Encapsulation (Kapsülleme)
  2. Inheritance (Kalıtım)
  3. Polymorphism (Çok Biçimlilik)

Şimdi bunları inceleyelim.

Encapsulation (kapsülleme)

Encapsulation Türkçe kapsülleme anlamına geliyor. Bu prensip obje hakkındaki bilgiler ve işlemlerdir. Metotlar ve özellikler olarak da adlandırabiliriz. Genel olarak baktığımızda nesnenin niteliklerini ve işlemlerini ortaya koyarız. Herhangi bir nesne düşünelim mesela araba olsun. Arabanın rengini, boyutunu ve markasını biliyoruz. Bu özelliklerin tamamı encapsulation prensibinde ortaya koyulur.

Inheritance (kalıtım)

Inheritance Türkçe kalıtım anlamına geliyor. Kalıtım prensibi olan bir nesnenin yeni bir nesne oluşturmasını ortaya koyar. Araba örneğinden devam edecek olursak, araba için motor, şanzıman, demir vs. gibi ekipmanlar gerekmektedir. Kalıtım prensibi nesnelerden ortaya çıkan nesneleri ortaya koymaktadır. Gelişim olarak da tanımlayabiliriz aslında, olan bir şeyi farklı şekillerde geliştirerek, birleştirerek ortaya yeni şeyler çıkarıyoruz.

Polymorphism (çok biçimlilik)

Polymorphism Türkçe çok biçimlilik anlamına geliyor. Çok biçimlilik prensibi birçok nesne tarafından kullanılabilme durumudur. Araba örneğimizden devam edersek ayna ve tekerlek farklı iki tane nesnedir. Farklı nesneler olsa da dönme işlemi ikisi içinde geçerli olarak kullanılabilmektedir.

OOP, dağınık ve anlaşılmaz yapıları tamamen ortadan kaldırmaktadır. Yapılacak işi parçalara bölerek daha organize bir şekilde hareket etmemizi sağlar. OOP ile planlı çalışmanın birçok yararı bulunmaktadır. Yazdığımız kodların diğer kişiler tarafından kolayca anlaşılabilmesine de olanaklar sağlamaktadır.

Nesne (Object)

Nesnelerin çalışma mantıkları, sınıfların tam tersine canlıdırlar ve kimlikleri vardır. Nesnelerin fonksiyonları vardır, işlem yoğunluğuna göre bellekte belli bir yer tutarlar. Nesne kendi hakkında ve yapacağı işlemler ile ilgili bilgiler saklarlar. Sınıflarda işlemler, algoritmalar yaratılır, fonksiyonlar oluşturulur ve nesnelerde işlenirler. İlk önce sınıflar yazılır kullanılmayı beklerler biz o sınıftan bir nesne oluşturursak o sınıf anlam taşır hale gelir. Nesnelerin isimlerini sınıflar temsil eder, sınıflar yazılırken nesnelerin kullanımları burada şartlandırılır.

Sınıf (Class)

OOP programlamanın en önemli öğesidir diyebiliriz. Sınıflar sayesinde yardımcı class larımızı ayrı ayrı parçalayabiliriz. Nerede hangi classı kullanacaksak kod karmaşıklığı olmadan direk oradan ona ulaşabiliriz. Programımızda ek bir özellik ekleyeceğimizde onlarca kod arasında karmaşıklığa girmeden o class üzerinden düzenlememizi yapabiliriz. Oluşturulan bir sınıfta veriler ile fonksiyonlar birbirleri ile her zaman bağlı olarak bulunurlar. Sınıflar soyut veri tiplerinden oluşmaktadır. Nesnelerin somutlaşmasını, soyut sınıf veriler sağlamaktadır.

Ara yüz (İnterface)

Ara yüzler sınıfları birleştirici bir rol üstlenirler. Bir classa birden fazla interface rehberlik edebilir. Ara yüzlere yol gösterici rehberlerde diyebiliriz. İnterfaceler yapıları gereği sadece tanımlardan ibarettir. Public olarak kullanılır, içindeki değerlere tekrar public değeri tanımlarsak hata alırız. Bir sınıf birden çok ara yüz çağırabilir, aynı şekilde birden çok ara yüzde istediği kadar sınıfı içinde kullanabilir.

Comments are closed.