Skip to content

Object-Oriented Programming

This guide introduces the OOP model used in Eiger, including Classes and Dataclasses.

Classes

A class defines a blueprint for objects. It can contain properties and functions (methods), and it supports constructors for initializing instances.

Syntax

class ClassName {
    let [modifiers] propertyName

    ~ The `new` function acts as a constructor.
    func new(parameters) {
        ~ `this` is a reference to the current class instance.
        this.propertyName = parameter
    }
}

Example

class Person {
    let private m_name
    let private m_age
    let private m_birthYear

    ~ Constructor
    func new(name, age, birthYear) {
        this.m_name = name
        this.m_age = age
        this.m_birthYear = birthYear
    }

    ~ Method
    func summary() {
        ret (m_name + " (" + m_age.asString + " years old, born " + m_birthYear.asString + ")")
    }
}

~ Creating a class instance from a "blueprint" (class)
let personOne = Person("John", 25, 2000)

~ Calling the summary method in personOne
emitln(personOne.summary())

Features

  • Properties are declared with let, just like variables
  • Access Modifiers:
    • public (default): Accessible from anywhere
    • private: Accessible only within the class
  • Constructor:
    • Declared with func new(params)
    • Used to initialize the object