ВВЕДЕНИЕ
1 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1.1 Постановка задачи
1.2 Описание объектно-ориентированного подхода
1.3 Описание предметной области
2 ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1 Описание объектов системы, их свойств и методов
2.2 Результаты тестирования программного продукта
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ
ВВЕДЕНИЕ
Среди дисциплин и методов дискретной математики теория графов и особенно алгоритмы на графах находят наиболее широкое применение в программировании. Между понятием графа и понятием отношения, имеется глубокая связь — в сущности это равнообъемные понятия. Возникает естественный вопрос, почему же тогда графам оказывается столь явное предпочтение? Дело в том, что теория графов предоставляет очень удобный язык для описания программных (да и многих других) моделей.
Этот тезис можно пояснить следующей аналогией. Понятие отношения также можно полностью выразить через понятие множества. Однако независимое определение понятия отношения удобнее — введение специальных терминов и обозначений упрощает изложение теории и делает ее более понятной. То же относится и к теории графов.
Стройная система специальных терминов и обозначений теории графов позволяют просто и доступно описывать сложные и тонкие вещи. Особенно важно наличие наглядной графической интерпретации понятия графа.
Целью данного курсового проекта является разработка иерархии классов реализующих ориентированный и смешанный графы и операции над ними
Программный продукт должен:
− давать возможность пользователю создавать графы программно
− позволять выводить матрицу смежности созданного графа
− реализовать метод объединения заданных графов
− реализовать метод пересечения заданных графов
Объектом исследования будет Microsoft Visual Studio 2019.
Предметом изучения являются ориентированный и смешанный графы. В качестве языка разработки был выбран C++.
1 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1.1 Постановка задачи
Необходимо разработать иерархию классов, реализующих различные типы графов и операции над ними.
Типы графов:
− ориентированный граф
− смешанный граф
Операции над графами:
− пересечение графов
− объединение графов
В качестве исходных данных к программе выступают:
− индивидуальное задание
− справочная информация по языке программирования С++
− задания и методические указания по выполнению курсового проекта.
В качестве выходной информации будут выступать:
− диаграмма разработанной иерархии классов
− код разработанных классов
− результаты выполнения методов графа.
2 ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1 Описание объектов системы, их свойств и методов
Диаграмма классов (class diagram) служит для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования. Диаграмма классов может отражать, в частности, различные взаимосвязи между отдельными сущностями предметной области, такими как объекты и подсистемы, а также описывает их внутреннюю структуру и типы отношений. На данной диаграмме не указывается информация о временных аспектах функционирования системы. С этой точки зрения диаграмма классов является дальнейшим развитием концептуальной модели проектируемой системы.
Диаграмма классов представляет собой некоторый граф, вершинами которого являются элементы типа классификатор, которые связаны различными типами структурных отношений. Следует заметить, что диаграмма классов может также содержать интерфейсы, пакеты, отношения и даже отдельные экземпляры, такие как объекты и связи. Когда говорят о данной диаграмме, имеют в виду статическую структурную модель проектируемой системы. Поэтому диаграмму классов принято считать графическим представленном таких структурных взаимосвязей логической модели системы, которые не зависят или инвариантны от времени.
Диаграмма классов состоит из множества элементов, которые в совокупности отражают декларативные знания о предметной области. Эти знания интерпретируются в базовых понятиях языка UML, таких как классы, интерфейсы и отношения между ними и их составляющими компонентами. При этом отдельные компоненты этой диаграммы могут образовывать пакеты для представления более общей модели системы. Если диаграмма классов является частью некоторого пакета, то ее компоненты должны соответствовать элементам этого пакета, включая возможные ссылки на элементы из других пакетов.
ЗАКЛЮЧЕНИЕ
В результате выполнения курсового проекта была разработана иерархия классов, реализующая ориентированный и смешанный графы.
Она позволяет:
− Создавать собственные графы программно
− Добавлять вершины и ребра выбранным графам
− Получать граф на основе пересечения двух других заданных графов
− Получать граф на основе соединения двух других графов
− Выводить матрицу смежности заданного графа
− Получать и выводить список вершин, в которые можно попасть из текущей вершины заданного графа
Таким образом, задачи курсового проекта можно считать полностью выполненными: проведена постановка задачи, описаны принципы написания приложений используя объектно-ориентированный подход, благодаря описанию области реализован программный продукт, который успешно прошел стадию тестирования.