8 Şubat 2011 Salı

Nesne Yönelimli Programlama - 1

Bir proje düşünün. Bu proje, bir ayakkabı satıcısının kullanacağı bir program olsun. Kesinlikle bu projede bir ayakkabı nesnesine ihtiyacınız olacak öyle değil mi? Peki bu ayakkabı nesnesinin özellikleri neler olmalı? Gelin bir liste yapalım...
  1. Markası
  2. Tipi (Bot, spor, çizme vs).
  3. Malzemesi (Deri, süet vs).
  4. Numarası
  5. Rengi
  6. Bağcıklı mı değil mi?
Bu özelliklere karar verdim. İşte class' ımız (yani fabrikamız) üretilecek olan nesnemizin bu özelliklerini belirlemek durumunda. Hadi o zaman işe başlayalım ve uygun tiplerle classımızı yazalım:
(Aşağıdaki kodlar bir Windows Application projesi içinde yazılmıştır)
Projeye sağ tık, Add New Item, Class diyelim ve aşağıdaki kodları oluşturalım.
class Ayakkabi
{
string markasi;
string tipi;
string malzemesi;
byte numarasi;
string renk;
bool bagcikliMi;
}
Tamam. Şimdi form1'in Form1_Load metodunda, bu class'dan bir nesne üretmeyi deneyelim; 


Fakat o da ne? Ayakkabi classımdan ürettiğim pabuc nesnesinde, istediğim özelliklerden hiçbirine erişemiyorum. Çünkü yazdığım özelliklerden hiçbirinin erişim düzenleyicisi (Access Modifier) Public değil! Eğer, class içinde tanımladığınız bir alana class dışından erişmek isterseniz; bu alanı public olarak tanımlamalısınız. Bu durumda, eğer bir proje içinde yazdığınız bir classın başka bir projeden erişilebilmesi için de classın başına public kelimesi getirme zorunluluğumuz ortaya çıkar.
Şimdi, bu değişiklikleri yapalım ve tekrar nesne üretmeye çalışalım:
public class Ayakkabi
{
public string markasi;
public string tipi;
public string malzemesi;
public byte numarasi;
public string renk;
public bool BagcikliMi;
}
Değişiklikler tamam. Peki ya nesnemiz? 



İşte şimdi, nesnemde aradığım özellikleri görebiliyorum… Ama burada bir sorun var sanki. Bazı özelliklerin nesne tarafında değiştirilebilmesini kesinlikle istemiyorum. Örneğin ben Ayakkabi fabrikamdan 44 numara olarak ürettiğim ayakkabının sonradan 48 numaraya yükseltilmesini istemem. Fakat bütün değerlerim public olarak tanımlandığından bunu şu an yapabiliyorum! Bu hiç de iyi bir şey değil.
Söz, tam bu noktada encapsulation dediğimiz kavrama geliyor.

YAzar:Türkay ÜRKMEZ
Kaynak:turkayurkmez.com

Hiç yorum yok:

Yorum Gönder