Documentación de HispanoLang

Referencia completa de sintaxis, comandos y características del lenguaje

🏗️ 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étodos
clase 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: 12

Resumen de clases:

  • clase NombreClase - Define una clase
  • constructor() - Inicializa propiedades
  • este.propiedad - Accede a propiedades
  • nuevo Clase() - Crea instancia
  • Los métodos encapsulan comportamiento