← Todos los tutoriales
language-deep-dive 7 min

Diseñar Clases

Una clase es una plantilla para objetos que comparten la misma estructura y comportamiento. En Clean Language, declaras propiedades en la parte superior de la clase, escribes un constructor que las establece y añades métodos que operan sobre ellas. El compilador lo impone todo.

Una clase con propiedades, un constructor y múltiples métodos:

class Rectangle\n    number width\n    number height\n\n    constructor(number w, number h)\n        width = w\n        height = h\n\n    number area()\n        return width * height\n\n    number perimeter()\n        return 2.0 * (width + height)\n\n    string describe()\n        return "Rectangle " + width.toString() + "x" + height.toString() + ", area: " + area().toString()\n\nstart:\n    Rectangle r = Rectangle(5.0, 3.0)\n    print(r.describe())\n    print("Perimeter: " + r.perimeter().toString())
Rectangle 5.0x3.0, area: 15.0\nPerimeter: 16.0

Las propiedades (width, height) se declaran al principio de la clase. El constructor las asigna. Los métodos acceden a las propiedades por nombre — sin self. ni this. Los métodos pueden llamar a otros métodos directamente: describe() llama a area() para evitar duplicar la lógica.

Cada instancia es independiente — comparten la plantilla pero tienen sus propios datos:

start:\n    Rectangle small = Rectangle(2.0, 3.0)\n    Rectangle large = Rectangle(10.0, 8.0)\n\n    print("Small: " + small.describe())\n    print("Large: " + large.describe())\n\n    boolean fits = small.area() < large.area()\n    print("Small fits inside large: " + fits.toString())\n\n    number total = small.area() + large.area()\n    print("Combined area: " + total.toString())
Small: Rectangle 2.0x3.0, area: 6.0\nLarge: Rectangle 10.0x8.0, area: 80.0\nSmall fits inside large: true\nCombined area: 86.0

small y large son instancias independientes. Llamar a .area() en small usa 2.0x3.0; en large usa 10.0x8.0. Puedes usar los resultados de los métodos de instancia en expresiones, comparaciones y otros cálculos como cualquier otro valor.

Resumen rápido

  • Las propiedades se declaran al principio del cuerpo de la clase con tipo y nombre
  • constructor() asigna valores iniciales — se llama cuando creas una instancia
  • Los métodos acceden a las propiedades por nombre directamente — sin palabras clave self o this
  • Cada instancia es independiente — sus propiedades son separadas de todas las demás instancias
¡Copiado!