🏗️ Clases
Las clases son plantillas para crear objetos con propiedades y métodos. Permiten programación orientada a objetos en HispanoLang.
Definición de Clases
Define clases usando la palabra 'clase' con un constructor y métodos.
clase NombreClase con constructor y métodosclase Persona {
constructor(nombre, edad) {
este.nombre = nombre
este.edad = edad
}
saludar() {
retornar `Hola, soy ${este.nombre}`
}
cumplirAnios() {
este.edad = este.edad + 1
mostrar `${este.nombre} ahora tiene ${este.edad} años`
}
}
variable juan = nuevo Persona("Juan", 25)
mostrar juan.saludar() // Hola, soy Juan
juan.cumplirAnios() // Juan ahora tiene 26 años- clase NombreClase con llaves - Define una clase
- constructor(params) - Inicializa la instancia
- este.propiedad - Accede a propiedades de la instancia
- Los métodos se definen sin la palabra 'funcion'
Instanciación con nuevo
Crea instancias de clases usando la palabra 'nuevo'.
clase Persona {
constructor(nombre, edad) {
este.nombre = nombre
este.edad = edad
}
saludar() {
retornar `Hola, soy ${este.nombre}`
}
}
variable persona = nuevo Persona("Juan", 25)
mostrar persona.nombre // Juan
mostrar persona.edad // 25
mostrar persona.saludar() // Hola, soy Juan
// Múltiples instancias
variable persona2 = nuevo Persona("Ana", 30)
mostrar persona2.nombre // Ana
mostrar persona2.saludar() // Hola, soy Ana- nuevo Clase(args) - Crea una nueva instancia
- Cada instancia tiene sus propias propiedades
- Los métodos se comparten entre instancias
- tipo(instancia) retorna el nombre de la clase
Propiedades y Métodos
Las clases pueden tener múltiples propiedades y métodos para encapsular comportamiento.
clase CuentaBancaria {
constructor(titular, saldoInicial) {
este.titular = titular
este.saldo = saldoInicial
este.transacciones = []
}
depositar(cantidad) {
este.saldo = este.saldo + cantidad
este.transacciones.agregar({
tipo: "deposito",
cantidad: cantidad
})
mostrar "Depositado: $" + texto(cantidad)
}
retirar(cantidad) {
si cantidad > este.saldo {
mostrar "Fondos insuficientes"
retornar falso
}
este.saldo = este.saldo - cantidad
este.transacciones.agregar({
tipo: "retiro",
cantidad: cantidad
})
mostrar "Retirado: $" + texto(cantidad)
retornar verdadero
}
verSaldo() {
mostrar "Saldo de " + este.titular + ": $" + texto(este.saldo)
}
}
variable cuenta = nuevo CuentaBancaria("María", 1000)
cuenta.verSaldo() // Saldo de María: $1000
cuenta.depositar(500) // Depositado: $500
cuenta.retirar(200) // Retirado: $200
cuenta.verSaldo() // Saldo de María: $1300- Las propiedades guardan el estado del objeto
- Los métodos definen el comportamiento
- este.propiedad accede al estado interno
- Los métodos pueden modificar propiedades
Ejemplo Práctico: Sistema de Productos
clase Producto {
constructor(nombre, precio, stock) {
este.nombre = nombre
este.precio = precio
este.stock = stock
}
vender(cantidad) {
si cantidad > este.stock {
mostrar "Stock insuficiente de " + este.nombre
retornar falso
}
este.stock = este.stock - cantidad
variable total = este.precio * cantidad
mostrar "Vendido: " + texto(cantidad) + " " + este.nombre + " = $" + texto(total)
retornar verdadero
}
reabastecer(cantidad) {
este.stock = este.stock + cantidad
mostrar "Reabastecido: " + este.nombre + " ahora tiene " + texto(este.stock) + " unidades"
}
mostrarInfo() {
mostrar "---"
mostrar "Producto: " + este.nombre
mostrar "Precio: $" + texto(este.precio)
mostrar "Stock: " + texto(este.stock)
}
}
variable mouse = nuevo Producto("Mouse Gamer", 150, 10)
variable teclado = nuevo Producto("Teclado Mecánico", 300, 5)
mouse.mostrarInfo() // ---, Producto: Mouse Gamer, Precio: $150, Stock: 10
teclado.mostrarInfo() // ---, Producto: Teclado Mecánico, Precio: $300, Stock: 5
mostrar ""
mouse.vender(3) // Vendido: 3 Mouse Gamer = $450
teclado.vender(2) // Vendido: 2 Teclado Mecánico = $600
mouse.reabastecer(5) // Reabastecido: Mouse Gamer ahora tiene 12 unidades
mouse.mostrarInfo() // ---, Producto: Mouse Gamer, Precio: $150, Stock: 12Resumen de clases:
- clase NombreClase - Define una clase
- constructor() - Inicializa propiedades
- este.propiedad - Accede a propiedades
- nuevo Clase() - Crea instancia
- Los métodos encapsulan comportamiento