Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #30 : 14-07-2010 14:50 » |
|
private: //типа из вашей статьи не сама такая умная. HANDLE hCom;
это типа инкапсуляция называется Кстати, точку с запятой после классов забываешь. По вопросу: непонятно. То ли описание классов, то ли выдранные из классов функции. Лучше русскими словами расскажи задачу Когда открыт ком порт COMxx , с ним через его хендл могут работать сколько угодно участников приложения одновременно (синхронизировать не забывай только, если многопоточность есть).
|
|
|
Записан
|
|
|
|
ann_nef
|
|
« Ответ #31 : 15-07-2010 05:11 » |
|
Ага, инкапсуляция . От одного слова дурно становится, а всего-навсего по-русски можно сказать, что скрытая от публики ,в данном случае, переменная. В вопросе - это не кусок проги, а попытка проиллюстрировать задачу, с кот. пока не справилась. По-русски : 1.Создала класс MyComPort, куда загнала все ф-ции работы с прибором. 2.Основной диалог с меню обращается к этому классу MyComPort и всё ОК! 3.В одном из пунктов этого меню вызывается ещё один диалог,с многими настройками. В этом втором диалоге я обращаюсь к тем же ф-циям класса MyComPort и НЕОК!
НО! Когда я перед вызовом второго диалога закрываю порт, а в нём открываю заново, то получила,что нужно было. А хотелось бы, что порт был открыт всё время работы программы.
Странно то,что в измененном приложении Pr,кот. минимизированный вариант моей пр-мы, это получилось( порт открыт всё время и все диалоги работают) Мне кажется, что опять тот же вопрос о неумении работы с классами.
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #32 : 15-07-2010 06:11 » |
|
ann_nef, расскажи, а зачем ты "засунула" в MyComPort все функции работы с прибором?
А вдруг тебе понадобится работать с другим прибором? И там будут другие функции? Будешь писать новый класс?
Пример. У тебя есть класс приборов, который работает с 485-м интерфейсом (почти ком-порт), но протоколы связи между приборами разные. Будешь писать класс под каждый прибор?
Изучаем НАСЛЕДОВАНИЕ.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #33 : 15-07-2010 06:52 » |
|
Ага, инкапсуляция . От одного слова дурно становится, а всего-навсего по-русски можно сказать, что скрытая от публики ,в данном случае, переменная.
Есть такое слово - "профессионализмы". И их надо знать. А хотелось бы, что порт был открыт всё время работы программы. А если открывать порт всегда? В каждом диалоге? Только в ф-ции открытия порта сначала проверять, если порт ещё не открыт, то открыть, а если открыт, то просто звершить ф-ю.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
ann_nef
|
|
« Ответ #34 : 15-07-2010 07:03 » |
|
Джон, так и сделаю. И у Алексея в статье так же.
И классы разделю , не всё сразу.
Ага, профессионализьмы! Или переводчики профлит-ры делают кальку с английского, не находя в своём лексиконе русских аналогов. Знать будем, обязательно : инкапсуляция и полиморфизм - столпы ООП.
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #35 : 15-07-2010 07:06 » |
|
....И классы разделю
Не откладывай на завтра то, что нужно было сделать вчера
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #36 : 15-07-2010 07:26 » |
|
Ага, профессионализьмы! Или переводчики профлит-ры делают кальку с английского, не находя в своём лексиконе русских аналогов. Ага, например "файл", "принтер", "компьютер", "монитор", "дисплей" и тд. Выучить и привыкнуть гораздо проще, чем придумывать сложные русские эквиваленты. Представь, каждый раз когда тебе нужно употребить слово инкапсуляция, ты будешь говорит: "свойство языка программирования, позволяющее объединить и защитить данные и код в объект и скрыть реализацию объекта от пользователя (прикладного программиста)." ann_nef, в тему. Ты нариосвала схему твоей программы?
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
ann_nef
|
|
« Ответ #37 : 15-07-2010 08:19 » |
|
В процессе рисования. Я всё время рисую, иначе в старой пр-ме не разобраться. свойство языка программирования, позволяющее объединить и защитить данные и код в объект и скрыть реализацию объекта от пользователя Вот это очень понятно.
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #38 : 15-07-2010 08:22 » |
|
А глянуть можно?
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Вад
|
|
« Ответ #39 : 15-07-2010 08:40 » |
|
1.Создала класс MyComPort, куда загнала все ф-ции работы с прибором. 2.Основной диалог с меню обращается к этому классу MyComPort и всё ОК! 3.В одном из пунктов этого меню вызывается ещё один диалог,с многими настройками. В этом втором диалоге я обращаюсь к тем же ф-циям класса MyComPort и НЕОК!
НО! Когда я перед вызовом второго диалога закрываю порт, а в нём открываю заново, то получила,что нужно было. А хотелось бы, что порт был открыт всё время работы программы.
А чем вызвана потребность давать рулить портом из второго диалога? И если такая потребность реально существует, и по-другому никак - может, этому второму диалогу при инициализации отдавать тот же объект порта? Порт ведь по сути один-единственный, и соответственно представлен единственным объектом в каждый момент времени. И тогда ничто не мешает (точнее, не вижу, что могло бы помешать) всем нуждающимся работать с этим общим объектом, не захватывая и не освобождая ресурс для других нуждающихся на каждый чих.
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #40 : 15-07-2010 09:32 » |
|
Вад, собственно говоря, я на это же "намякивал да намякивал" в #8. Просто ей приходится решать сразу кучу проблем одновременно: и Студия, и ООП, и порт. Как там у классика: "На нашу долю выпало большое счастье и... раздавило её." (с)
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #41 : 15-07-2010 10:32 » |
|
Ань, забудь на время про диалоги - напиши классы без диалогов. Диалоги - это только для общения с пользователем, их потом отдельно напишешь
|
|
|
Записан
|
|
|
|
ann_nef
|
|
« Ответ #42 : 23-11-2010 07:56 » |
|
Джон и Алексей, возвращаюсь к этой теме. Многое за эти месяцы поняла о чем вы летом оба говорили. Я о классах и тд в своей задаче. Но, хотелось бы услышать вашу критику сейчас, когда я собираю окончательный вариант. Задача: многоэтапное тестирование прибора,подключенного через СОМ порт к компу. Излагаю моё решение по классам: 1. Класс этапа - текстовая инструкция( включить, подключить внешние уст-ва,заглушки и тд) функция - непосредственно тест текстовое описание завершения удачного текстовое описание завершения с ошибкой(описание возможной неисправности) 2. Класс работы с прибором - чтение-запись в ПЛИС обмен с микроконтроллером запуск ЦАП и АЦП и тд 3. Класс работы с СОМ портом - инициализация открытие-закрытие чтение-запись байта
Добавлено через 3 минуты и 38 секунд: Ай, не дописала предыдущий пост.
Тест из класса Этап использует функции класса Работы с прибором, а он в свою очередь ф-ции Работы с портом.
Так или не так?
|
|
« Последнее редактирование: 23-11-2010 08:00 от ann_nef »
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #43 : 23-11-2010 08:05 » |
|
а алгоритм ? Сами по себе классы как-то ничего не объясняют, если честно
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #44 : 23-11-2010 09:24 » |
|
Эммм... 3. - практически ОК, я бы ещё добавил установку/считывание параметров порта.
Если имеется ввиду, что 2. не работает непосредственно с железом, а только подготавливает данные (вот это смутило: "чтение-запись в ПЛИС, обмен с микроконтроллером"), то тоже правильно. Т.е. этот класс отвечает за подготовку данных и спец. команд, которые будут отправлены к устройству, уже в формате данных и команд устройства. А так же могут быть приняты от устройства и расшифрованы.
Ну и 1. Это насколько я понял симулятор работы с устройством. Нууу его логику сложно анализировать, незная специфики прибора. Хотя я думаю, там всё должно быть однозначно.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
|