ВВЕДЕНИЕ
1 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1.1 Постановка задачи
1.2 Описание объектно-ориентированного подхода
1.3 Описание предметной области
2 ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1 Описание объектов системы, их свойств и методов
2.2 Результаты тестирования программного продукта
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ
ВВЕДЕНИЕ
Среди дисциплин и методов дискретной математики теория графов и особенно алгоритмы на графах находят наиболее широкое применение в программировании. Между понятием графа и понятием отношения, имеется глубокая связь — в сущности это равнообъемные понятия. Возникает естественный вопрос, почему же тогда графам оказывается столь явное предпочтение? Дело в том, что теория графов предоставляет очень удобный язык для описания программных (да и многих других) моделей.
Этот тезис можно пояснить следующей аналогией. Понятие отношения также можно полностью выразить через понятие множества. Однако независимое определение понятия отношения удобнее — введение специальных терминов и обозначений упрощает изложение теории и делает ее более понятной. То же относится и к теории графов.
Стройная система специальных терминов и обозначений теории графов позволяют просто и доступно описывать сложные и тонкие вещи. Особенно важно наличие наглядной графической интерпретации понятия графа.
Целью данного курсового проекта является разработка иерархии классов реализующих ориентированный и смешанный графы и операции над ними
Программный продукт должен:
− давать возможность пользователю создавать графы программ
− позволять выводить матрицу смежности созданного графа
− реализовать метод объединения заданных графов
− реализовать метод пересечения заданных графов
Объектом исследования будет Microsoft Visual Studio 2019.
Предметом изучения являются ориентированный и смешанный графы. В качестве языка разработки был выбран C++.
1 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1.1 Постановка задачи
Необходимо разработать иерархию классов, реализующих различные типы графов и операции над ними.
Типы графов:
− ориентированный граф
− смешанный граф
Операции над графами:
− пересечение графов
− объединение графов
В качестве исходных данных к программе выступают:
− индивидуальное задание
− справочная информация по языке программирования С++
− задания и методические указания по выполнению курсового проекта.
В качестве выходной информации будут выступать:
− диаграмма разработанной иерархии классов
− код разработанных классов
− результаты выполнения методов графа.
1.2 Описание объектно-ориентированного подхода
Что же понимается под объектом и каковы другие основополагающие понятия данного подхода?
Прежде всего, введем понятие класса. Класс - это абстракция множества сущностей реального мира, объединенных общностью структуры и поведения.
Объект - это элемент класса, то есть абстракция определенной сущности.
Подчеркнем, что объекты активны, у них есть не только внутренняя структура, но и поведение, которое описывается так называемыми методами объекта.
2 ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1 Описание объектов системы, их свойств и методов
Диаграмма классов (class diagram) служит для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования. Диаграмма классов может отражать, в частности, различные взаимосвязи между отдельными сущностями предметной области, такими как объекты и подсистемы, а также описывает их внутреннюю структуру и типы отношений. На данной диаграмме не указывается информация о временных аспектах функционирования системы. С этой точки зрения диаграмма классов является дальнейшим развитием концептуальной модели проектируемой системы.
Диаграмма классов представляет собой некоторый граф, вершинами которого являются элементы типа классификатор, которые связаны различными типами структурных отношений. Следует заметить, что диаграмма классов может также содержать интерфейсы, пакеты, отношения и даже отдельные экземпляры, такие как объекты и связи. Когда говорят о данной диаграмме, имеют в виду статическую структурную модель проектируемой системы. Поэтому диаграмму классов принято считать графическим представленном таких структурных взаимосвязей логической модели системы, которые не зависят или инвариантны от времени.
Диаграмма классов состоит из множества элементов, которые в совокупности отражают декларативные знания о предметной области. Эти знания интерпретируются в базовых понятиях языка UML, таких как классы, интерфейсы и отношения между ними и их составляющими компонентами. При этом отдельные компоненты этой диаграммы могут образовывать пакеты для представления более общей модели системы.
ЗАКЛЮЧЕНИЕ
В результате выполнения курсового проекта была разработана иерархия классов, реализующая ориентированный и смешанный графы.
Она позволяет:
− Создавать собственные графы программно
− Добавлять вершины и ребра выбранным графам
− Получать граф на основе пересечения двух других заданных графов
− Получать граф на основе соединения двух других графов
− Выводить матрицу смежности заданного графа
− Получать и выводить список вершин, в которые можно попасть из текущей вершины заданного графа
Таким образом, задачи курсового проекта можно считать полностью выполненными: проведена постановка задачи, описаны принципы написания приложений используя объектно-ориентированный подход, благодаря описанию области реализован программный продукт, который успешно прошел стадию тестирования.
1. Основные положения теории графов [Электронный ресурс]. — Режим доступа: https://studfile.net/preview/6179451/page:2/.
2. Объектно-ориентированный подход [Электронный ресурс]. — Режим доступа: https://intuit.ru/studies/courses/10/10/lecture/298?page=2.
3. Алгоритмы на графах [Электронный ресурс]. — Режим доступа: http://math.gsu.by/wp-content/uploads/courses/structure/L9.1.html.
4. Введение в теорию графов [Электронный ресурс]. — Режим доступа: http://info.rully.ru/materials/graphs/.
5. Диаграмма классов [Электронный ресурс]. — Режим доступа: https://it.wikireading.ru/5119.