jump to navigation

implementando_clases

// author: abaqueiro at gmail.com
// pasando de java a javascript
//en java:

class Punto2D {
        private double _x = 0;
        private double _y = 0;

        public double getX(){
                return _x;
        }

        public double getY(){
                return _y;
        }

        public void setX( double newX ){
                _x = newX;
        }

        public void setY( double newY ){
                _y = newY;
        }
}

//¿como implemento esto en javascript?
//hay 2 grandes aproximaciones (a y b)

//en a
//        sacrificas la privacidad (sin prototype)
//        con esperanzas de poder implementar herencia

//a.1)
Punto2D = function(){
        this._x = 0;
        this._y = 0;
}

Punto2D.getX = function(){
        return this._x;
}

Punto2D.getY = function(){
        return this._y;
}

Punto2D.setX = function( newX ){
        this._x = newX;
}

Punto2D.setY = function( newY ){
        this._y = newY;
}

//a.2) equivalente a a.1
Punto2D = function(){
        this._x = 0;
        this._y = 0;

        this.getX = function(){
                return this._x;
        }

        this.getY = function(){
                return this._y;
        }

        this.setX = function( newX ){
                this._x = newX;
        }

        this.setY = function( newY ){
                this._y = newY;
        }
}

//a.3) equivalente usando prototype
Punto2D = function(){
        this._x = 0;
        this._y = 0;
}

Punto2D.prototype.getX = function(){
        return this._x;
}

Punto2D.prototype.getY = function(){
        return this._y;
}

Punto2D.prototype.setX = function( newX ){
        this._x = newX;
}

Punto2D.prototype.setY = function( newY ){
        this._y = newY;
}

/*
NOTA SOBRE HERENCIA
respecto a la herencia, se puede implementar así:
*/
Punto3D = function(){
        new Punto2D();
        this._z = 0;
}
Punto3D.getZ = function(){
        return this._z;
}
Punto3D.setZ = function( newZ ){
        this._z = newZ;
}
/*
FIN DE NOTA SOBRE HERENCIA
*/

//la otra forma, la opción b, con private

//b.1)
Punto2D = function(){

        // estas son privadas
        var _x;
        var _y;

        this.getX = function(){
                return _x;
        }

        this.getY = function(){
                return _y;
        }

        this.setX = function( newX ){
                _x = newX;
        }

        this.setY = function( newY ){
                _y = newY;
        }
}

Comentarios»

No comments yet — be the first.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: