|
107 / 107 / 9
Регистрация: 19.12.2010
Сообщений: 417
|
||||||
Поправить схему классов графа25.08.2013, 20:26. Показов 1143. Ответов 7
Метки нет (Все метки)
Здравствуйте.
Не могу навести порядок в схеме классов... Задача: Визуализировать граф. Проблемная часть схемы: Edge - ребро графа. Имеет свои параметры EdgeOptions (вес, направление) и ссылки на начальную и конечную вершины. GraphicalEdge - потомок Edge, ребро с графическими параметрами GraphicalEdgeOptions (цвет, форма и т.д.) Имеется обобщённый AGraph, от которого наследуются Graph и GraphicalGraph.
EdgeValues - тип, который имеет свойство EdgeOptions и часть других. Сейчас у меня всегда создаются только Edge фабрикой, а GraphicalEdge - нет. Да и есть проблемы с наследованием самих Edge и их параметров... Они либо дублируются... Либо становятся неподходящими для AGraph. Как можно правильно поправить мою схему классов, чтобы всё было нормально? Заранее спасибо.
0
|
||||||
| 25.08.2013, 20:26 | |
|
Ответы с готовыми решениями:
7
Как изменить схему классов в DBContext при добавлении нового класса? Нахождение фактора графа и остова графа для некоторого произвольного графа (5-6 вершин) |
|
107 / 107 / 9
Регистрация: 19.12.2010
Сообщений: 417
|
|||||||||||||||||||||
| 25.08.2013, 20:49 [ТС] | |||||||||||||||||||||
|
Походу, не совсем ясно объяснил. Начнём с конкретных проблем.
Есть класс Edge:
1. Edge имеет Options и его потомок имеет Options, но другого типа... Раньше я делал отдельно свойство GraphicalEdgeOptions, которое не наследовалось от EdgeOptions. Это решает данную проблему, но создаёт другую: AGraph умеет работать с EdgeValues (создаёт их экземпляры и т.д.), но как создать экземпляр GrahicalEdgeValues в обобщённом типе без создания конструкторов по умолчанию...? 2. Если я не буду пытаться скрывать в GraphicalEdge свойство Options, то пользователь может подсунуть мне EdgeOptions в GraphicalEdge вместо GraphicalEdgeOptions, что не есть хорошо.
0
|
|||||||||||||||||||||
|
Master of Orion
|
|
| 25.08.2013, 23:15 | |
|
FutureCome, скиньте заодно карту кода, это намного удобнее, показывается не только наследования, но и зависимости (незакрашенная стрелка - наследование, закрашенная - использование)
1
|
|
|
107 / 107 / 9
Регистрация: 19.12.2010
Сообщений: 417
|
|
| 30.08.2013, 17:34 [ТС] | |
|
Psilon
Диаграмма классов и карта кода: Schemes.zip Само решение: GraphVisualizator.zip В данный момент проблема с классом AGraph: не знаю, как нормально создать экземпляр класса Vertex или GraphicalVertex в зависимости от типа-параметра TVertex. Конструктор по умолчанию использовать не хочется ввиду того, что объект не может существовать без параметров, задаваемых конструктором, и можно забыть их задать потом => получить NullPointerException (просто стараюсь избегать конструкторов по умолчанию). Просмотрите всё решение... Что бы Вы и как исправили? Что бы сделали более красивым и логичным и как? Заранее огромное спасибо за всё.
0
|
|
|
107 / 107 / 9
Регистрация: 19.12.2010
Сообщений: 417
|
|
| 31.08.2013, 22:14 [ТС] | |
|
Пока сделал через передачу в конструктор AGraph экземпляра класса, реализующего IGraphFactory: GraphFactory либо GraphicalGraphFactory. Не очень красиво, но не так и ужасно.
0
|
|
|
Master of Orion
|
||
| 31.08.2013, 22:46 | ||
|
FutureCome,
Добавлено через 4 минуты Алсо дженерик с 5 обобщенными парамтерами это нечто... По-моему что-то не так.
0
|
||
|
107 / 107 / 9
Регистрация: 19.12.2010
Сообщений: 417
|
||||
| 31.08.2013, 22:55 [ТС] | ||||
|
Psilon.
Поэтому и спрашиваю, что да как лучше сделать...
0
|
||||
|
Master of Orion
|
|||||||||||
| 31.08.2013, 23:13 | |||||||||||
|
FutureCome, я слабо представляю архитектуру, чтобы посоветовать. Вы там уже норм так наворотили. Словарь, ну например так
0
|
|||||||||||
| 31.08.2013, 23:13 | |
|
Помогаю со студенческими работами здесь
8
Написать программу, которая по коду строит схему классов Создание графа по матрице и поиск кратчайшего пути из одного графа в другой По заданной матрице смежности простого графа построить каркас этого графа с использованием поиска в ширину Обход графа в ширину для определения всех вершин графа, находящихся на фиксированном расстоянии от данной вершины Выполнить обход в ширину неориентрованного графа, начиная с заданной вершины. Способ представления графа – матрица инциденций Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|