Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2016, 11:44   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Как сложную релейную схему преобразовать в мир ООП

Добрый день !

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

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

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

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

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

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

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

Может кто подкинет разумные идейки , как это можно правильно реализовать.

Нюансов очень много, поэтому задача не совсем простая.
RAFA91 вне форума Ответить с цитированием
Старый 28.06.2016, 12:11   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Маршрут ЕСТЬ объект
ЗНАЮЩИЙ о ВСЕХ своих "элементарных" (и не очень) объектах и О ПРАВИЛЬНОМ их состоянии для своей готовности.
значит он может
УЗНАТЬ их состояние,
ПРИНЯТЬ решение о возможности/невозможности продолжения работы
и ПОВЛИЯТЬ на это состояние в соответствии со СВОИМИ требованиями.

Объекты В СВОЮ очередь могут ОТКАЗАТЬСЯ принимать состояние указанное маршрутом, если ОНО(новое состояние) почему либо неприемлемо и могут (или должны?) УВЕДОМИТЬ об этом МАРШРУТ.

готовность маршрута == правильное состояние ВСЕХ его подсистем(объектов)!!!

Объект (НЕ МАРШРУТ) имеет право знать
в КАКОЙ МАРШРУТ он включен(он ВЕДЬ только один(или НОЛЬ) в любой момент времени)
и МОЖЕТ(ОБЯЗАН) уведомить маршрут о ЛЮБОМ КРИТИЧНОМ СВОЕМ изменении (с указанием КТО(какой объект) изменился).
Маршрут в свою очередь рассмотрев эти изменения принимает решения об изменении СВОЕГО состояния.

по окончании работы маршрут ОБЯЗАН (в случае если объекты хранят данных о маршруте) УВЕДОМИТЬ все объекты о завершении (потребовать(!) удаления своих ссылок, а не удалЯть их самому).
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 28.06.2016 в 12:33.
evg_m вне форума Ответить с цитированием
Старый 28.06.2016, 12:24   #3
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

В общем я мыслил так.

Прописую все возможные маршруты на станции в какой-то контейнер.

Что является элементами маршрута.

1. стрелки
2. участки.
3. светофоры

В свою очередь стрелки входят в конкретные участки.
Маршрут ограждается светофором.
Светофор открывается на разрешающие показание только когда маршрут готов с
проверкой условий безопасности.

Хрен его знает как это все увязать. Как работает система вроде знаю.

Пускай у меня есть на все обьекты указатели.
RAFA91 вне форума Ответить с цитированием
Старый 28.06.2016, 12:34   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Я бы выбрал агентную модель, когда каждый элемент сам себе объект и в какой-то квант времени опрашивается их состояние. Вообще в AnyLogic есть готовый набор для железнодорожного моделирования. А для своего функционала есть возможность заюзать Ява. У меня курсач как раз по жд был в AnyLogicе.
Цитата:
Если на форуме есть программисты железнодорожники
Конечно, а еще:
программисты-проктологи
программисты-дворники
программисты-летчики
Цитата:
Основная проблема заключается в разработке взаимодействия обьектов этих классов с точки зрения ООП.
Один объект вызывает методы другого. В чем проблема-то? Можно глобальный объект, который "будет знать" от кого кому что отправлять. Где-нибудь во внешнем файле делаются связи - типа объект1 связь объект2, а глобальный объект тупо исполняет и выводит состояние системы.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 28.06.2016 в 12:41.
Utkin вне форума Ответить с цитированием
Старый 28.06.2016, 12:43   #5
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

да не. надо решить эту проблему без этих прог.

На освоение этой проги уйдет куча времени, чем найдется альтернативное решение.
RAFA91 вне форума Ответить с цитированием
Старый 28.06.2016, 12:50   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
На освоение этой проги уйдет куча времени, чем найдется альтернативное решение.
Ну дело Ваше (там еще есть набор готовых моделек для обучения). Ну все остальное в силе - есть куча объектов с независимым состоянием и есть главный дирижер оркестра, который работает по бумажке. Примерно так можно.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 28.06.2016, 12:54   #7
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Благодарю за краткий обзор этой проги - но это не то.

Надо в голове придумать альтернативное решение
RAFA91 вне форума Ответить с цитированием
Старый 28.06.2016, 12:58   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Благодарю за краткий обзор этой проги - но это не то.
Я счас не про программу писал, а про то, как это сделать своими руками и вообще как в принципе часто это делается. То что Вы хотите называется имитационное моделирование, у него есть несколько способов создания моделей. Под каждую задачу обычно выбирается соответствующая модель. Под Ваш случай наиболее подходит агентное моделирование - то что написано в предыдущем посте.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 28.06.2016, 13:05   #9
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

мне нужна идея в виде человеческого набора слов и все без этих стимуляторов.

по большему счету типов обьектов не так то и много .

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

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

маршрутов очень много и к каждому присуши свои особенности.

- размыкание

- замыкание

- контроль

- безопасность

и т.д.

ох и сложная задача
RAFA91 вне форума Ответить с цитированием
Старый 28.06.2016, 13:17   #10
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
ох и сложная задача
Чего там блин сложного?
Вся система срабатывает как сумма показателей каждого объекта (например). То есть если хотя бы один объект говорит "нет" значит система не готова.
Давайте один объект возьмем. Например стрелка. У нее 2 состояния - открыто/закрыто (или право/лево, пофиг). Одно состояние разрешает, другое запрещает движение, верно? Вы же не поедите туда куда не надо по маршруту? Цепочка всех этих состояний характеризует в целом как "маршрут готов" или "ехать нельзя". Ну вот создаете класс "диспетчер", его задача отправлять запрос о состоянии объектов. Эти состояния он например сравнивает с текстовым файлом (где например написано - стрелка влево или состояние машиниста "трезв"). Вот он как диспетчер суммирует все показания. Как только есть отклонение, значит ехать нельзя.
Цитата:
все без этих стимуляторов.
Без стимуляторов нельзя. Умные дядьки много курили всякой разной травы, изобретали всевозможные велосипеды с турбореактивными двигателями и пробовали все виды грабель, вил и костылей. И внезапно все давно продумали и испробовали. Вы вместо того чтобы взять выводы, хотите пройти по их пути и в результате все равно придти к их выводам (а иначе модель не получится). Так нафига? Это дураки учатся на своих ошибках, а умные должны учиться на чужих. И потом шествие по их пути затратное по времени дело, а прочитать и понять выводы намного быстрей и безопасней (для модели).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 28.06.2016 в 13:21.
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как нарисовать сложную фигуру кнопки deniscatch JavaScript, Ajax 8 15.01.2015 21:42
Как сделать сложную замену внутри строки selform Microsoft Office Excel 3 02.11.2012 14:24
Как создать сложную таблицу в делфи? Не_шарю_в_делфи Помощь студентам 0 21.05.2012 16:57
Надо составить сложную-сложную формулу natincom Microsoft Office Excel 4 29.08.2011 09:03