Object Oriented Programing ( Nesneye Dayalı Programlama ) Ömer SAĞLAM C#.NET 14.02.2010 17:19:05 Hit : 9843 Merhaba dostlarım. Her ne kadar bir önceki yazımızda diğer makalemizde design pattern lerden bahsedeceğiz demiş olsakta, oop hakkında kısa bir giriş yapmadan da devam etmek istemedim. Oop (Object Oriented Programing) mantık gereği nesnelere dayalı bir programlama imkanı sağlarken yazılımcının işini bir hayli kolaylaştırmakta, alt yapı kurulduktan sonra yazılımın devam ettirilme ve anlaşılma noktası kolaylaşmaktadır. Saygı değer konumuza girmişken temel prensiplerden bahsetmemek olurmu :) Object oriented programing yapısının 3 temel prensibi vardır. 1. Encapsulation 2. Inheritance 3. Polymorphism İşte bu kadar. Mülakatlarda bile karşınıza gelebilecek temel bir sorudur :P Neyse işin hikaye kısmına girmeden direk açıklamalara başlayalım. 1. Encapsulation : Bu özellik class içerisinde yazdığımız nesnelerimizin dışarıdan ulaşılmamasını istediğimiz durumlarda saklayarak izin vermememizdir. En sevdiğim kapsülleme durumlarından biri property yaratma yani field ı kapsülleme; isim adında private türünden bir field ımız vardı ve onu kapsülleyerek (get ve set) özelliklerini çıkardık. yeni adı Isim oldu ve dışarıdan erişilebilir bir hale geldi. private ın ne demek olduğunu bir önceki makalemde zaten örnekleriyle birlikte açıklamıştım (Okumak için Tıklayın). Konumuzunda temelini oluşturmakta. 2. Inheritance : İşte nesne tabanlı programlamanın bel kemiği inheritance :) Anlamı kalıtım ya da miras olarak düşünebiliriz. Bunu basit bir örnekle açıklamak istiyorum. Örneğin bir çocuk ve babasını düşünelim. Babası uzun bir dönem çalışıyor çabalıyor ve kendince bir mal varlığına sahip olup zamanı dolunca da Allah (c.c.) Rahmet etsin ölüveriyor. Bu senaryoda tüm mal varlığı eğer 1 çocuğu varsa o çocuğa, 2 çocuğu varsa da 2 çocuğuna paylaştırılıyor. İşte kalıtım yani babadan oğula mantığının altında yatan gerçek budur :)) Hemen bir örnek yazalım. Dikkat edersek iki tane class yazdık. 2. class ımız 1. class ımızdan miras alsın dedik ve 2. class içerisinde bulunda sinif2 metodumuzun içinden 1. class içinde bulunan sinif1 metodumuza ulaşabildik. Bir hayli uzun cümle oldu ama durumu özetledi sanırım. Biraz daha karışık bir örnek vermek gerekirse; Kendi içinde 2 adet property e sahip bir Base yani temel class ımız olsun. Adı da Meyve olsun :) Bir adet daha class ekleyelim ve adına Seftali diyelim. Meyve class ı Seftali class ına kalıtım yolu ile aktarılırsa Seftali class ı içinden Meyve classına ait property lere ulaşabildiğimizi görürüz. Örnekler bu şekilde çoğaltılabilir. Miras yolu çok işimize yarayacak bir durumdur. Zaten sıkça kullanacağımız için unutmamız pek mümkün değildir. 3. Polymorphism : Çok yönlülük anlamına gelen bu terim base diye adlandığımız bir class'ın türlerinin mantıklı bir şekilde ayrılarak formlarına dağıtılması olduğunu söyleyebiliriz. Mantık itibari ile biraz karışık olsada anladıktan sonra pekte sıkıntı yaratacak bir anlamı olmadığını farkediyorsunuz. Basitçe örneklemek gerekirse; 2 adet canlı çeşiti olarak kedi ve köpeğimiz olsun. Bu iki canlı temelde hayvan sınıfından türediği varsayımında bulunursak hayvan class'ı hem kedi için hemde köpek için kullanılabilir değerleri içerir. Yani o artık o değil (Cem YILMAZ dan nağmeler) :) O çok başka bir özelliğe sahip çünkü artık çok yönlü kullanılan bir class ;) Her hayvan için temel özelliklere sahip bir class. İşte size çok amaçlı bir class ve dağıtım mantığı :) Benden şimdilik bu kadar. Kendinize çok iyi bakın ve sağlıcakla kalın. Görüş öneri : omer@omersaglam.com Oop » Object Oriented » Object Oriented Programing » Nesneye dayalı programlama » Nesne tabanlı programlama