Sayfalar

6 Aralık 2013 Cuma

Object Oriented Design & Development in Javascript : 1- Class Structure, Inheritance


//Mixed solution from various sources which I cannot remember. Hope it helps
//SuperClass to be Inherited
//Inherit edilecek olan SuperClass
function SuperClass() {
    //Defining class function explicitly
    //Fonksiyonun dışardan tanımlanması durumu
    this.superTest = superTest;
    //Private variable which is usable for only SuperClass
    //Sadece SuperClass a açık olan private variable
    var privateVariable = "aa";
    //Public variable that can be used from everywhere
    //Dışarıdan erişilebilen public variable
    this.publicVariable = "bb";
    //Reaching public and private variables from private method
    //Private methodun public ve private variable'lara erişimi
    var privateFunction = function () {
        return privateVariable + " " + self.publicVariable;
    }
    //Using private variable in a public method
    //Private variable' ın public bir methodda kullanılması
    this.getPrivateVariable = function () {
        return privateVariable;
    }
    //Using private method in a public method
    //Private methodun public bir methodda kullanılması
    this.runPrivateFunction = function () {
        return privateFunction();
    }
    //To make SuperClass's methods be able to reach public variables of the Class
    //Private methodların public method ve variable' lara erişebilmesi için self kullanıyoruz
    var self = this;
}

//Subclass that is inheriting SuperClass
//Inherit eden SubClass
function SubClass() {
    //Inheritance
    //Super Class inheritance olayı
    this.inheritFrom = SuperClass;
    //Running SuperClass' constructor from SubClass (like java Super())
    //SuperClass constructorının çağrılması bu constructor() methodu içerisinde de yapılabilir karar veremedim
    this.inheritFrom();
    //Implementing method explicitly
    //Medhodun dışardan tanımlanması
    this.subTest = subTest;
    //SubClass private method
    //SubClass private methodu
    var subPrivateFunction = function () {
        return self.subTest();
    }
    //Running private method from public method
    //Public method ile private methodun çalıştırılması
    this.runSubPrivateFunction = function () {
        return subPrivateFunction();
    }
    //To make SubClass's methods be able to reach public variables of the Class
    //Private method ve variable' ların public method ve variable' lara erişebilmesi için
    self = this;
}

function superTest() {
    return "superTest works!";
}

function subTest() {
    return "subTest works!";
}


var objectFromSubClass = new SubClass();

Hiç yorum yok:

Yorum Gönder