Clases y POO

Forja soporta programación orientada a objetos con clases, constructores, métodos y el keyword este (equivalente a self en Rust o this en otros lenguajes).

Estructura de una clase

🧱 Plantilla
clase Nombre {
    campo1
    campo2

    constructor(param1, param2) {
        este.campo1 = param1
        este.campo2 = param2
    }

    funcion metodo() {
        // usar este.campo
    }
}

Ejemplo completo

Una clase Estudiante con campos, constructor y métodos:

🎓 Clase Estudiante
clase Estudiante {
    nombre
    edad

    constructor(n, e) {
        este.nombre = n
        este.edad = e
    }

    funcion presentarse() {
        escribir("Hola, soy " + este.nombre +
                " y tengo " + este.edad + " años")
    }

    funcion esMayorDeEdad() -> Booleano {
        retornar este.edad >= 18
    }
}

// Uso
variable alumno = nuevo Estudiante("Ana", 20)
alumno.presentarse()
// → Hola, soy Ana y tengo 20 años

si (alumno.esMayorDeEdad()) {
    escribir("Es mayor de edad")
}

Keyword este

este se refiere a la instancia actual. Se usa para acceder a campos y métodos propios desde adentro de la clase:

ForjaRust / Otros
este.nombreself.nombre / this.nombre
este.edad = 10self.edad = 10

Keyword nuevo

Instancia una clase y (si existe) llama al constructor automáticamente:

🚀 Instanciación
variable p = nuevo Persona("Juan")    // con constructor
variable q = nuevo Punto()               // sin constructor

Clase sin constructor

Si no definís un constructor, los campos se inicializan con nulo:

📍 Punto 2D
clase Punto {
    x
    y
}

variable p = nuevo Punto()
escribir(p.x)  // → nulo (no inicializado)

Equivalencia con Rust

ForjaRust generado
clase X { ... }struct X { ... } + impl X { ... }
constructor(p) { ... }fn nuevo(p: String) -> Self { ... }
este.campoself.campo
nuevo X(args)X::nuevo(args)
objeto.metodo()objeto.metodo()