(Object Oriented Programming-Nesneye Yönelik Programlama)
Merhaba arkadaşlar..
Az da olsa yazılım bilgisine sahip olanların bile çok duyduğu bu kavram programlamada devrim olarak bilinir. Bundan sonra OOP olarak sesleneceğimiz bu kavram, ilk olarak 1960 yılların başlarında, C++ dilinin getirdiği bir yazılım tekniğidir. Gitgide gelişen ve aynı zamanda uzayan kod karmaşasından kurtulmak için doğmuş bir gereksinimdir. Her ne kadar C++ dili bu tekniğe öncülük ettiyse de tam anlamıyla hakkını verememiştir. İlk olarak, Java Programlama dili, OOP kavramını tam anlamıyla kullanmıştır. C# diliyse arkadaşlar sizin de tahmin ettiğiniz üzere full OOP tekniğinden meydana gelmektedir.
Peki nedir bu OOP kavramı, nerelerde ve nasıl kullanılır, prensipleri nelerdir? Bu sorulardan önce OOP kavramının oturması için OOP 'yi açmamız gerekir. Nesneye yönelik programlama diyoruz, iyi de nedir bu nesne, programda nesnenin işi ne? Arkadaşlar OOP, günlük hayatın bir kesitinin dijital ortama aktarılmasıdır. OOP tekniğinin, yazılımda devir olarak tanımlanması ve yazılımcıların da kodlara aşık olmasının en büyük sebebidir. Örneğin arabanın parçaları vardır. Bu parçaların modelleri sadece bu arabada kullanılmamıştır. Araba bu parçaları kullanarak bir çok işlevini yerine getirir. Her araba için ayrı ayrı parça icat edilmez. Bir kere icat edilir, defalarca üretilir. Örneğin teker yenilenecekse, eski tekere ek özellikler eklenerek yeni teker oluşturulur, her seferinde icat edilmediğinden dolayı zamandan tasarruf da sağlanmış olur. Fakat eski tekerin alıcısı hala vardır, çünkü daha ucuzdur. Görüldüğü üzere burada bir modülerlik, tekrar kullanılabilirlik vardır.
Örneğin bir mimar bir ev projesi hazırlar. Bu proje bizim için class 'tır. Kullanılmadığı sürece bir işe yaramaz. Yani o evde yaşayabilmek için projenin hayata geçmesi gerekir. "new" keyword 'u ile bu proje hayata geçer ve bina inşa edilir. Bina inşa edilirken tabi ki öncelikle, binanın inşa edileceği arsa belirlenmelidir. RAM'in heap bölümünden arsa yani nesneyi inşa etmek için belirli bir hafıza alınır. Class 'lar referans tip olduklarından dolayı 16 bitlik bir hafıza söz konusudur. Stack bölümünde ise, işte bu arsanın adresi tutulur.
Mimarın yaptığı bu proje sadece bir ev yapımında mı kullanılabilir? Hayır tabi ki de bir projeden yüzlerce ev meydana gelebilir. Madem OOP de gerçek hayatın bir yansıması demiştik, o zaman da bir class 'dan yüzlerce örnek (instense) alınabilmesi gerekir. Aynen öyle arkadaşlar.
Bu örneklerin ışığında OOP 'nin bize ne sağladığına bir bakalım;
- Reusability (Tekrar kullanılabilirlik, modülerlik)
- Extensibility (Genişletilebilirlik)
- Maintability (südürülebilirlik)
İşte bu nedenlerden dolayı OOP candır. Kullanmamak gereksiz yere kod yükü, gereksiz zaman harcama demektir yani enayiliktir.
Görüldüğü üzere nesneler, değer ve davranıştan ibarettir. OOP işte bu nesneleri oluşturarak programlama yapabilen bir yazılım tekniğidir. Nesneler de class 'lardan üretilir. Bir nesne içinde bulunduğu class 'a göre değer ve davranış sergilemektedir. Örneğin şöför nesnesi araba kullanırken farklı, alışveriş yaparken farklı değer ve davranışlara sahiptir.
Sınıflar oluşacak nesnelerin değer ve davranışlarından meydana gelir demiştik. Burada değer "field" olarak adlandıracağımız değişkenlerdir. Davranışlar ise bu değerleri kontrol etmeye(değerleri okuma veya değerlere atama yapma) ya da değerleri kullanarak iş yapmaya yarayan metodlar olacak.
Bir kişi sınıfım olsun. Bu sınıftan instense aldığımda bir kişi nesne örneği oluşturayım. Ana class 'ımda intellisense 'de bu kişinin tüm değerlerini ve davranışlarını görebilirim. Aşağıdaki resimde zarf tutan el işaretleri tanımladığım "property" lerdir yani değerlerdir.
"Herşey bir nesnedir, fakat nesne hiç bir şeydir."
OOP hakkında aklınızda az da olsun bir fikir canlandırabildiysem ne mutlu bana. Diğer OOP yazılarında görüşmek dileğiyle...
Hiç yorum yok:
Yorum Gönder