Nesne tabanlı programlama namı diğer Object-Oriented Programmiing uygulama geliştirmede kullanılan bir teknolojidir. OOP nin sağladığı standartlarla bileşen (component) programlamasını kolaylaştırmaktadır.
OOP (Object-Oriented Programming) temelde üç prensibe dayanır:
1- Encapsulation
2- Inheritance
3- Polymorphism
Bu terimlere kısaca bir bakalım:
Encapsulation: Nesne hakkındaki bilgiler ve işlemler anlamına gelir. Metot ve özellik olarak adlandırdığımız bu işlemler bir nesnenin niteliklerini(properities) ve işlemlerini(methods) ortaya koyar.
Örneğin bir arabanın rengi, büyüklüğü gibi özellikleri.
Inheritance (miras, etkilenme): Bir nesnenin başka bir nesne üzerine (bir üst nesneden etkilenerek) kurulmasıdır.
Örneğin bir arabanın araba ile bir dolmuşu düşünelim. İkisinin temel olarak sahip olduğu özellik ve metodlar bulunur. Mesela ikisinin rengi vardır, 4 tekeri vardır, camları vardır, bu camlar açılır kapanır (method’lar) bu gibi özellikleri biz araç sınıfında tutup her iki nesneye (araba ve dolmuş) bu sınıftan miras aldırabiliriz.
Polymorphism: Kelime anlamı çok biçimliliktir. Temel olarak bahsedersek oluşturduğumuz bir sınıfın(class) diğer sınıflara(class’lara) işlevlerini aktarma sanatıdır. Genellikle Inheritance ile birlikte kullanılır. Yani Inheritance ve Polymorphism iç içe, kardeş gibidirler.
Örneğin bir sınıfımız olsun. Adı da HesapKitap olsun. Bu sınıfımızın içinde AlanHesapla() şeklinde bir metodumuz olsun. Diğer taraftan da Kare ve Küp şeklinde iki sınıf yazmış olalım. Bu iki sınıfta HesapKitap sınıfından inheritance almış olsun. Bu durumda AlanHesapla metodu Kare sınıfı için farklı hesap yapmalı, Küp sınıfı için farklı hesap yapmalı. Ama sonuç olarak ikiside AlanHesapla() methodunu kullanmalı. Bu durumda AlanHesapla metodu hem Kare sınıfında hem de Küp sınıfında ezilerek kullanılır. Yani çok biçimde kullanılır. Böylece çok biçimlilik uygulanmış olur J
Nesneye dayalı programlamanın metodolojisinde reel dünya ile daha çok ilişkili programlama mantığı ile uygulama geliştirmektir. Yani programlamayı daha anlamlı ve mantıklı işlemlere dayandırmaktır. Tüm kurgular aksiyon ve işlemlerden çok nesnelere dayandırılır. Kurgular mantıksal işlemlerden çok veriler etrafında organize edilir. Peki, bu şekilde düşünüp, bu şekilde tasarlamak ve programlamak bize ne kazandırır?
Avantajları?
1- Programlar işlemleri gerçekleştirecek objeler etrafında organize edilir.
2- Programlar liner mantıksal işlemlerden bağımsız hale gelir.
3- Daha kolaydır ve güncellenmeleri çok daha sağlıklı bir şekilde gerçekleştirilir.
4- Program gerçek hayattaki işlemlerle birebir ilişkilidir.
5- Yazdığımız kodlar tekrar tekrar kullanılabilir. Bizi sürekli kod yazmaktan kurtarır.