SomonScriptDocsСинфҳо ва модулҳо
Бобҳои 8–9 • Синфҳо ва модулҳо

Синфҳо ва модулҳо дар SomonScript

Синфҳо (classes) ва модулҳо (modules) барои тартиб додани код дар лоиҳаҳои миёна ва калон истифода мешаванд. Ин ҷо мебинем, ки чӣ гуна синфи оддӣ ва модул эҷод кунем.

1. Мисоли оддӣ: синфи донишҷӯ

Аввал синфи оддии Донишҷӯ-ро месозем, ки чанд хосият ва як метод дорад.

Синфи донишҷӯ

Синфи содда бо конструктор ва метод барои нишон додани маълумот.

example.som
// Эълони синфи донишҷӯ
синф Донишҷӯ {
  ном: сатр;
  синну_сол: рақам;

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

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

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

2. Мисоли каме мушкил: модул бо ду синф

Дар ин мисол мо модуле месозем, ки ду синфро содир мекунад ва дар файли дигар онҳоро истифода мебарем.

Модул бо синфҳо

Мисоли оддӣ бо модул, ки синфҳоро содир мекунад ва дар файли дигар ворид мешавад.

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

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

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

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

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

3. Машқҳо

Ин машқҳо барои мустаҳкам кардани фаҳмиши синфҳо ва модулҳо кумак мекунанд.

  1. Синфи Мошин созед бо хосиятҳои ном, сол, ранги_мосҳин ва методи нишон_додан().
  2. Модуле созед, ки ду синф Муаллим ва Донишҷӯ-ро содир кунад ва онҳоро дар файли алоҳида истифода баред.
  3. Синфи Ҳисобкунак(Calculator) бо методҳои ҷамъ, тарҳ, зарб ва тақсим созед ва онро ба як модул ҷойгир намоед.