SomonScriptDocsКлассы и модули
Главы 8-9 • Классы и модули

Классы и модули в SomonScript

Классы (classes) и модули (modules) помогают упорядочить код в средних и больших проектах. Здесь мы посмотрим, как создать простой класс и модуль.

1. Простой пример: класс ученика

Сначала создадим простой класс Донишҷӯ, у которого есть несколько свойств и один метод.

Класс ученика

Простой класс с конструктором и методом для вывода данных.

example.som
// Объявление класса ученика
синф Донишҷӯ {
  ном: сатр;
  синну_сол: рақам;

  конструктор(ном: сатр, синну_сол: рақам) {
    ин.ном = ном;
    ин.синну_сол = синну_сол;
  }

  // Метод для вывода данных
  нишон_додан(): беджавоб {
    чоп.сабт("Донишҷӯ: " + ин.ном + ", синну сол: " + ин.синну_сол);
  }
}

// Создание и использование объекта класса
тағ ахмад: Донишҷӯ = нав Донишҷӯ("Аҳмад", 20);
ахмад.нишон_додан();
terminal
somon run classes.som
Донишҷӯ: Аҳмад, синну сол: 20

2. Пример посложнее: класс в отдельном модуле

Каждый файл .som - это модуль. В этом примере файл models.som экспортирует класс с помощью содир, а файл main.som импортирует его с помощью ворид.

Модуль с классами

Два файла в одной папке: models.som и main.som. Запустите программу командой somon run main.som.

example.som
// файл: models.som
содир синф Китоб {
  ном: сатр;
  муаллиф: сатр;

  конструктор(ном: сатр, муаллиф: сатр) {
    ин.ном = ном;
    ин.муаллиф = муаллиф;
  }

  нишон_додан(): беджавоб {
    чоп.сабт('"' + ин.ном + '" - ' + ин.муаллиф);
  }
}

// файл: main.som
ворид { Китоб } аз "./models";

тағ китоб: Китоб = нав Китоб("SomonScript", "Гурӯҳи SomonScript");
китоб.нишон_додан();
terminal
somon run main.som
"SomonScript" - Гурӯҳи SomonScript

3. Упражнения

Эти упражнения помогают закрепить понимание классов и модулей.

  1. Создайте класс Мошин со свойствами ном (название), сол (год), ранги_мошин (цвет машины) и методом нишон_додан().
  2. Создайте модуль, который экспортирует два класса, Муаллим и Донишҷӯ, и используйте их в отдельном файле.
  3. Создайте класс Ҳисобкунак (Calculator) с методами сложения, вычитания, умножения и деления и поместите его в модуль.