Объектно-ориентированное программирование
В этом руководстве представлена модель ООП, используемая в Eiger, включая Классы и Датаклассы.
Классы
Класс определяет схему объектов. Он может содержать свойства и функции (методы), а также поддерживает конструкторы для инициализации объектов.
Синтаксис
class ClassName
let [modifiers] propertyName
~ Функция `new` действует как конструктор.
func new(parameters)
~ `this` - ссылка на текущий объект.
this.propertyName = parameter
end
end
Пример
class Person
let private m_name
let private m_age
let private m_birthYear
~ Конструктор
func new(name, age, birthYear)
this.m_name = name
this.m_age = age
this.m_birthYear = birthYear
end
~ Метод
func summary()
ret (m_name + " (" + m_age.asString + " years old, born " + m_birthYear.asString + ")")
end
end
~ Создание объекта класса из "чертежа" (класса)
let personOne = Person("John", 25, 2000)
~ Вызов метода summary в personOne
emitln(personOne.summary())
Функции
- Свойства объявляются с помощью
let
, как и переменные - Модификаторы доступа:
public
(по умолчанию): Доступно из любой точки в программеprivate
: Доступно только внутри класса
- Конструктор:
- Объявлено с помощью
func new(params)
- Используется для инициализации объекта.
- Объявлено с помощью
Датаклассы
Класс данных (датакласс) определяет группу статических свойств. Он ведет себя как класс, но не имеет конструктора.
Синтаксис
dataclass ClassName
let [modifiers] propertyName = value
func method(params)
~ ...
end
end
Пример
dataclass math
~ Mathematical Constants
let readonly pi = 3.14159265358979323846
let readonly e = 2.718281828459045
~ get the unsigned value of a number
func abs(n)
if n < 0 then
ret -n
else
ret n
end
end
func sin(theta)
~ ...
end
end
emitln(math.abs(-128))
emitln(math.sin(math.pi))
Функции
- Статический по своей природе: вы не создаете экземпляр класса данных.
- Модификаторы доступа:
public
(по умолчанию): Доступно из любой точки в программеprivate
: Доступно только внутри класса
- функция
new
не используется.