Javascript İle Nesne Tanımlama ve Kullanma
Birçok oop yani nesne yönelimli programlama dilinde olduğu gibi javascriptte bizlere aslında orta düzeylerde nesne desteği sağlar.. Şimdi nasıl nesne oluşturacağız, bakalım..
var insan = function(){ this.ad; this.soyad; this.yas; this.boy; this.cinsiyet; this.memleket;} Evet, gül gibi nesnemiz emrimize amade artık..
Peki biz ne yaptık. "var insan" diyerek bir değişken tanımladık ama "= function()" dediğimizde bu değişkenimize yeni bir foknsiyonun kopyasını yükledik.. Yani artık insan isimli bir fonksiyonumuz var.. Peki nerede bizim nesnemiz.. Aslında fonksiyonmuzun ismi aynı zamanda nesne ismimizde. Yani "insan" fonksiyonu bizim nesnemiz.. İşte bu fonksiyonun içerisindeki "this.ad" gibi tanımlanmış öğelerde aslında nesnemizin methodları.. Bakmayın sadece değer alabildiklerine.. Aşağılarda bu methodları nasıl kendi içinde birer nesneye dönüştüreceğimizide göreceğiz ancak şimdilik görevleri sadece bilgi tutmak... Şimdi öyleyse oop'nin yüzü suyu hürmetine bu sınıftan bir eleman tanımlamak lazım..
var osman = new insan; İşte bu kadar kolay.. "Osman" diye bir insan tanımladık!! Ne kadar insancıl ve günlük hayatta da kullanılan sözler değil mi? Durun öyle nesne yönliminin tüm nimetleri bu kadarla sınırlı değil hemen bitti sanmayın ayıp olur oop'e!! Şimdi şuna dikkat edelim;
osman.ad = "Osman"; osman.soyad = "Osman"; osman.yas = 25; osman.boy = 185; osman.cinsiyet = "Erkek"; osman.memleket = "TÜRKİYE";
Şimdide yukarıda tanımladığımız insan sınıfının bireyi olan osmanın bazı özelliklerini belirledik... Unutmayın ki artık Osmana bir değişkene erişir gibi erişebilir onu konuşturabiliriz..
alert(osman.memleket); derseniz osman bey size memleketini alarm kutusunda çemkirecektir!. Şimdide bir methodu bir sınıfa çevirelim.. Yani buna "genel bir sınıfa alt sınıf tanımlamak" diyerekte tercüme edebiliriz..
var insan = function(){ this.ogrenci = function(){ this.no; this.isim; this.sinif;}} Evet ilk yöntemden farklı bir şey içermiyor.. Sadece değişik bir kombinasyon işledik.. Şimdi çalışmasına bakalım.. Öncelikle yine insan diye genel bir sınıf tanımladık.. Bu sınıfın içinede yine genel ancak insana göre daha özel bir sınıf yani öğrenci sınıfımızı tanımladık.. Öyleyse öğrencilere has bazı bir kaç özelliği yani metodu tanımlamak gerekli ki bizde sınıf ve numara gibi özellikler dahil ettik.. Şimdi kullanıma bakalım..
var osman = new insan; osman.ogrenci.no = 65464; Şeklinde yazarak osmanı tanımlamak onu aynı zamanda bir öğrenci adayı yapıyor.. Çünkü insan sınıfının bir metodu olarak tanımladığımız öğrenci metoduda kendi içinde başka metodlara ayrıldı.. Öyleyse Osmanın öğrencilik özelliklerine erişerek ona öğrencilik bilgileride tanımlayabiliriz.. Bu sadece öğrencilikle sınırlı değil.. Binlerce meslek dalı tanımlanabilir.. Sadece meslekler mi? Statülerde eklenebilir.. Babalık.. Evlat.. Anne.. Eş.. Dede.. Akraba.. Bu statülerin binlerce alt görevi yok mu? Sigara içen çocuğa izin verme. Sabah işe git. Para kazan. Akşam eve ekmek getir. Bulaşık yıka vs vs..... Gördüğümüz gibi sonu yok.. Uygulanamayacak bir alanda yok.. Belki sentaks olarak kullanmayacaksınız bile yukarıdaki anlattıklarımı.. Ama nesne yönelimli dillerin nelere kadir olduğunu biraz olsun anlamış olmanız yeterli.. Kim bilir belkide içinizde duran o programcı çocuk şu nesne yönelimini anlatan açıklamalarla dışarı çıkıverir..
İşte size bir tavsiye.. Piyasada bu yazının tarih ve saati itibarıyla bulabileceğiniz en gelişmiş nesne yönelimli dil olarak microsoftun gelişime tabi tuttuğu C# dilini gösterebiliriz.. Dikkat edin ortalığı kasan kavuran hepsini alt eden dil bu demiyoruz.. Yalnızca nesne yönelimli olması onu değerli kılıyor yoksa hız veya performansı tartışılabilir ancak bu konuda değil...
Hoşçakalın!.