Merhaba arkadaşlar nesne yönelimli programlama(object oriented programming) konusunu birkaç makale altında anlatmaya çalışacağım. C#.Net ile program yazmaya başlayanlar bu dilin nesne yönelimli olduğunu duymuştur. Peki nedir bu nesne yönelimli programlama? Ya da neden ihtiyaç duyarız?
Aslında OOP yaklaşımı özü itibariyle insanı taklit eder. Dünya üzerindeki ilk insanlar, kendi ihtiyaçlarını kendileri karşılamak zorundaydılar. Uzun yıllar geçtikten sonra yani toplum kavramı ortaya çıkmaya başladığında insanlar belirli alanlarda branşlaşmaya başladılar. Bu branşlaşma ile birlikte insanlık çok daha hızlı gelişti. Bununla birlikte de insanların ihtiyaçları çok fazlalaştı.
Telefonun icadını örnek vermek gerekirse Graham Bell telefonu icat etti. Telefon seri olarak üretilmeye başlandı. Zaman geçtikçe, telefona yeni özellikler eklendi. Telefonun en ilkel halinde bulunan özelliklere “yeniden kullanılabilirlik” diyebiliriz. Ayrıca zamanla gelişen ve ortaya çıkan özelliklerine de “geliştirilebilirlik” diyebiliriz.
Gelin biraz da programlama mantığıyla işe yaklaşalım… OOP öncesinde; binlerce belki on binlerce satır kod bulunan yazılım ürünleri o zaman da vardı. Bu yazılımları geliştiren insanlar; aynı işi yapacak kodları tekrar tekrar yazdılar. Bu da maliyeti çok artırdı. Çünkü en ufak bir değişiklik bile kodda büyük değişimlere neden oluyordu. Artan yazılım talebi de doğal olarak karşılanamıyordu.
İşte tam bu noktada OOP mantığı devreye girdi. Tıpkı insanların zamanla branşlaşması gibi kodlar da kendi aralarında görevlerine, yaptıkları işlere göre bölümlere ayrıldılar. Bu bölümlere class(sınıf) dersek yanlış olmaz. Biz bu sınıflardan nesneler üreterek ihtiyacımız olan yerlerde kullanmaya başladık. Hem de tekrar tekrar aynı kodları yazmadan.
Yukarıda verdiğim örneği dikkate alarak bir telefon satıcısının kullanacağı programı yazacağımızı düşünelim. Bu tip bir projede telefon nesnesine ihtiyacımız olacak. Peki bu telefonun ne gibi özellikleri olmalı?
- Marka
- Model
- İşlemci
- Kamera
- Renk
- Fiyat
Yukarıdaki özellikler şimdilik yeterli. Bu özelliklere sahip bir telefon nesnesi oluşturalım.
namespace OOP_1_Class { class Telefon { string marka; string model; string islemci; string kamera; string renk; int fiyat; } }
Şimdi Telefon nesnemizi yaratalım ve özelliklerine erişmeye çalışalım.
Gördüğünüz gibi Telefon nesnesi üzerinde tanımladığımız özelliklere erişemedik. Çünkü nesnemizin içindeki özelliklerin erişim düzenleyicisi(access modifier) private yani özel. Bu özelliklerin başına public yazar isek erişim sağlayabiliriz.
namespace OOP_1_Class { class Telefon { public string marka; public string model; public string islemci; public string kamera; public string renk; public int fiyat; } }
Şimdi de yarattığımız nesnemize özellikler ekleyelim.
namespace OOP_1_Class { class Program { static void Main(string[] args) { Telefon t1 = new Telefon(); t1.marka = "Xperia"; t1.model = "Z2"; t1.islemci = "dsada"; t1.kamera = "20 mp"; t1.renk = "Beyaz"; } } }
Basit olarak nesneler bu şekildeler. Peki yukarıda atağım özelliklerden mesela rengi daha sonradan birisi siyah yapar ise ne olacak? İşte tam burada “encapsulation” kavramı devreye giriyor. Bu da bir sonraki makaleme kalsın.
Bir yanıt yazın