Clases y objetos

Curso de Javascript Online. Desde cero.

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

En el mundo real todos los objetos tienen una serie de características y comportamientos. En Programación Orientada a Objetos, ocurre exáctamente igual.

Fueron introducidas en ES6 (EcmaScript 2015).  Hacen que JavaScript parezca un lenguaje con programación orientada a objetos, pero sólo es azúcar sintáctico sobre la técnica de creación de prototipos existente. Continúa con la creación de prototipos en segundo plano.

Clases

Plantilla o molde a partir de la cual se construye un objeto. Una clase contiene:

  • atributos: propiedades de los objetos (edad, marca, altura, peso…)
  • métodos: acciones que pueden realizar los objetos (corrar, saltar, traducir, pensar…)
class Gato{
	nombre;
	edad;

	jugar(){
		...
	}

	dormir(){
		...
	}
}

Relación entre clases y objetos

Se podría decir que un objeto (o instancia de una clase) es una clase con valores concretos.

La imagen tiene un atributo ALT vacío; su nombre de archivo es objetos-1.svg

Métodos y propiedades de un objeto

Características de un objeto

En programación orientada a objetos, a las características de un objeto las llamamos propiedades, atributos o variables miembro. Por ejemplo, una caja tiene un ancho, un alto, un largo, un peso, un precio, un color, un material…
Estas propiedades o atributos de un objeto sirven para almacenar información del mismo.

Comportamientos de un objeto

En programación orientada a objetos, a los comportamientos de un objeto los llamamos métodos. Los métodos permiten realizar acciones. En el caso de la caja, podría tener los métodos abrir, cerrar… (no se me ocurren más cosas que pueda hacer con una caja y no sean absurdas ٩(^‿^)۶)

Codificación

class Persona {
    edad = 40;

    sacarConversacion() {
        return 'Hola, tengo ' + this.edad;
    }
}

const p = new Persona();

console.log(p.edad);
console.log(p.sacarConversacion());

Llamar a un método de una clase desde otro método de la misma clase

class Persona {
    llamarAlOtroMetodo() {
        this.otroMetodo()
    }

    otroMetodo() {
        console.log('hola que tal');
    }
}

const p = new Persona();

p.otroMetodo();

Constructores

El constructor de una clase es el código que se ejecuta cuando la instanciamos (hacemos new).

class Persona {
    nombre = "";
    edad = "";
    constructor(nombre, edad) {
        this.nombre = nombre;
        this.edad = edad;
    }

    hablar() {
        return 'hola' + this.nombre;
    }
}

const p = new Persona("Juan", 20);

console.log(p.hablar());

Herencia

Cuando una clase hereda de otra, hereda todos sus métodos y propiedades.

class Padre {
    deuda = 300;

    mostrarDeuda() {
        console.log("Mi deuda es: " + this.deuda);
    }
}

class Hijo extends Padre { }


const h = new Hijo();
console.log(h.deuda);
h.mostrarDeuda();

Constructores y herencia

super() es una función especial que llama al constructor de la clase padre.

class Padre {
    constructor() {
        console.log("Soy un padre asombroso");
    }
}

class Hijo extends Padre {
    constructor() {
        super();
        console.log("Tampoco es para tanto");
    }
}

new Hijo();

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.