Skip to content
forked from IThror10/itmo_se

Курс по Проектированию ПО. Весенний семестр 2024.

License

Notifications You must be signed in to change notification settings

TreshMom/itmo_se

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

itmo_se

Курс по Проектированию ПО. Весенний семестр 2024.

Архитектура системы

Элементы UML-диаграммы

  • Console -- точка входа и выхода.

    • Считывает пользовательский ввод
    • Держит в себе состояние системы (консоли)
    • Использует интерпретатор для выполнения пользовательского скрипта
    • Результат выполнения очередного скрипта -- CommandData
  • State -- состояние. Пользовательские переменные. Общие данные для всех интерпретаторов. Возможно стоит сделать как взаимодействие с файлом (чтобы разделяться между многими консолями, Аналог Path)

  • Interpreter -- интерпретатор.

    • Определяет команды и вычислят аргументы для них (full and weak quoting, подставляет переменные)
    • Создает команды, используя фабрику
    • Настраивает потоки ввода-вывода для команды или конвейера команд
    • Исполняет команды, передает им состояния
  • CommandFactory -- объект-фабрика

    • Ответственна за вызов необходимых конструкторов при инициализации команд
    • Поиск и регистрация команд по (@обдумывается@ регулярным выражениям).
    • Порядок регистрации совпадает с порядком проверок
    • Создается и заполняется доступными командами при создании объекта-консоли
  • BaseCommand -- базовая команда (абстрактный класс)

    • От неё наследуются конкретные команды
    • У всех наследников есть конструктор с одинаковыми аргументами (массив строк)
    • Общие поля для всех команд (дескрипторы, )
    • Хранит ссылку на некоторое состояние системы (может быть локальное)
  • AnyCommand

    • При вызове перенаправляет ввод-вывод в свои дескрипторы (например, временные файлы)
    • Делает это в случае, если они не установлены явно
  • CommandData -- структура

    • Хранит информацию о потоках ввода-вывода
    • Хранит статус выполнения команды (Exit, ErrorCode, Ok, etc...)
  • IDescriptor -- поток ввода-вывода. Интерфейс

    • Может быть стандратным потоком
    • Может быть перенаправлен в файл

Use-case

  • a=5 | a=7 | echo "$a" -- значения a не меняются
  • a=5 | exit | echo "$a" -- выполнение не завершается
  • echo "Some String to Pring" | wc
  • a=text.txt
  • echo $a | wc -- вызов wc для файла text.txt
  • wc < $a, wc < $a > res.txt, catawg 2> | echo $a

About

Курс по Проектированию ПО. Весенний семестр 2024.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published