![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#11 | |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
![]() Цитата:
![]() Но из того, что понял - класс Application должен содержать в себе поля C_Menu, C_Automat и C_Event_Log. У класса C_Event_Log есть открытый метод Add(), который вызывают объекты классов C_Menu и C_Automat, так же у класса C_Event_Log есть открытые методы ReadNext() и ReadPrev(), которые вызывает объект класса Application. Все правильно, все работает. В чем еще проблема? Наследовать в вашем случаи, скорее всего, ничего не надо, так как тут более уместны отношения "содержит", а не "является". Приложение содержит меню и журнал событий (на счет автомата - не вполне понял что это у вас такое) - так можно сказать, значит такой вариант является семантически правильным
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Последний раз редактировалось Blade; 15.08.2011 в 13:09. |
|
![]() |
![]() |
![]() |
#12 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]()
Да Blade, если я правильно понял, то как вариант сделать автомат и меню с конструкторами и параметром указателем на евент лог, сам евент лог создать в аппликатион и при создании автомат и меню передать на евент лог указатель. Если требуется один экземпляр евент лог, то как вариант сделать синглтон для евент лог. Если требуется отдельный екземпляр для автомат и меню, то тогда включайте экземпляр евент лог в кажждый из классов, как поле. Собственно как описано выше.
|
![]() |
![]() |
![]() |
#13 |
Регистрация: 15.08.2011
Сообщений: 8
|
![]()
Blade, почти правильно поняли за исключением одного момента. Не знаю как вызвать метод Add из другоих классов. Например сделать так:
Код:
Код:
|
![]() |
![]() |
![]() |
#14 |
В стагнации
Участник клуба
Регистрация: 29.07.2011
Сообщений: 1,303
|
![]()
Дык запиши:
Код:
Код:
Код:
Код:
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание. Последний раз редактировалось MooNDeaR; 15.08.2011 в 15:55. |
![]() |
![]() |
![]() |
#15 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
![]()
Лог, как я понимаю, это журнал для записи ошибок. Меню вообще не должно знать не про какие логи, этим должно заниматься приложение. Лучше всего сделать еще одни класс, например Error, которым будет оперировать весь проект. В меню, при возникновении ошибки создается объект Error, и возвращается из какой либо функции, приложение обрабатывает этот объект и делает запись в лог.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
![]() |
![]() |
![]() |
#16 |
Регистрация: 15.08.2011
Сообщений: 8
|
![]()
Log - это не только ошибки. Это вообще любые события. В меню могут возникнуть такие события как изменение какого-либо параметра, в автоматике могут возникнуть события как "не сработал некий автомат" или не включился двигатель, в основном классе программы могут возникнуть события как "включение контроллера", "пропало питание" или достиг максимального уровня какой-то параметр или высокое напряжение превысило некий допустимый предел. Да и вообще, надо просто фиксировать многие действия пользователя, чтобы потом можно было ткнуть его носом в его же ошибки. Поэтому основная программа должна выполняться сама собой, а класс Log должен постоянно фиксировать события. Поэтому-то из любого места программы нужно вызвать его метод Add() для добавления в очередь события. А уже раз в какой-то период методом Run() необходимо сбрасывать во флешку всю очередь. Так же необходимо из класса, который выводит на индикатор информацию, вызывать методы объекта Lod для просмотра журнала всех событий. Вот такой должен быть вездесущий объект Log.
Потому-то и возник у меня вопрос о видимости всех полей и методов этого объекта из разных классов, а так же передаче данных из одного места программы в другое. |
![]() |
![]() |
![]() |
#17 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
слушайте, а у вас логеров может быть много? или только один?
может стоит присмотрется к синглетону/статике? и еще можно в подобъекты передавать ссылку/указатель на логер от апликейшиона. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#18 |
Регистрация: 15.08.2011
Сообщений: 8
|
![]()
Вообще объект этого класса один. Потому что очередь событий сквозная. Т.к. записывать во флешку часто не рекомендуется, то я накапливаю определенное количество событий, а потом только скидываю их все на флешку. Плюс ко всему у меня слишком мало времени на работу всей программы, поэтому я ко всему прочему еще и определяю когда процессор меньше нагружен, тогда и занимаюсь флешкой. Вот почему пришлось организовывать очередь, а не записывать во флешку каждый раз как только произошло событие.
|
![]() |
![]() |
![]() |
#19 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
![]()
Тогда лучшем решением, наверно, будет паттерн одиночка (о котором тут уже вспоминали несколько раз)
http://ru.wikipedia.org/wiki/%CE%E4%...E0%ED%E8%FF%29
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
![]() |
![]() |
![]() |
#20 | |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]() Цитата:
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Видимость переменной | alexz29 | PHP | 3 | 19.02.2011 12:02 |
видимость переменных и методов в c# | Sparky | Помощь студентам | 5 | 26.07.2010 20:20 |
При удалении записей значения полей с type:=Autoincrement (т.е+) в оставшихся полей не изменяются | kenta | БД в Delphi | 2 | 29.10.2009 08:28 |
Объеденение полей запроса в для отображения нескольких полей в одном списке | mrCreator | Microsoft Office Access | 3 | 08.08.2009 00:53 |
Видимость полей в подчиненной форме | Sparxy | Microsoft Office Access | 2 | 02.06.2009 21:40 |