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:
| Forja | Rust / Otros |
|---|---|
este.nombre | self.nombre / this.nombre |
este.edad = 10 | self.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
| Forja | Rust generado |
|---|---|
clase X { ... } | struct X { ... } + impl X { ... } |
constructor(p) { ... } | fn nuevo(p: String) -> Self { ... } |
este.campo | self.campo |
nuevo X(args) | X::nuevo(args) |
objeto.metodo() | objeto.metodo() |