Nesneye Dayalı Programlama ve Prensipleri

Batuhan Düzgün tarafından yayınlanmıştır 13. October 2010 06:37

Merhaba arkadaşlar,uzun süreden beri sizler için makale yazamadım.Öncelikle özür dilerim,bunun sebebi her iki bölümden de bitirme tezlerini almam ve bu konular üzerine yoğunlaşmam oldu,bunun yanında yeni dönemin,benim için son dönemin başlamasının telaşı vardı.Bu yazımda sizlerle birlikte "Nesneye Yönelik Programlama"  konusuna değineceğim,tanımını yapacağız ayrıca prensipleri üzerinde duracağım.
 
Nesneye Dayalı Programlama Nedir? 
 
    Nesneyedayalı programlama aslında bir yazılım geliştirme prensibidir.Nesne dayalıprogramlamayı anlatmadan önce,yerine kullanılan yazılım geliştirme tekniğindenbahsedelim. Nesneyedayalı programlamadan önce,İşleve dayalı (Prosedürel) programlama tekniğivardı.Bu teknik bildiğimiz üzere metodlara (fonksiyonlar) dayanmaktadır. Fakat,yazılımgeliştirmenin zamanla daha karmaşık bir hal alması,gerçek dünyaya ilişkinproblemlerin Prosedürel programlama tekniğiyle çözülemez duruma gelmesine yol açtı.İşte bu çözümsüzlüknoktasında yeni bir tekniğin geliştirilmesi gerektiği fark edildi.Bu teknikNesneye dayalı programlama tekniğidir.  Yazılımgeliştirme mantığını nesne oluşturarak gerçekleştirmek üzere temel alan birtasarım disiplinidir.
 
    Bu teknikte yazılımcı kendi veri tiplerini oluşturabilir.Vebu tasarladığı nesneler ile sisteme ait çözümü sunar.Nesne yönelimliprogramlama tekniği uygulanırken,probleme yönelik sorumuz “Bu sistem ne işyapar?” değil kuracağım sistem veya çözümümde hangi nesneler olacak sorusu sorulmalıdır.
 
Nesneye Dayalı Tarihçesi ... 
 
 Nesneyedayalı programlama tekniği ile ilgili çalışmalar 1960 yıllarında başladı.Nesne veörnekleme kavramı ilk MIT tarafından ortaya atıldı.Simula 67 adındakiprogramlama dilinde ilk defa “nesne” kavramı yer aldı.Nesneler ilk defa Simula67 programlama dilinde kullanıldı.Simülasyon yapmak için,Kristen Nygaard veOle-Johan Dahl tarafından Norveç’te geliştirildi.Gemilerleilgili yapılan bir Simula projesinde,gemilerin farklı kategorilere aitoldukları farkedilmiş,bir sınıflama mantığının olduğu görülmüştür.Bununardından “sınıf” mantığı çerçevesinde ilgili kategoriye ait geminin verileri buveri yapısında tutulması düşünülmüştür. 
 
SmallTalk ile Nesneye Dayalı Kavramının Çıkışı ... 
 
Nesneyedayalı kavramı ilk defa SmallTalk programlama dilinde ortayaçıkmıştır.SmallTalk ile nesne oluşturmak,silmek,değiştirmek gibi işlemlergerçekleştirmesi sağlanmıştır.Ayrıca “Kalıtım” konusu ilk defa bu dildegörülmektedir.1980’deC++ ile birlikte nesneye dayalı programla yapılabilecek bir dil ortaya çıktı.Buyıllarda MAC OS X işletim sistemlerinin GUI(Görsel)  arayüzü nesneye dayalı programlama açısındanönemli bir örnek teşkil etmekteydi. 
 
Nesne ve Sınıf Kavramları ... 
 
Nesne: Gerçek dünyada karşılığı olan ve tanımlanabilen her şey nesnedir.Birotomobil,bir insan,bir  banka binası,birbilgisayar birer nesnedir.Yazılımdünyasında gerçek hayat nesnelerinin yansıması kodlama ile veri yapısınadönüştürülür ve kullanılır.Mesela,insan bütün özellikleriyle yazılımdünyasında modellenebilir.Misal adı,soyadı,yaşı,mesleği olarak,aynı zamanda boyu,kilosu,göz rengi, saç rengişeklinde de modellenebilir. 
 
Sınıf : Yazılım dünyasında nesne üretmek için belirlikurallarla tasarlanmış nesne üretme taslakları diyebiliriz.Nasıl ki gerçekdünyada bir binanın yapımı için kağıt üzerinde belli bir taslak varsa ve binanesnesi bu kağıt üzerindeki taslağa göre üretiliyorsa.Yazılım alanında da bu işaslında tam olarak buna benzer.Şöyle ki yazılımcılar yazdıkları sınıflar ileüretilecek olan nesnelerin kalıbını yaparlar.Daha sonra bu kalıba uygun olaraknesne üretme işlemini yaparlar.Şöyle bir örnekle tam olarakşekillenecektir.Döküm işlemi yapmak için çelikten bir çiçek kalıbı yaptığımızıdüşünelim,bu çiçek motifli kalıp bizim sınıf’ımızdır.Bu kalıp içine erimişkurşun dökerek bir çiçek motifi üretilmesi işlemi de kalıba bağlı nesne üretmeişlemidir. 
 
Nesneye Dayalı Prensipleri Nelerdir ? 
 

  Soyutlama

—  *ÇokBiçimlilik

—  * Kalıtım

—              *Kapsülleme 
 
 

1-)Soyutlama : Kısa olarak bir işin detaylarından kişiyi veyakullanıcıyı kurtarma olayıdır.Bunu somut bir örnekle ifade edecekolursak,işletim sistemlerini örnek olarak verebiliriz.İşletim sistemleribizleri bilgisayarın donanımla ilgili detaylarından kurtarır.Mesela biz bir ağabağlan dediğimiz zaman sadece tıklama ile işimizi görebiliyoruz.Fakat,arkaplanda yapılan bir çok işlemi bizler görmüyoruz.Yani bizi bu detay işlerdensoyutlamış oluyorlar.

 

Örnek :

Kullanıcı yazdığınız program aracılığıyla kayıt girme işlemiyapacak diyelim.Eğer ki siz kayıt girme esnasında kullanıcıya kayıt ekleme ileilgili işlem için gereken SQL cümlesini parametre olarak isterseniz,kullanıcıyıyapılan işin detaylarıyla boğmuş olursunuz.Ayrıca kullanılabilirliği azaltmışolursunuz.Fakat,kayıt eklemek için sadece ilgili kutucukları doldurmasını isteyipve tek tuşa tıklama ile kayıt eklemesini sağlarsanız.Kullanıcıyı daha öncekiSQL cümlesi yazma detayından soyutlamış olursunuz. 

2-)Kalıtım : Birsınıfın bir başka sınıfa ait metodları,değişkenleri ve birimlerine sahipolmasına  “Kalıtım” denir.Kalıtım nesneye dayalı için çok önemlidir.Özelliklemodüler yapılar oluşturmak için,kod tekrarını önlemek için gayet gereklidir.Kalıtımsayesinde ata sınıfta yer alan metodlar ve değişkenler bir daha yazılmakzorunda kalmaz.Kalıtım ile birlikte alt sınıflara ata sınıftan bağımsız yeniözellikler  eklenebilir,genişletilebilir. 

3-)Kapsülleme : Buişlem daha çok sınıf içinde işlem yapan dışarı ile bağlantısı olmayanbileşenler içindir.Yani şöyle ki bir sınıf yazdığımızı düşünelim.Bu sınıftabazı metodlar  diğer sınıflarlaetkileşime geçebilmek için  erişilebilirdurumda olacaktır.Fakat,bazı metodlar ise sadece sınıf içindeki metodlara veya kod bloklarına yardımcı olmak içintasarlanırlar.Diğer sınıfların erişmesine gerek olmayan sınıflardır.Birelektronik cihazın içindeki elektronik devre ile kullanıcının işi olmaz.Busarmalama yöntemiyle kullanıcıdan soyutlanmıştır.İşte sınıf içindekiözelliklerin veya metodların özelliklerini kısıtlama yöntemine kapsülleme denmektedir.

4-)Çok Biçimlilik :Şekilden şekle girme diyebiliriz.Tabirimiz biraz ilgici olabilir kabul ediyorumama işin özeti gerçekten de şekilden şekle girmedir.

Şimdi Nesneye dayalı programlamanın yapıtaşlarındna birikalıtımdır.İşte Çok Biçimlilik olayı da kalıtım ile iç içedir.Çok biçimlilikaralarından kalıtım ile bağ kurulmuş alt sınıfların ata sınıftan bir referansaatanabilmesidir.Örnekle hemen açıklayalım.

Sekil Cisim=new Kare();

Sekil Cisim=new Daire();

Sekil Cisim=new  Cizgi();

Yukarıdaki örnekte görüldüğü gibi Sekil tipinden “Cisim”adlı referansa “new” anahtarkelimesi ile farklı farklı sınıflara ait nesneleri üretip atama işlemiyapabiliyoruz.İşte Çok Biçimlilik temel olarak bunu kasteder. 

SAÜ Bilgisayar Topluluğu adına gerçekleştirdiğim eğitim slaytı aşağıdaki linkte mevcuttur.

http://rapidshare.com/files/424657865/Nesneye_Dayalae__Programlama.rar

Evet arkadaşlar genel olarak Nesneye Dayalı Programlama üzerine bir göz atma yazısı şeklinde bir yazı oldu.Bir sonraki makalemde görüşmek dileğiyle ...

Batuhan Düzgün

Sakarya Üniversitesi

Bilgisayar Mühendisliği 

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Nesneye Yönelik Programlama

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  September 2018  >>
MoTuWeThFrSaSu
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

Yazıları geniş takvimde göster