-
Notifications
You must be signed in to change notification settings - Fork 14
exam_18
Массив - структура данных, хранящая набор значений (элементов массива), идентифицируемых по индексу или набору индексов, принимающих целые (или приводимые к целым) значения из некоторого заданного непрерывного диапазона. Так же массив может быть описан как переменная, представляющая собой сумму слагаемых, принадлежащих к одному типу. Размерность массива — это количество индексов, необходимое для однозначной адресации элемента в рамках массива. По количеству используемых индексов массивы делятся на одномерные, двумерные, трёхмерные и т. д. Форма или структура массива — сведения о количестве размерностей и размере (протяжённости) массива по каждой из размерностей. Создание массивов представлено на рисунке 1.
Рис. 1. Массив
Так же существуют ассоциативные массивы, где вместо индексов применяются строки. В таком случае индекс называют ключом. Рис. 1.1 Ассоциативный массив
Список - это упорядоченная последовательность данных, характеризующая однородные объекты, отличающиеся значениями своих признаков. Данные, относящиеся к одному объекту, называются записями и являются членами списка. Ключевое отличие списка от массива - это способ представления в памяти. Массив - это выделяемый непрерывный блок ячеек памяти, а значит его размеры всего фиксированы и не могут быть изменены.Список - разрозненные ячейки со ссылками на следующий элемент. Список можно увеличивать без оглядки на заданный размер.
Рис. 2. Список
Коллекция в программировании — программный объект, содержащий в себе, тем или иным образом, набор значений одного или различных типов, и позволяющий обращаться к этим значениям. Коллекция позволяет записывать в себя значения и извлекать их. Назначение коллекции — служить хранилищем объектов и обеспечивать доступ к ним. Обычно коллекции используются для хранения групп однотипных объектов, подлежащих стереотипной обработке. Для обращения к конкретному элементу коллекции могут использоваться различные методы, в зависимости от её логической организации. Реализация может допускать выполнение отдельных операций над коллекциями в целом. Наличие операций над коллекциями во многих случаях может существенно упростить программирование. В качестве примера, рассмотрим использование коллекций в языке C#. В C# коллекция представляет собой совокупность объектов. В среде .NET Framework имеется немало интерфейсов и классов, в которых определяются и реализуются различные типы коллекций. Коллекции упрощают решение многих задач программирования благодаря тому, что предлагают готовые решения для создания целого ряда типичных, но порой трудоемких для разработки структур данных. Например, в среду .NET Framework встроены коллекции, предназначенные для поддержки динамических массивов, связных списков, стеков, очередей и хеш-таблиц. Коллекции являются современным технологическим средством, заслуживающим пристального внимания всех, кто программирует на C#. Использование простой коллекции представлено на рисунке 3. В приведенном ниже примере создается список строк, а затем выполняется перебор строк с помощью оператора foreach.
Рис. 3. Использование коллекций
В среде .NET Framework поддерживаются пять типов коллекций: необобщенные, специальные, с поразрядной организацией, обобщенные и параллельные. Рассмотрим каждую из них подробнее.
Реализуют ряд основных структур данных, включая динамический массив, стек, очередь, а также словари, в которых можно хранить пары "ключ-значение". В отношении необобщенных коллекций важно иметь в виду следующее: они оперируют данными типа object. Таким образом, необобщенные коллекции могут служить для хранения данных любого типа, причем в одной коллекции допускается наличие разнотипных данных. Очевидно, что такие коллекции не типизированы, поскольку в них хранятся ссылки на данные типа object. Классы и интерфейсы необобщенных коллекций находятся в пространстве имен System.Collections.
Оперируют данными конкретного типа или же делают это каким-то особым образом. Например, имеются специальные коллекции для символьных строк, а также специальные коллекции, в которых используется однонаправленный список. Специальные коллекции объявляются в пространстве имен System.Collections.Specialized.
В прикладном интерфейсе Collections API определена одна коллекция с поразрядной организацией — это BitArray. Коллекция типа BitArray поддерживает поразрядные операции, т.е. операции над отдельными двоичными разрядами, например И, ИЛИ, исключающее ИЛИ, а следовательно, она существенно отличается своими возможностями от остальных типов коллекций. Коллекция типа BitArray объявляется в пространстве имен System.Collections.
Обеспечивают обобщенную реализацию нескольких стандартных структур данных, включая связные списки, стеки, очереди и словари. Такие коллекции являются типизированными в силу их обобщенного характера. Это означает, что в обобщенной коллекции могут храниться только такие элементы данных, которые совместимы по типу с данной коллекцией. Благодаря этому исключается случайное несовпадение типов. Обобщенные коллекции объявляются в пространстве имен System.Collections.Generic.
Поддерживают многопоточный доступ к коллекции. Это обобщенные коллекции, определенные в пространстве имен System.Collections.Concurrent.
ООП привносит нам два ключевых понятия: Класс и Объект. Класс – это абстрактный тип данных. С помощью класса описывается некоторая сущность (ее характеристики и возможные действия). Например, класс может описывать студента, автомобиль и т.д. Описав класс, мы можем создать его экземпляр – объект. Объект – это уже конкретный представитель класса.
Коллекция является классом, поэтому необходимо объявить экземпляр класса перед добавлением в коллекцию элементов. Массив же относится к объектам.
В ВКР широко используются списки, коллекции и классы для реализации программного продукта. Исходя из темы "Создание образовательной платформы для обучения школьников многоагентному подходу на примере игры Судоку", массив используется для генерации игрового поля. Программе заведомо известно количество клеток, которое необходимо обработать(9x9), известен тип данных(integer), в связи с этим использование массива очень удобно.
Рис. 4. Интерфейс с демонстрацией игрового поля
Рис. 5. Программный код
Коллекции, в частности метод Stack, используется для накопления данных о том, содержится ли данная цифра в исследуемой клетке. Если да, то программа сохранит в коллекцию порядковый номер ячейки.
Рис. 6. Работа коллекцией, программный код
Классы в ВКР используются для исследования каждого квадрата судоку, размером 3 на 3 клетки(рис 7). Каждый квадрат обладает как общими свойствами, так и отличиями. И для улучшения работы программы, класс квадрат получил наследников в виде 9 малых квадратов, различающихся своими координатами и порядковыми номерами.
Рис. 7. Работа коллекцией, программный код Далее приведен программный код класса, где можно проанализировать его программный вид. Рис. 8. Программная реализация класса И далее вызов класса из основной программы Рис. 9. Вызов класса
UML - это язык для визуализации, специфицирования, конструирования и документирования артефактов программных систем.
#Язык состоит из словаря и правил, позволяющих комбинировать входящие в него слова и получать осмысленные конструкции. В языке моделирования словарь и правила ориентированы на концептуальное и физическое представление системы. Язык моделирования, подобный UML, является стандартным средством для составления "чертежей" программного обеспечения.
Диаграммой пакетов является диаграмма, содержащая пакеты классов и зависимости между ними. Строго говоря, пакеты и зависимости являются элементами диаграммы классов, т. е. диаграмма пакетов - это всего лишь форма диаграммы классов. Однако на практике причины построения таких диаграмм различны.
В свою очередь, одни пакеты могут быть вложены в другие пакеты. В этом случае первые называются подпакетами, поскольку все элементы подпакета будут принадлежать более общему пакету. Тем самым для элементов модели задается отношение вложенности пакетов, которое представляет собой иерархию.
Каждый пакет представляет пространство имен (namespace), а это означает, что каждый класс внутри собственного пакета должен иметь уникальное имя.
В языке UML для визуализации пакетов разработана специальная символика или графическая нотация.
Можно сказать, что визуально символ пакета напоминает пиктограмму папки в популярном графическом интерфейсе. Внутри большого прямоугольника может записываться информация, относящаяся к данному пакету. Если такой информации нет, то внутри большого прямоугольника записывается имя пакета, которое должно быть уникальным в пределах рассматриваемой модели (рис. 1а). Если же такая информация имеется, то имя пакета записывается в верхнем маленьком прямоугольнике (рис. 1).
Рис. 1. Графическое изображение пакета в языке UML
Одним из типов отношений между пакетами является отношение вложенности или включения пакетов друг в друга. С одной стороны, в языке UML это отношение может быть изображено без использования линий простым размещением одного пакета-прямоугольника внутри другого пакета-прямоугольника (рис. 3). Так, в данном случае пакет с именем Пакет 1 содержит в себе два подпакета: Пакет_2 и Пакет_3.
Рис. 3. Графическое изображение вложенности пакетов друг в друга
Рис. 4. Графическое изображение языка UML для вложенности пакетов друг в друга с помощью явной визуализации отношения включения
С другой стороны, это же отношение может быть изображено с помощью отрезков линий аналогично графическому представлению дерева. В этом случае наиболее общий пакет (метапакет или контейнер) изображается в верхней части рисунка, а его подпакеты – уровнем ниже (рис. 4).
Метапакет соединяется с подпакетами сплошной линией, на конце которой, примыкающей к метапакету, изображается специальный символ © (знак плюс в кружочке). Этот символ означает, что подпакеты являются «собственностью» или частью контейнера, и, кроме этих подпакетов, контейнер не содержит никаких других подпакетов.
Эти пакеты в свою очередь делятся на отдельные подпакеты. Например, пакет Основные элементы состоит из подпакетов: Элементы ядра, Вспомогательные элементы, Механизмы расширения и типы данных (рис. 6).
При этом пакет Элементы ядра описывает базовые понятия и принципы включения в структуру метамодели основных понятий языка, таких как метаклассы, метаассоциации и метаатрибуты. Пакет Вспомогательные элементы определяет дополнительные конструкции, которые расширяют базовые элементы для описания зависимостей, шаблонов, физических структур и элементов представлений. Пакет Механизмы расширения задает правила уточнения и расширения семантики базовых элементов моделей. Пакет Типы данных определяет основные структуры данных для языка UML.
Диаграмма пакетов служит, в первую очередь, для организации элементов в группы по какому-либо признаку с целью упрощения структуры и организации работы с моделью системы.
Рассмотрим следующий рисунок с описанием процессов для управления продажами.
Рис. 5. Описание процессов управления продажами
Слева показано, как выглядят макро-шаги – это простая укрупненная последовательность действий в ходе выполнения бизнес-процессов.
А справа мы видим детальное описание конкретного макро-шага бизнес-процесса:
- Кто выполняет бизнес-процесс.
- Что он делает в рамках этого бизнес-процесса.
- Что является входом для этого действия или что является результатом этого действия.
- Бизнес-правила, которые описывают, как он это делает.
Это такая блок-схема, которая разделена на дорожки. В таком виде бизнес-пользователи очень хорошо понимают бизнес-процессы. Не надо проводить никакого дополнительного обучения. Вы просто приносите им эту схему и спрашиваете: «Этот человек это делает?» Он отвечает: «Нет, не делает». Или говорит: «Да, делает, все правильно, иди дальше программируй».