КоллекшонОС это фреймворк коллекций для OneScript
Фреймворк предоставляет следующие коллекции
Множества - неиндексированные коллекции уникальных элементов.
- МножествоСоответствие - Множество, реализованное на базе соответствия.
- МножествоКарта - Множество, реализованное на базе карты.
Спики - индексированные коллекции элементов.
- СписокМассив - Список, реализованный на базе массива.
Карты - Коллекции пар ключ-значение.
- КартаСоответствие - Карта, реализованная на базе соответствия.
Очереди - коллекции элементов, в которых элементы добавляются в конец и извлекаются из начала.
- ОчередьМассив - Очередь, реализованная на базе массива.
- ПриоритетнаяОчередь - Очередь, реализованная на базе массива, которая сортируются элементы в порядке заданным компаратором.
- ОчередьОтложенных - Потокобезопасная очередь, частный случай приоритетной очереди, элементы которой должны иметь метод
Задержка
которые возвращает количество миллисекунд до того как элемент станет доступным для извлечения, элементы очереди сортируются в порядке возрастания задержек.
Представления - специальные объекты "обёртки" для коллекций, в конструктор которой передаётся коллекция, и которая предоставляет дополнительные гарантии.
Синхронизированные представления предоставляют потокобезопасные обёртки для коллекций.
- СинхронизированнаяКоллекция - Представление реализующее интерфейс
Коллекция
. - СинхронизированноеМножество - Объект реализующий интерфейс
Множество
. - СинхронизированныйСписок - Объект реализующий интерфейс
Список
. - СинхронизированнаяКарта - Объект реализующий интерфейс
Карта
. - СинхронизированнаяОчередь - Объект реализующий интерфейс
Очередь
.
Фиксированные представления предоставляют неизменяемые обёртки для коллекций.
- ФиксированнаяКоллекция - Представление реализующее интерфейс
ЧитаемаяКоллекция
. - ФиксированноеМножество - Объект реализующий интерфейс
ЧитаемоеМножество
. - ФиксированныйСписок - Объект реализующий интерфейс
ЧитаемыйСписок
. - ФиксированнаяКарта - Объект реализующий интерфейс
ЧитаемаяКарта
.
classDiagram
Обходимое <|-- ЧитаемаяКоллекция
ЧитаемаяКоллекция <|-- Коллекция
ЧитаемаяКоллекция <|.. ФиксированнаяКоллекция
Коллекция <|.. СинхронизированнаяКоллекция
class Обходимое {
<<Интерфейс>>
+Итератор() ЧитающийИтератор
+ДляКаждого(Алгоритм: Действие|Строка, Контекст:Структура|Сценарий) Ничто
}
class ЧитаемаяКоллекция {
<<Интерфейс>>
+Содержит(Элемент: Произвольный) Булево
+СодержитВсе(Коллекция: ЧитаемыйКоллекция) Булево
+Пусто() Булево
+ПроцессорКоллекции() ПроцессорКоллекций
+Количество() Число
}
class Коллекция {
<<Интерфейс>>
+Итератор() Итератор
+Добавить(Элемент: Произвольный) Булево
+ДобавитьВсе(Коллекция: ЧитаемыйКоллекция) Булево
+Очистить() Ничто
+Удалить(Элемент: Произвольный) Булево
+УдалитьВсе(Коллекция: ЧитаемыйКоллекция) Булево
+УдалитьЕсли(Предикат: Действие|Строка, Контекст:Структура|Сценарий) Булево
+СохранитьВсе(Коллекция: ЧитаемыйКоллекция) Булево
+ВМассив() Массив
}
class ФиксированнаяКоллекция {
-ПриСозданииОбъекта(Коллекция: ЧитаемаяКоллекция)
}
class СинхронизированнаяКоллекция {
-ПриСозданииОбъекта(Коллекция: Коллекция)
}
classDiagram
ЧитаемаяКоллекция <|-- ЧитаемоеМножество
ЧитаемоеМножество <|-- Множество
Коллекция <|-- Множество
ЧитаемоеМножество <|.. ФиксированноеМножество
Множество <|.. МножествоСоответствие
Множество <|.. СинхронизированноеМножество
class ЧитаемоеМножество {
<<Интерфейс>>
}
class Множество {
<<Интерфейс>>
}
class ФиксированноеМножество {
-ПриСозданииОбъекта(Коллекция: ЧитаемаяКоллекция)
}
class МножествоСоответствие {
-ПриСозданииОбъекта(Коллекция: ЧитаемаяКоллекция)
}
class СинхронизированноеМножество {
-ПриСозданииОбъекта(Коллекция: Множество)
}
classDiagram
ЧитаемаяКоллекция <|-- ЧитаемыйСписок
Коллекция <|-- Список
ЧитаемыйСписок <|-- Список
ЧитаемыйСписок <|.. ФиксированныйСписок
Список <|.. СписокМассив
Список <|.. СинхронизированныйСписок
class ЧитаемыйСписок {
<<Интерфейс>>
+Получить(Индекс: Число) Произвольный
+Индекс(Элемент: Произвольный) Число
+ПоследнийИндекс(Элемент: Произвольный) Число
+ВГраница() Число
}
class Список {
<<Интерфейс>>
+Вставить(Индекс: Число, Элемент: Произвольный) Булево
+ВставитьВсе(Индекс: Число, Коллекция: ЧитаемыйКоллекция) Булево
+ЗаменитьВсе(Алгоритм: Действие|Строка, Контекст:Структура|Сценарий) Ничто
+Сортировать(СравнениеЗначений: Действие|Строка, Контекст:Структура|Сценарий) Ничто
+УдалитьПоИндексу(Индекс: Число) Произвольный
+Установить(Индекс: Число, Значение: Произвольный) Произвольный
}
class ФиксированныйСписок {
-ПриСозданииОбъекта(Коллекция: ЧитаемаяКоллекция)
}
class СписокМассив {
-ПриСозданииОбъекта(Коллекция: ЧитаемаяКоллекция)
}
class СинхронизированныйСписок {
-ПриСозданииОбъекта(Коллекция: Список)
}
classDiagram
ЧитаемаяКоллекция <|-- ЧитаемаяОчередь
ЧитаемаяОчередь <|-- Очередь
Коллекция <|-- Очередь
Очередь <|.. ОчередьМассив
Очередь <|.. ПриоритетнаяОчередь
Очередь <|.. ОчередьОтложенных
Очередь <|.. СинхронизированнаяОчередь
class ЧитаемаяОчередь {
<<Интерфейс>>
+Подсмотреть() Опциональный~Произвольный~
}
class Очередь {
<<Интерфейс>>
+Положить() Булево
+Взять() Опциональный~Произвольный~
}
class ОчередьМассив {
-ПриСозданииОбъекта(Коллекция: ЧитаемаяКоллекция)
}
class ПриоритетнаяОчередь {
-ПриСозданииОбъекта(Коллекция: ЧитаемаяКоллекция)
}
class ОчередьОтложенных {
-ПриСозданииОбъекта(Коллекция: ЧитаемаяКоллекция)
}
class СинхронизированнаяОчередь {
-ПриСозданииОбъекта(Коллекция: Очередь)
}
classDiagram
ЧитаемаяКарта <|-- Карта
ЧитаемаяКарта <|.. ФиксированнаяКарта
Карта <|.. КартаСоответствие
Карта <|.. СинхронизированнаяКарта
class ЧитаемаяКарта {
<<Интерфейс>>
+СодержитКлюч(Ключ: Произвольный) Булево
+СодержитЗначение(Значение: Произвольный) Булево
+ДляКаждого(Алгоритм: Действие|Строка, Контекст:Структура|Сценарий) Ничто
+Получить(Ключ: Произвольный) Опциональный~Произвольный~
+ПолучитьИлиУмолчание(Ключ: Произвольный, ЗначениеПоУмолчанию: Произвольный) Произвольный
+Пусто() Булево
+Ключи() ЧитаемоеМножество~Произвольный~
+Значения() ЧитаемыйСписок~Произвольный~
+КлючиИЗначения() ЧитаемоеМножество~Произвольный~
+Количество() Число
}
class Карта {
<<Интерфейс>>
+Очистить() Ничто
+Вставить(Ключ: Произвольный, Значение: Произвольный) Опциональный~Произвольный~
+ВставитьВсе(Карта: ЧитаемыйКарта) Ничто
+ВставитьЕслиОтсутствует(Ключ: Произвольный, Значение: Произвольный) Опциональный~Произвольный~
+ВычислитьБезусловно(Ключ: Произвольный, ФункцияПереназначения: Действие|Строка, Контекст:Структура|Сценарий) Опциональный~Произвольный~
+ВычислитьЕслиОтсутствует(Ключ: Произвольный, ФункцияНазначения: Действие|Строка, Контекст:Структура|Сценарий) Опциональный~Произвольный~
+ВычислитьЕслиПрисутствует(Ключ: Произвольный, ФункцияПереназначения: Действие|Строка, Контекст:Структура|Сценарий) Опциональный~Произвольный~
+Слить(Ключ: Произвольный, Значение: Произвольный, ФункцияПереназначения: Действие|Строка, Контекст:Структура|Сценарий) Опциональный~Произвольный~
+Заменить(Ключ: Произвольный, Значение: Произвольный) Опциональный~Произвольный~
+ЗаменитьЕслиЗначение(Ключ: Произвольный, ПрошлоеЗначение: Произвольный, Значение: Произвольный) Булево
+ЗаменитьВсе(ФункцияПереназначения: Действие|Строка, Контекст:Структура|Сценарий) Булево
+Удалить(Ключ: Произвольный) Опциональный~Произвольный~
}
class ФиксированнаяКарта {
-ПриСозданииОбъекта(Карта: ЧитаемаяКарта)
}
class КартаСоответствие {
-ПриСозданииОбъекта(Карта: ЧитаемаяКарта)
}
class СинхронизированнаяКарта {
-ПриСозданииОбъекта(Карта: Карта)
}
classDiagram
ЧитающийИтератор <|-- Итератор
ЧитающийИтератор <|-- ЧитающийСписокИтератор
ЧитающийСписокИтератор <|-- СписокИтератор
ЧитающийСписокИтератор <|.. ФиксированныйСписокИтератор
СписокИтератор <|.. СписокИтераторМассив
Итератор <|.. ИтераторМассив
ЧитающийИтератор <|.. ФиксированныйИтератор
Итератор <|.. ИтераторСоответствие
Итератор <|.. ИтераторКлючСоответствие
Итератор <|.. ИтераторЗначениеСоответствие
class ЧитающийИтератор {
<<Интерфейс>>
+ЕстьСледующий() Булево
+Следующий() Произвольный
+ДляКаждогоОставшегося(Действие: Действие|Строка, Контекст:Структура|Сценарий) Ничто
}
class Итератор {
<<Интерфейс>>
+Удалить() Ничто
}
class ЧитающийСписокИтератор {
<<Интерфейс>>
+ЕстьПредыдущий() Булево
+Предыдущий() Произвольный
+СледующийИндекс() Число
+ПредыдущийИндекс() Число
}
class СписокИтератор {
<<Интерфейс>>
+Установить(Элемент) Ничто
+Вставить(Элемент) Ничто
}
class ФиксированныйСписокИтератор {
-ПриСозданииОбъекта(Итератор: СписокИтератор) Ничто
}
class СписокИтераторМассив {
-ПриСозданииОбъекта(Массив: Массив, Источник: Обходимое|Карта) Ничто
}
class ИтераторМассив {
-ПриСозданииОбъекта(Массив: Массив, Источник: Обходимое|Карта) Ничто
}
class ФиксированныйИтератор {
-ПриСозданииОбъекта(Итератор: Итератор) Ничто
}
class ИтераторСоответствие {
-ПриСозданииОбъекта(Соответствие: Соответствие, Источник: Обходимое|Карта) Ничто
}
class ИтераторКлючСоответствие {
-ПриСозданииОбъекта(Соответствие: Соответствие, Источник: Обходимое|Карта) Ничто
}
class ИтераторЗначениеСоответствие {
-ПриСозданииОбъекта(Соответствие: Соответствие, Источник: Обходимое|Карта) Ничто
}