|
|
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторВо первых у всех ваших 3-х классов нет общего класса потомка с методом "позвени". Три класс и три раз вы добавляет метод. Может торопились ? Вы поторопились анализировать предложенный пример. Базовые классы фокспро не могут быть изменены пользователем. Поэтому создан свой класс БУБЕН. от класса БУБЕН уже пронаследованы 2 класса (красный и синий), котор. и имеют общ.методы и св-ва. вот об этих 2- х классах и идет речь. от том что есть в фокспро и чем он отл-ся от др.сред разработки - не есть суть, это не тема данной беседы и данных примеров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 16:36 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
в данном случае, для более подробного объяснения воспользуюсь заимствованием трудов стороннего автора (изв. займусь плагиатом) автор Понятие базовых классов. Основные свойства классов Базовые классы Visual FoxPro хранятся в библиотеке самого пакета. Базовые классы не могут быть изменены пользователем и являются заготовками для создания пользовательских приложений. Однако, в каждом конкретном случае могут потребоваться какие-то свои особенности в функциональности объектов программы, и тогда на основе базовых классов создаются подклассы Например, на основе базового класса "Форма" можно создать пользовательский класс формы со своим цветом, размерами, кнопками перемещения по записям и т.д. На основе подкласса можно создавать сколько угодно объектов конкретных форм. Класс ведет себя как "черный ящик", т.е. инкапсулирует в себе все свойства, события, методы, обеспечивая постоянство алгоритма функционирования, тем самым уменьшая количество ошибок программирования. Подкласс наследует свойства класса, но может прибрести и новые свойства. Например, при создании своего подкласса типа "Форма" мы может унаследовать такие стандартные элементы базового класса, как кнопки закрытия окна, изменения его размеров, способности формы перемещаться, изменять размеры и т.д. Во всех случаях данные элементы будут работать одинаково, и программисту нет необходимости их программировать заново и даже беспокоиться о том, что они могут работать не так, как они должны по определению. Объекты наследуют все основные свойства подкласса, на основе которого они были созданы, и если требуется во всех объектах поменять какое-то свойство, например, цвет, это изменение надо произвести в подклассе. Оно автоматически будет унаследовано всеми объектами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 16:44 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Мамочки родные!!! Я на выходных врос задал, мне дали 2 ответа ну я и ушел фтуман на раздумья, а тут ТАКОЕ началось!!! Ну вопрос-то я задал так как сумел рассуждая на основе каких-то понятий в вфп, которые у меня есть. Может не совсем понятно Вам, нет, таки точно непонятно :) Суть какая - до сих пор я малевал процедуру main.prg откудова все запускалось и в которой была, нет совсем недавно появилась процедура выхода из проги, и которая какбы останавливалась на read events. Затем бороздя данный форум я наткнулся на статейку про создание этого самого главного файла проекта, где было сказано в конце, что лучше всего создать кастомный объект goAрр, в котором посоздавать разные методы и далее это уже будет работа с его свойствами и методами. Тут-то я и прозрел маленько. Особенно потому, что общалсо немного с Игорем Копыриным, ведущим рубрику на subscribe.ru Язык FoxPro - от простой программы к жизни с комфортом. . Вот у него я прочитал такую идею, что он вначале создает в программе все необходимые объекты, начиная, конечно с Арр, т.е. у него там ОбъектЗаконы, объектЗоны и тд и тп. Поскольку я прозрел и понял ЧТО имелось в виду (в прошлом году я ваще выпучив шары думал - ну нихрена себе какой интересный подход к созданию проги - но самому ниче было не понятно, нах создавать все этиобъекты и что оно ваще такое) то перешел к созданию этого самого оАрр. Мне понравилось. :) Я вынес отдельными методами серию SET-ов, подключение к SQL-серверу, афторизацию, выход из проги и тд. Кроме того создал пропертя типа Админ, SQLHandle и т.п. (вместо создания паблик-переменных). Все это хорошо и я начал думать дальше. Значит у меня в проге есть список работников. Думаю - надо создавать объект оРаботники, который сможет методами 1) Выдать нужного работнега (по конкретному условию) 2) выдать список работнегов (по конкретному условию) 3) выдать всех работнегов 4) работать со словарем Работнеги (Редактирование, Прием/Увольнение и тп) 5) Присовокупить к определенной группе работников их календарь распорядка работы с днями/часами 6) Получать от этого объекта что-типа доступен ли такой-то работник, согласно его календаря, на работе в такой-то день, такой-то час 7) и тд/тп Такого плана объект естесственно должен быть не один в программе. Их будет довольно много. А в меню мне нужно к примеру так - Меню Справочнеги, Пункт Работнеги. Сейчас там do form ListWorkerz with ADD|EDIT. А если у меня это уже объект, то я, скажем, даю в меню команду типа oWorkerz.ShowListOfWorkerz. Это означает что собственно oWorkerz уже должен быть и у него уже должен быть к этому моменту список работнегов, выбранный в курсор с SQL-сервера. Ведь я же не могу дать в меню несколько команд, например screen.addobj('Workerz') oWorkerz.Init, oWorkerz.ShowListOfWorkerz и тп, неговоря о проверке наличия oWorkerz. Стало быть мне теперь что? Нада в объекте оАрр малевать метод для этого пункта. В нем будет проводиццо проверка наличия нужного объекта и еси его нет - создавать, инициализировать, наполнять и все такое, а тогда уже давать oWorkerz.ShowListOfWorkerz Иначе, если все объекты сразу же создать (а еще минингит по раздаче прав, ведь не каждому клиенту в принципе будет необходимо все, а в данный момент у меня это реашется путем расдачи админом доступа к опр. пунктам меню), а раз так, то штатный цилик 650х128Мб РАМы/вынь2000 будет у клиента умирать на месте, в свапе :) вот... думаю более-менее разъяснил че имелось в виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 22:49 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
CTAC-KO... до сих пор я малевал процедуру main.prg откудова все запускалось ...Вы может и не поверите, но многие так делают до сих пор и будут продолжать делать... По поводу ООП. Просто как было верно замечено выше, не все среды разработки позволяют делать то, что позволяет делать FoxPro... Отсюда и пошли все эти объекты с их свойствами и методами... Например, в C# просто с самого начала этому учат, потому как там нет как такового FrameWork, который нам уже дали с самого начала в FoxPro + очень просто отталкиваться от данных, а не от объектов. В .NET пока все надо создавать самому и SQL внутри кода был большим ни-ни, то есть вся обработка данных проще делалась в объектах, которые передавали данные в базу данных... С версией 3.5 подход начнет меняться и надо будет еще посмотреть, как начнет меняться идеология разработки программ на .NET... Если Вы не применяли ранее объекты, то не переживайте - дело это нехитрое, просто понапридумывали много разных понятий и подходов вокруг всего этого (народ поназащищал диссертаций)... С практической точки зрения применяйте то, что Вам удобнее... Good luck! P.S. Насчет медленности работы - ООП действительно работает очень медленно. Многие пишут сначала менеджер объектов (что-то наподобие сборщика мусора) который держит открытыми только те объекты, которые нужны. Много лет назад я стоял перед выбором, перед которым стоите Вы, но победил разумный рационализм ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 23:50 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
> Стало быть мне теперь что? Нада в объекте оАрр малевать метод для этого > пункта. В нем будет проводиццо проверка наличия нужного объекта и еси его > нет - создавать, инициализировать, наполнять и все такое, а тогда уже > давать oWorkerz.ShowListOfWorkerz Ну ты же сам и ответил на свой вопрос. Если ты ВСЮ работу хочешь сделать через классы - тогда это наиболее правильное решение. Только в такой постановке задачи логичнее создавать объект oWorkez как свойство класса oApp: в oApp if !PEMSTATUS(This, 'oWorkez' , 5) && Это свойство еще не добавлено This.AddObject('oWorkez', 'classWorkez') ** Или так : *This.AddProperty('oWorkez', createobject('classWorkez')) endif This.oWorkerz.ShowListOfWorkerz Внешний вызов (не из oApp) может выглядеть так: oApp.oWorkerz.ShowListOfWorkerz Но это не правильно, т.к. лучше все таки через метод класса oApp, в котором будет проверка на присутствие свойства oWorkez, на то что свойство oWorkez - объект type('oApp.oWorkerz')='O' (или pemstats и vartype) and !isnull(oApp.oWorkerz), а потом уже вызов методов вложенного (связаного) объекта. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2008, 07:26 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
> в oApp > > if !PEMSTATUS(This, 'oWorkez' , 5) && Это свойство еще не добавлено > > This.AddObject('oWorkez', 'classWorkez') > > ** Или так : > > *This.AddProperty('oWorkez', createobject('classWorkez')) ** Или даже так: * This.AddProperty('oWorkez') * This.oWorkez = createobject('classWorkez')) > endif PS и тут Остапа понесло :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2008, 07:31 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторСтало быть мне теперь что? стало быть вначале научиться правильно создавать классы, правильно наследовать, понимать, что у них должно быть изменяемое, каким образом осуществить взаимод-е между объектами. Вопрос: Вы правильно понимаете наследованные классы? Вы понимаете, что такое ассайн и акцесс методы? Вы понимаете где необходимо пронаследовать, а где необходимо динамически видоизменить? впечатление, что Вы ринулись в бой без понимания основ. Код: plaintext авторP.S. Насчет медленности работы - ООП действительно работает очень медленно ООП чего? Где и что работает медленно? Медленно взлетает кастом класс? Странно. Тогда откуда появляются процедурные алгоритмы автор....идет более 5-ти часов ? автора раз так, то штатный цилик 650х128Мб РАМы/вынь2000 будет у клиента умирать на месте от чего? от 2-х коллекций и от 3-х, 4-х -50-ти поднятых объектов кастом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2008, 09:26 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
пример коллекции, которая динамически добавляет .... при необходимости Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2008, 09:33 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторЯзык FoxPro - от простой программы к жизни с комфортом.. вот это - просто безобразие Код: plaintext 1. 2. 3. нет, не в том, что автор именует объекты по-русски, а в том, что издеваетя над фокспро, не объявляю переменные, не задумывается над зоной вид-ти прем-х , не говоря уже о какой-то внятности и логичности виз.программирования, построения библ.классов, ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2008, 09:52 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Боюсь нарваться на праведный гнев защитников ООП :), но все-равно поделюсь личным опытом. VFP выросло из процедурного FPD многое что касается ООП добавилось, но отказываться от проверенных подходов только в дань моде ООП считаю не уместным. Знать о возможностях ООП надо, но не надо пытаться использовать их любой ценой. Курсор, например, не может быть свойством объекта. Отказаться от их использования? Зачем? CTAC-KO Я вынес отдельными методами серию SET-ов, подключение к SQL-серверу, афторизацию, выход из проги и тд. Кроме того создал пропертя типа Админ, SQLHandle и т.п. (вместо создания паблик-переменных). Я можно сказать на том же остановился. Сделал обертки для наиболее используемых наборов функций (работа с файлом, с Ini-файлом, запуск и ожидание завершения внешнего приложения и т.п.) Лично для меня в ООП важен только принцип повторно используемого кода. Если попытаться сформулировать в правило какой код собирать в объект, то оно будет звучать так: "Если какой-то кусок кода пишешь второй раз, надо скопипастить и задуматься, пишешь в третий раз - сделать класс и использовать его, на 4 раз исправить первые два на объект" На третий раз приходит уже четкое понимание того какие свойства и методы нужны объекту, на 4-й это либо подверждается, либо класс переделывается. И то за исключением случаев когда можно обойтись функцией и вставить ее в файл подцепляемый по SET PROC CTAC-KOВсе это хорошо и я начал думать дальше. Значит у меня в проге есть список работников. Думаю - надо создавать объект оРаботники, который сможет ... А в меню мне нужно к примеру так - Меню Справочнеги, Пункт Работнеги. Сейчас там do form ListWorkerz with ADD|EDIT. ... А форма разве не объект? На мой взгля форма самый идеальный базовый класс для простых объектов бизнес-логики. Курсор не может быть свойством объекта, он виден всем в DE, а если форма с PrivateDataSession, то курсор на форме становится ее свойством. Создать несколько однотипных форм фокс не запрещает. Производный класс раве что не создашь. На мой взгляд достаточно нескольких классов форм (я так делаю): 1. clsForm (производный от Form) - прописан Resize(), создание пункта меню при получении фокуса, запуск модально/немодально, автоизменение размера шрифта, контроль повторного открытия формы и еще кое-что по мелочи 2. clsFormBSpr (производный от clsForm) - работа со списком записей, есть грид и набор кнопок (добавить, удалить ...) 3. clsFormESpr (производный от clsForm) - работа с одной записью, есть набор кнопок (сохранить, отмена) и т.д. (есть еще clsFormBDoc, clsFormEDoc для документов с табличной частью, clsStepForm - для сложных расчетов с показом шагов и прогрессбаром) Создав две формы на основе clsFormBSpr и clsFormESpr, добавляю в DE нужную таблицу или КА, на первой настраиваю колонки в гриде, на второй поля ввода. Остальное взаимодействие между этими формами прописано в классах форм (поиск, добавление, правка, удаление, копирование, ввод с возможностью отмены сохранения и т.д.). В 80% случаев этого достаточно чтобы за пару минут сделать интерфейс для простого справочника, в остальных случаях прописываются ньюансы обработки и отображения конкретных данных. Все что касается бизнес-логики, то часть работы со списком добавляется в форму списка, часть касающаяся обработки конкретной записи в форму обработки записи. Если надо - всегда можно вызвать DO FORM ... NOSHOW И самый главный плюс формы - ее можно запустить одним мышекликом, в отличии от классов в VCX. Классы в PRG наверно "не умею готовить" Бывают ситуации когда такого подхода недостаточно. Например какая-то сложная логика, которую необходимо использовать на разных формах, вот в этом случае необходимо заводить отдельный класс для описания и использовать его из всех заинтересованных форм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2008, 17:23 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо авторЯзык FoxPro - от простой программы к жизни с комфортом.. вот это - просто безобразие Код: plaintext 1. 2. 3. нет, не в том, что автор именует объекты по-русски, а в том, что издеваетя над фокспро, не объявляю переменные, не задумывается над зоной вид-ти прем-х , не говоря уже о какой-то внятности и логичности виз.программирования, построения библ.классов, ... Вы зря стучитесь в открытою дверь (да еще так громко и требовательного)! Нет тут противников ООП. Все только за, но... VFP не есть полностью ООП язык. Ну например, рабочие его области со всем, что там открыто ну ни как не "ложаться" в концепцию ООП, а отчеты, а меню? Все попытки придумать для них ООП-ную обертку только загоняет проблему вглубь этих оберток. Это его и недостаток и достоинство. Вот он такой, этот VFP и мы за это его используем. Это, как машина без ограничительей по скорости и маневренности: Плохой водитель расшибется, а хороший выжмет все, что можно. Все это тут неоднократно обсуждалось и я, например, больше не буду участвовать в этой дискуссии. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 08:48 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
автордань моде да нет, не моде.. это попытка еще раз рассказать о подходе, который: - повышается производительность труда программистов и снижаются трудозатраты; - повышается надежность программ. авторВы зря стучитесь в открытою дверь я не стучусь, а просто хочу продемонстировать координально противоп-е решения задач, начать с малого и объяснить почему и как, а начинается сыр-бор с примеров, занимающих 3КБт дверь закрыта, и открывается не многим, а вот когда программист видит пронаследованные классы, почему-то это его ввергает в глубокий ступор, а работодатели мечутся в поисках программиста, который понимает классы в фокспро. авторVFP не есть полностью ООП язык и что? не нужно обучать наследованию, написанию библиотек? использованию методов и принципов ООП? так нет-же ничего, авторы в изданиях ограничиваются 2-мя страницами печатного текста автори я, например, больше не буду участвовать в этой дискуссии. ок, конечно, в данной дискуссии необходимо было продемонстрировать примеры, в которых можно было проанализировать преим-ва и не достатки, показать интересный подход к решению отдельных задач авторКурсор не может быть свойством объекта GETCURSORADAPTER( [ cAlias ] ) .... + так страниц на ацать обоснований противопоожного авторА форма разве не объект? это ужас, летящий на крыльях ночи авторКлассы в PRG наверно "не умею готовить" вот как раз там "готовить" их и не нужно, чем постить, лучше наберитесь терпения и я расскажу, пр виз-е и невиз-е классы и чем отл-ся созд-е виз-х библиотек от "готовить в прг" авторНа третий раз приходит уже четкое понимание того какие свойства и методы нужны объекту, на 4-й это либо подверждается, либо класс переделывается. Вот про это и весь разговор. я и твержу все время, анализ, анализ, синтез, синтез, снова анализ ... вот про это будет следующие сообщение автор Например какая-то сложная логика, которую необходимо использовать на разных формах, вот в этом случае необходимо заводить отдельный класс для описания и использовать его из всех заинтересованных форм логика не бывает сложной, логика или есть или ее нет (т.е. на самом деле логика есть всегда - законы существуют более 3-х тысяч лет) - есть понятие истинности и неистинности (ошибочности, ложности, изв. за каламбур) вот когда все сложно - и выручает наследование в 5 уровней + взаим-е десятка классов, в 3-- 5-ти виз-х библиотеках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 09:35 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторПлохой водитель расшибется, а хороший выжмет все, что можно. да, начинаем изучать приборы простейшие примеры использования ACCESS и ASSIGN методов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 09:57 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторНа третий раз приходит уже четкое понимание того какие свойства и методы нужны объекту, на 4-й это либо подверждается, либо класс переделывается. для того, чтобы этого не происходило, необходим анализ и синтез необходимо правильно мыслить, используя законы и методы Логики. необходимо уметь правильно обобщать и правильно производить операции деления объемов, необходимо правильно находить существенные и несущественные признаки предметов, правильно абстрагироваться от действ-ти данный рисунок - это круги Эйлера, которые как Вы видите они различны, в зависимости от того по какому основанию судить о классах. если кому-то интересно, то я продолжу данную ветку, если нет, то уж извините - "и вот закрыта в сказку дверь и ты не ...." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 10:22 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
http://forum.foxclub.ru/read.php?28,317228 авторВсе только за, но... VFP не есть полностью ООП язык. авторЯ всегда говорил, что в фоксе наиболее продвинутая модель ООП. Технология опередила свое время :) крайне противоположные мнения ..истина где-то рядом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:01 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо Что-то я совсем перестал понимать автора ;-/ Вот пример с ACCESS и ASSIGN он подтверждает (опровергает) какое утверждение из вышесказанных? Или круги с бубнами? Это все здесь по какому вопросу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:15 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторон подтверждает (опровергает) что ж ты злой то такой да ничего я подтверждать не хочу и опровергать не хочу я показываю класс, свойство и методы кому интересно - посмотрит, может не знает. это азы ООП, азы проходим, смотрим что есть в фокспро, что можно использовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:31 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
показал классический пример ( отличие, совсем иной подход к реализации ) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. авторЧто-то я совсем перестал понимать автора что не так-то? хочу объяснить начинающим что и как чтобы не пугались проектов в соурсах фокспро что не так я делаю? почему столько возмущений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:34 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторKruchinin Pahan вот чтобы это начать понимать http://fox.wikis.com/wc.dll?Wiki~VFPDesignPatternCatalog нужно начать понимать классы, нужно начать понимать абстракцию, нужно понимать, что если мы начнем абстрагироваться, то нам нужно сравнивать классы, объекты по каким-то основаниям, почему могут быть предметы сравнимые, несравнимые .... как объемы ограничить, как выделить ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:42 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
что не так я делаю? почему столько возмущений? Александр, форма подачи не та. Способы аргументации. Способы ведения дискуссии. Даже если пишешь и правильно по сути. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:47 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
> что не так я делаю? > почему столько возмущений? > > Александр, форма подачи не та. Способы аргументации. Способы ведения > дискуссии. Даже если пишешь и правильно по сути. Согласен с Sergey Sizov. Очень неприятно читать, когда начинается обсирание других и обвинение их , когда они предлагают свои решения поставленного вопроса в том, что что они не понимаю ООП. Хотя вопрос изначально был другой и автор вопроса, похоже, удовлетворился ответом (или просто боится встрявать в эту "дискуссию"). Про классы очень интересно. И новичкам будет очень полезно. Если сможете поделится своим видением (или процитировать, что тоже хорошо ( а лучше и то и то)), не говоря что другие дураки, которые ничего не понимают, то с удовольствием и я почитаю. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:55 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
ну тогда застолбим здесь высказывание, поставив жирную точку автор при использовании ООП: - повышается производительность труда программистов и снижает трудозатраты; - повышается надежность программ. и успокоимся авторформа подачи да я вот не делаю, и видел реализаций ... да нет, просто ... я не умею, я не .., это мода и мне не нужно, но я вот воткну свои круказюльки ... но формы как чесал, так и буду ... ну вот и все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:57 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторне говоря что другие дураки, которые ничего не понимают покажи, где я это написал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:58 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо авторА форма разве не объект? это ужас, летящий на крыльях ночи Ничто так не меняет точку зрения как удар в глаз. Свои эмоции надо аргументировать. Цитат из мультфильмов недостаточно. прошелмимоэто попытка еще раз рассказать о подходе, который: - повышается производительность труда программистов и снижаются трудозатраты; - повышается надежность программ. ... логика не бывает сложной, логика или есть или ее нет (т.е. на самом деле логика есть всегда - законы существуют более 3-х тысяч лет) - есть понятие истинности и неистинности (ошибочности, ложности, изв. за каламбур) вот когда все сложно - и выручает наследование в 5 уровней + взаим-е десятка классов, в 3-- 5-ти виз-х библиотеках Ага. Смотришь на этот изнаследованный код, лазишь по методам всех уровней и материшь про себя того джедая с бластером и красным мечом, который это напроектировал. Даже если это твой собственный проект законченный год назад и благополучно забытый. И в чем тут высокая производительность? В том что при внесении изменений самый нижний класс надо просмотреть и протестить всех наследников? Это повышает надежность? Или проекты выполненные по всем правилам теории ООП так хороши что не требуют внесения изменений? Инкапсуляция и наследование красивы только в теории, а на практике приходится жертвовать теорией в угоду производительности. На мой взгляд понятней и надежней использовать свойства-объекты, чем наследование. Хотя тестить при изменении тоже не мало. А у меня библиотека базовых форм едина на все проекты, постоянно используется, доработки не требует, поэтому не надо долго вспоминать что там к чему. В 99% времени работы с программой нужна именно визуализация, так почему бы не делать объекты на основе форм? В чем ужас? Про последовательность инитов в курсе. Чем это не ООП? 1. В форме легко собирается весь код для работы с конкретным объектом. Весь код и данные в одном месте. В случае чего поправил, быстро протестил и забыл. 2. Форму элементарно запускать (особенно в процессе разработки) 3. На форме простановка ControlSource делается мышекликами, а в VCX приходится руками писать А под сложной логикой понимаю то что не вписывается в мою концепцию. Реальный пример привести сложно, т.к. писать много прийдется, возьмем классический остаток товара и несколько документов его меняющих. Вся логика изменения остатков выносится в класс на основе Custom, который будет объектом свойством форм работы с этими документами. прошелмимоя и твержу все время, анализ, анализ, синтез, синтез, снова анализ ... А работу когда работать? Производительность производить? Для анализа надо сначала досконально изучить предметную область. Ладно если проект большой есть отдельный аналитик, который только этим и занимается, круги с квадратами рисует, а если я все в одном? Потеря времени на излишний анализ явно мою суммарную производительность не повысит. Я предпочитаю максимальное время анализа уделить проектированию структуры БД, чтобы можно было все данные правильно хранить, чтобы потом с нуля не переделывать, а все остальное строится уже от БД. Повторюсь что в ООП полезным вижу только повторное использование кода, и базовые классы на основе форм появились не случайно, а именно в следствии постоянного прописывания одного и того же кода в разных формах. Любой написанный разработчиком код это результат его собственного опыта и знаний. Это и есть стиль программирования, то что он сочетает в себе различные классические теории и особенности языка программирования - это нормально. И то, что эти сочетания индивидуальны для каждого разработчика это тоже нормально. Если преуспевающий разработчик пишет код идущий в разрез всех канонов программирования, то от чего его успех? Почему он должен что-то менять только потому что так не положено? Знать законы надо и для того чтобы их умышленно нарушать. Самое сложное для разработчика - понять предметную область, правила по которым работают его будущие пользователи, чтобы не получались велосипеды с квадратными колесами, слепленные по всем каконам теорий программирования, со слов заказчика, считающего многие вещи "общеизвестными" и не требующими упоминания. PS Извини за резкость :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:58 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35113380&tid=1588160]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 345ms |

| 0 / 0 |
