Форум программистов, компьютерный форум, киберфорум
ООП и паттерны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452

Как сложную релейную схему преобразовать в мир ООП

28.06.2016, 11:42. Показов 5532. Ответов 83
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день !

Если на форуме есть программисты железнодорожники , то поймут о чем речь.

В общем нужно релейную систему управления движения поездов на станции преобразовать в технологию ООП.

В этой системе есть функционально законченные релейные блоки, которые за что-то отвечают.

Стрелки, светофоры, участки.

Проблемы описать каждый блок в виде класса, труда не составляет.

Основная проблема заключается в разработке взаимодействия обьектов этих классов с точки зрения ООП.

При определенном маршруте взаимодействуют, определенные обьекты.

Может кто подкинет разумные идейки , как это можно правильно реализовать.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.06.2016, 11:42
Ответы с готовыми решениями:

немогу нарисовать очень сложную блок схему
прогу написал кое как а блок схемы рисовать неумею,к тому же очень сложная программа получилась Uses CRT; Const MaxMenuItem = 16; Var...

Как преобразовать схему к двум узлам
Немного подзабыл, как это делается, поэтому надеюсь на вашу помощь Вот задача: Преобразовать схему к двум узлам. Рассчитать токи во...

Как преобразовать схему резервного копирования?
Доброго времени суток! существует вот такая схема резервного копирования, как ее преобразовать что бы нагрузка на сеть уменьшить, возможно...

83
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.06.2016, 15:54
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от RAFA91 Посмотреть сообщение
выделить элементарные элементы не проблема.
проблема в взаимодействии.
при старте программы я создаю все обьекты станции
стрелки - светофоры - секции. получаю на них ссылки.
потом же надо эти ссылки привязать к конкретному маршруту и там с ними работать
Да, у объекта Станция должна быть функция-член создать_маршрут. По этой команде создается объект маршрута, куда включаются все необходимые элементы, и уже он ими управляет.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
28.06.2016, 15:54
Цитата Сообщение от Mr.X Посмотреть сообщение
Это должен делать объект Маршрут
У него маршрут - эфимерная сущность.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
28.06.2016, 15:55  [ТС]
обьект маршрут должен контролировать все обьекты которые в нем участвуют.

при этом результат контроля подавать в обьект светофор.

ведь светофор не откроется без контроля стрелки и занятой секции в маршруте. так ?
Цитата Сообщение от avgoor Посмотреть сообщение
У него маршрут - эфимерная сущность.
???
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.06.2016, 15:59
Цитата Сообщение от avgoor Посмотреть сообщение
У него маршрут - эфимерная сущность.
Как же эфемерная, когда по ней поезда ходят! А так-то все программирование - это оперирование эфемерными сущностями, на то программисты и волшебники!

Добавлено через 1 минуту
Цитата Сообщение от RAFA91 Посмотреть сообщение
обьект маршрут должен контролировать все обьекты которые в нем участвуют.
при этом результат контроля подавать в обьект светофор.
ведь светофор не откроется без контроля стрелки и занятой секции в маршруте. так ?
Ну да. А разве светофор не входит в маршрут?
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
28.06.2016, 16:01
Цитата Сообщение от Mr.X Посмотреть сообщение
Как же эфемерная, когда по ней поезда ходят?
Ездим мы не по правилам, ездим мы по дорогам.©
Маршрут задается, по его словам, нажатием двух кнопок на светофорах. Дальше компоненты системы работает вне зависимости от того, какой маршрут имелся ввиду и был ли он вообще.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
28.06.2016, 16:02  [ТС]
Цитата Сообщение от Mr.X Посмотреть сообщение
А разве светофор не входит в маршрут?

входит. только есть одно но.

если в маршруте будет разомкнута первая секция , то светофор может участвовать уже в другом маршруте при

необходимости. другими словами эта первая секция может участвовать уже в другом маршруте.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.06.2016, 16:04
Цитата Сообщение от avgoor Посмотреть сообщение
Дальше компоненты системы работает вне зависимости от того, какой маршрут имелся ввиду и был ли он вообще.
Да нет, они как раз работают как система, составляющая маршрут, пока он не самоликвидируется.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
28.06.2016, 16:06  [ТС]
Цитата Сообщение от Mr.X Посмотреть сообщение
пока он не самоликвидируется.

для этого поезд должен разомкнуть все секции.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
28.06.2016, 16:14
Цитата Сообщение от Mr.X Посмотреть сообщение
Да нет, они как раз работают как система, составляющая маршрут,
Поезд замкнул секцию. Как секция узнает, какой маршрут у этого поезда? Должен ли светофор в конце предыдущей секции включиться на красный, только если нам известен маршрут? Или если маршрута нет - можно ехать, и пох, что там стоит другой поезд?
Цитата Сообщение от Mr.X Посмотреть сообщение
пока он не самоликвидируется
В этом случае объект поезд совпадает с объектом маршрут (или у объекта поезд есть свойство маршрут).
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
28.06.2016, 16:18  [ТС]
Цитата Сообщение от avgoor Посмотреть сообщение
Поезд замкнул секцию.
нет секцию замыкает система.

или другими словами маршрут. все секции в маршруте замкнуты. поезд эти секции размыкает.
Цитата Сообщение от avgoor Посмотреть сообщение
Как секция узнает, какой маршрут у этого поезда?
так мы эту секцию запихнем в обьект маршрут . может в список ?
Цитата Сообщение от avgoor Посмотреть сообщение
Как секция узнает, какой маршрут у этого поезда?
так мы эту секцию запихнем в класс маршрут . может в список ?
Цитата Сообщение от avgoor Посмотреть сообщение
есть свойство маршрут).
поезд едет по маршруту.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.06.2016, 16:20
Цитата Сообщение от avgoor Посмотреть сообщение
Поезд замкнул секцию. Как секция узнает, какой маршрут у этого поезда?
Ну, маршрут не в смысле "Моска - Пекин", а как набор элементов. Поезд замыкает секцию, секция посылает сигнал своему объкту Маршрут, а он уже знает что делать.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
28.06.2016, 16:22
Цитата Сообщение от RAFA91 Посмотреть сообщение
так мы эту секцию запихнем в обьект маршрут . может в список ?
Только не секцию, а указатель на нее.

У вас есть эта релейная схема. Ну и опишите ее на языке программирования, где реле - объект, входы реле - слоты, выходы сигналы, а соединения описываются системой событий
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.06.2016, 16:27
Цитата Сообщение от avgoor Посмотреть сообщение
У вас есть эта релейная схема. Ну и опишите ее на языке программирования, где реле - объект, входы реле - слоты, выходы сигналы, а соединения описываются системой событий
Ну, это вы предлагаете устроить один паттерн Наблюдатель на всю станцию. Но это не ООП. При ООП вся сложность должна быть инкапсулирована в подсистемах, а сами подсистемы должны быть связаны слабо и обмениваться простыми сигналами.
Ну и надо на верхнем уровне писать максимально абстрактно. А то при изменении конструкции какой-нибудь релюшки все придется переписывать.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
28.06.2016, 16:29  [ТС]
Цитата Сообщение от Mr.X Посмотреть сообщение
Поезд замыкает секцию,
секция замыкает сама себя если она участвует в маршруте. значит маршрут замыкает секцию.
Цитата Сообщение от Mr.X Посмотреть сообщение
простыми сигналами.
вот именно. в моем случае это просто методы. говорил же каждый обьект предоставляет методы своего состояния.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
28.06.2016, 16:34
Mr.X, Я предлагаю моделировать поведение реальной системы. Объекты, в даном случае, - стрелки, светофоры и прочие реальные объекты, отражающие предметную область. И если при занятом участке пути должен загораться красный светофор в другм месте - он должен загораться и пох какой там маршрут. Как реализовать наблюдателя в этом случае (через один синглтон или в каждом объекте) - дело десятое.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
28.06.2016, 16:40  [ТС]
Цитата Сообщение от avgoor Посмотреть сообщение
пох какой там маршрут.
для маневровых маршрутов иные критерии.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
28.06.2016, 16:42
Цитата Сообщение от RAFA91 Посмотреть сообщение
для маневровых маршрутов иные критерии.
Эй, ты, кто такой, давай техзадание!©
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.06.2016, 16:46
avgoor, я понимаю вашу эмоциональность, но давайте все же без матюков. Упрощение управления сложными системами и состоит в членении их на слабо связанные подсистемы. Что касается маршрутов, то автор только о них и говорит, следовательно в данной модели это важная абстракция.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
28.06.2016, 16:48
Цитата Сообщение от Mr.X Посмотреть сообщение
Упрощение управления сложными системами и состоит в членении их на слабо связанные подсистемы.
На какие, в данном случае?
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
28.06.2016, 16:48  [ТС]
Ладно на сегодня хватит. Это только 1 процент из того как работает эта

релейная система. Теперь надо выяснить в какой момент должны вызываться

конкретные методы конкретного обьекта ???

программа работает циклически - значит что-то кого-то должно вызывать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.06.2016, 16:48

Преобразовать в ООП
Преобразуйте, пожалуйста, программу, чтоб там использовалось ООП (object). Желательно преобразовать, чтоб получилось 3 программы : 1)...

На вкладке Мой мир, на портале mail.ru идет постоянная загрузка страницы - Мой Мир, в чем дело?
На вкладке Мой мир, на портале mail.ru идет постоянная загрузка страницы - Мой Мир, в чем проблема? Сама страница открывается быстро, но...

(C) Дана строка предложение. Записать все слова в строке в обратном порядке. Пример: весь мир → мир весь
Дана строка предложение. Записать все слова в строке в обратном порядке. Пример: весь мир → мир весь Добавлено через 15 минут ...

Построить экивалентную более простую контактно-релейную схемы
Заранее спасибо за помощь!

Не могу подобрать верную схему ООП
Приветствую! Помогите, не могу подобрать схему ООП. Я в ООП новичок, все как то без этого обходился и вот решил заняться. Задача...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru