Nesneye Dayalı Programlama -1- Giriş


Merhabalar Arkadaşlar,

Yeni bir yazı dizisine başlıyoruz. Neredeyse bütün ileri düzey yazılım dillerinin temelini oluşturan Nesneye Dayalı Programa (NDP) 'yı elimden geldiğince sade bir şekilde anlatmaya çalışacağım.

Neden Yordamsal Programlama değil de Nesneye Dayalı Programlama kullanmalıyız?

Bu sorunun cevabını bulmak için,
Haydi başlayalım...

Yordamsal programlama

Yordamların çağrılması mantığına dayanan bir yöntemdir
Fonksiyon, altyordam, altprogram, metot gibi de adlandırılan yordamlar içlerinde hesaplama adımları barındıran program parçacıklarıdır.
Tanımlanmış yordamlar program sırasında herhangi bir zamanda çağrılabilirler.
Yordamlar diğer yordamların içindende çağrılabilecekleri gibi kendi kendilerini de çağırabilirler.
Büyük boyutlu ve karmaşık işler, daha küçük ve basit işlevlere(yordamlara) bölünerek gerçeklenir.

İşleve dayalı programlama "Böl ve Yönet" mantığına dayanır. Amaç büyük programları küçük parçalara bölerek yazılım geliştirme işini kolaylaştırmaktır.

Ancak, Gerçek dünyadaki sistemler sadece yordamlardan oluşmaz. Sistemin gerçeğe yakın bir modelini bilgisayardan oluşturmak zordur. Programcılar kendi veri tiplerini oluşturamazlar.

Olası verimleri:

Aynı kodu programın farklı yerlerinde kopyalamaya gerek kalmadan kullanabilme.
Program akışını kontrol altında tutmak bir dizi “goto” veya “jump” terimi kullanmaktan daha kolaydır.
Sağlam bir modülerlik ve yapısallık sağlar.


Nesneye Dayalı Programlama

1960'lı yılların sonuna doğru ortaya çıkan bu yaklaşım, o dönemin yazılım dünyasında beliren bir bunalımın sonucudur.
Yazılımların karmaşıklığı ve boyutları sürekli artıyor, ancak belli bir nitelik düzeyi korumak için gereken bakımın maliyeti zaman ve çaba olarak daha da hızlı artıyordu.
NYP'yi bu soruna karşı bir çözüm haline getiren başlıca özelliği, yazılımda birimselliği (modularity) benimsemesidir.
NYP ayrıca, bilgi gizleme (information hiding), veri soyutlama (data abstraction), çok biçimlilik (polymorphism) ve kalıtım (inheritance) gibi yazılımın bakımını ve aynı yazılım üzerinde birden fazla kişinin çalışmasını kolaylaştıran kavramları da yazılım literatürüne kazandırmıştır.
Sağladığı bu avantajlardan dolayı, NYP günümüzde geniş çaplı yazılım projelerinde yaygın olarak kullanılmaktadır.

Nesnelerin yapıları iki bölümden oluşmaktadır.
  1. Nitelikler (Özellikler yada durum bilgileri)(State)
  2. Davranışlar (Yetenekler)(Behaviour)

Yukarıdaki Köpek modelimizi inceleyelim;

  • Özellikleri; Adı, Rengi ,Cinsi, Açlık durumu 
  • Davranışları; Havlama, Alıp Getirme, Kuyruk Sallama
Model bir defa oluşturulduktan sonra, ana programda bu modelden birçok nesne oluşturulabilir. Kopek kopek1, kopek2, kopek3, ..... kopek1.Barking();

Bu nedenle bir programı kodlamaya başlamadan önce "Bu sistem ne iş yapar?" değil, "Bu sistem hangi nesnelerden oluşur ?" olmalıdır.
Örnek verecek olursak,
  • Öğrenci Bilgi Sisteminde; Öğrenci, Akademisyen, Memur...
  • Hastane Otomasyonunda; Doktor, Hemşire, Memur, Hasta...
  • Grafik Programında; Nokta, Silindir, Çizgi, Daire...


NDP'nın Faydalarından bahsedecek olursak,

Nesne modellerinin içindeki veriler sadece üye fonksiyonlarının erişebileceği şekilde düzenlenebilir.
Veri saklama (data hiding) adı verilen bu özellik sayesinde verilerin herhangi bir fonksiyon tarafından bozulması önlenir.
Programcılar kendi veri tiplerini oluşturabilirler.
Bir nesne modeli oluşturduktan sonra bu modeli çeşitli şekillerde defalarca kullanmak mümkündür.
Nesneye dayalı yöntem takım çalışmaları için uygundur.