Yücel Alkan

Object Oriented Programming (OOP) Nedir?

Merhaba. Bu yazımda neredeyse tüm programlama dillerinde karşınıza çıkan bir yapıdan, OOP yapısından bahsedeceğim. 

OOP ifadesinin açılmış hali Object Oriented Programming'dir. Türkçe'ye ise Nesne Yönelimli Programlama olarak çevrilmiştir. O zaman öncelikle "nesne" kavramını biraz irdelemek gerekiyor. Programlama ve yazılım açısından bakacak olursak nesneyi "özelliği ve/veya eylemi olan her şey" olarak tanımlayabiliriz. Evet, çevrenize baktığınız zaman gördüğünüz her şey aslında bir nesnedir. Örneğin; kalem, masa, bilgisayar, araba, bisiklet, insan, kedi, kuş kısacası her şey. 

OOP, bir yazılım geliştirme mantığı ve felsefesidir. OOP için gerçek dünyanın programlamaya uyarlanmış hali de diyebiliriz. Yani OOP felsefesi, çevrenizde gördüğünüz nesnelerin, programlamaya uyarlanmış halidir, diyebiliriz. 

OOP mantığına göre bir yazılım işlevsel olarak anlamlı parçalara ayrılır. Bu parçaların her biri özellik ve eylem açısından tek tek tanımlanır.Bu parçaların her biri bağımsız bir yapıya sahiptir ancak birlikte çalışarak, bir araya gelerek sistemi meydana getirirler. Bu ifadeler biraz soyut oldu gibi. Gelin bu ifadeleri somutlaştıralım.

Diyelim ki bir futbol bilgi yönetim sistemi yazmak istiyorsunuz. Biraz durup düşündüğünüz zaman büyük ve karmaşık bir proje olduğunu hemen anlayacaksınız. İşte bu tür durumlarda OOP bizim imdadımıza yetişiyor. OOP mantığına göre bu yazılım işlevsel olarak parçalara ayrılır. Örneğin; futbolcular, kulüpler, stadyumlar, maçlar, hakemler, ligler gibi. Ardından bu parçaların her birinin özellik ve eylemleri tanımlanır. Örneğin futbolcuların ad soyad, boy, kilo gibi kişisel ve fiziksel bilgilerinin yanında kulübü, gol sayısı, asist sayısı, mevkii gibi mesleğe dair bilgileri tanımlanır. Ardından futbolcular için eylemler belirlenir. Mesela bir futbolcu gol atar, asist yapar. Bu durumda asist ve gol sayılarının artması gerekir. Yine futbolcular sarı ve kırmızı kart görür. Kırmızı kartta veya her 4 sarı kartta futbolcular için ceza alma eylemi tanımlanır. Yine mesela futolcular transfer olur. Bu durumda da takımlarının değişmesi gerekmektedir.

Yine bu parçalardan biri olan kulüpleri ele alalım. OOP mantığına göre bakacak olursak kulüplerin isimler, renkler, kuruluş yılları, maçlarını oynadıkları stadyumlar gibi özellikleri tanımlanır. Ardından bu kulüplerin eylemleri tanımlanır. Örneğin bir kulüp maç yapar puan kazanır, futbolcu transfer eder gibi. 

Farklı bir örnek verelim. Diyelim ki büyük bir kütüphane yazılımı yazmak istiyorsunuz. Bu yazılımı OOP mantığına göre kitaplar, üyeler, yazarlar, yayınevleri gibi parçalara ayırabiliriz. Önce bu parçaların her birinin özellikleri tanımlanır. Örneğin; kitapların adı, sayfa sayısı, yazar(lar)ı, yayınevi gibi özellikleri vardır. Yine mesela üyelerin ad soyad, TC Kimlik, bölüm gibi bilgileri vardır. Ardından eylemler tanımlanır. Mesela üyeler kitap ödünç alabilir. 

Bu kadar örnek ve tanımlamadan sonra artık OOP kavramlarını incelemeye geçebiliriz. 

OOP Kavramları

Object Oriented Programming mantığına göre yazılım geliştirebilmek için bilmemiz gereken birkaç kavran bulunuyor. Bu kavramları sınıf, değişken, fonksiyon ve nesnedir. 

Sınıf: Günlük hayattaki nesnelerin, yazılımı meydana getiren olan her bir parçanın programlama dili içerisinde özelliklerinin ve eylemlerinin tanımlandığı yapılardır. Herhangi bir nesne, programlama dili içerisinde tanımlanırken sınıf yapısı kullanılır. Örneğin; futbolcu class'ı, kulüp class'ı, lig class'ı; kitap ve üye class'ı gibi. Bu sınıf içerisinde nesnelerin özelliklerini tanımlamak için değişken, eylemlerini tanımlamak için ise fonksiyon kullanılır. 

Değişken: Sınıf içerisinde nesnelere ait özellikleri tanımlamak için değişkenler kullanılır. Örneğin; futbolcu class'ı içerisinde futbolculara ait ad soyad, boy, kilo, takım, gol sayısı, asist sayısı gibi tüm özellikler için değişken tanımlamaları yapılır. 

Fonksiyon: Sınıf içerisinde nesnelere ait eylemleri, işlemleri tanımlamak için fonksiyonlar kullanılır. Örneğin; futbolcu class'ı içerisinde futbolculara ait gol atma, asist yapma, kart görme, ceza alma gibi eylemleri tanımlamak için fonksiyonlardan faydalanılır. 

Nesne: Artık programlama içerisinde nesnenin ne olduğunu çok daha net açıklayabiliriz. Özelliklerini ve eylemlerini tanımladığımız bu class ile türetilen her bir yapı nesne olarak isimlendirilir. Biz örneğimizde futbolcu adında bir class tanımı yapıp özelliklerini (değişken) ve eylemlerini (fonksiyon) tanımladık. Şimdi bu class'ı kullanarak oluşturduğumuz her bir yapı, örnek (instance) nesne olarak isimlendirilir. Örneğin; bu sınıfı kullanarak Mohamed Salah'ın özelliklerini içeren bir nesne üretebiliriz. Yine bu snıfı kullanarak Messi ve Ronaldo adında nesneler üretip, bu futbolcuların özelliklerini bu nesneler yardımıyla tanımlayabiliriz. 

Sınıf ve Nesne ilişkisini ve yapısını aşağıdaki görsel üzerinden çok daha net anlayabiliriz.

Başka bir örnekle devam edelim. Diyelim ki araba adında bir class oluşturduk ve bu class yardımıyla arabalara ait özellikleri (mesela; marka, model, renk, vites türü, maksimum hız gibi) ve eylemleri (çalıştır, hızlan, fren yap gibi) tanıtıp, bu sınıftan istediğimiz kadar nesne üretebiliriz. Aşağıdaki görsel üzerinden bunu daha net anlayabiliriz. 

OOP - Nesne Yönelimli Programlama'nın Avantajları

OOP yani nesne yönelimli programlama her şeyden önce proje yönetimini kolaylaştırır ve zamandan tasarruf etmenizi sağlar. Çünkü projeyi oluşturan her bir yapı class olarak tanımlanacağı için (modül) sorun yaşadığınız veya değişiklik yapmak istediğiniz yapıyı kolayca bulup istediğiniz işlemleri gerçekleştirebilirsiniz. 

OOP, esnek bir yapı sunar. Oluşturduğunuz class'ları istediğiniz gibi düzenleyebilir, genişletebilir yani yeni özellikler ekleyebilirsiniz. 

OOP yapısı ile oluşturulan her bir class birbirinden bağımsız bir yapıya sahiptir. Bu nedenle projenizde bulunan bir class'ı başka projelerinize kolayca entegre edebilirsiniz. 

OOP yapısı ile bir nesneye ait bilgiler gizlenebilir veya hangi durumda bu bilgilere erişim sağlanacağı veya bu bilginin değiştireceği belirlenebilir. 

OOP yapısı ile hata ayıklama işlemi kolaylaşır. 

OOP yapısı inheritance yani kalıtım ve miras alma işlemini destekler. Oluşturduğunuz herhangi bir yapıyı miras alarak geliştirme işlemi yapabilirsiniz. Örneğin; araç adında bir class tanımlayıp ardından otomobil, kamyon, tır gibi class'ları tanımlarken bu araç class'ını miras alabilirsiniz. Miras alınan class içerisindeki değişkenleri ve fonksiyonları kullanabilirsiniz.

Konuyla ilgili video derse aşağıdan ulaşabilirsiniz. 


Soru ve görüşlerinizi yorum olarak belirtebilirsiniz. Hayırlı çalışmalar dilerim.

25.05.2020
13183
Yorumlar
Bu içeriğe henüz yorum yapılmamıştır. İlk yorum yapan siz olun!
Yorum Yapın