Форум » GUI » Все-таки ООП или псевдо? » Ответить

Все-таки ООП или псевдо?

krutoff: Сбросил последнюю версию OOHG - очень понятно - когда объекты - свойства, методы. Жаль, нет класса TSBrowse. Мне кажется это более прозрачней, чем псевдо стиль. Может, надо объединить усилия ? Какие мнения?

Ответов - 16

Andrey: krutoff пишет: Сбросил последнюю версию OOHG А что это такое и где его можно посмотреть ?

gfilatov: Andrey пишет: где его можно посмотреть ? Брать отсюда (последняя сборка датирована 29 ноября): http://sourceforge.net/projects/oohg

gfilatov: krutoff пишет: Какие мнения? Олег! Это давний спор: что удобнее и проще - процедурное программирование или ООП. Поскольку Харбор используют преимущественно клипперисты, вышедшие из ДОС, то для быстрого освоения под Виндами, мне кажется, что для них понятнее псевдо-ООП, который на самом деле заменяется препроцессором на вызов функций DoMethod(), GetProperty() и SetProperty() в библиотеке MiniGUI. Ну а для профи более приятен ООП-стиль программирования с его наследованием, инкапсуляцией и полиморфизмом Как говорится, на вкус и цвет...


Петр: krutoff пишет: Мне кажется это более прозрачней, чем псевдо стиль. Мне тоже krutoff пишет: Может, надо объединить усилия ? В смысле свести OOHG и MiniGUI Extended ? Или перевести MiniGUI Extended на ООП ? Или написать класс-обертку TSBrowse для OOHG ? Или сделать очередной форк ( например OOHG Extended ) ?

gfilatov: gfilatov пишет: Это давний спор: что удобнее и проще - процедурное программирование или ООП Да, кстати, критику ООП-подхода можно посмотреть по этой ссылке (на английском ): http://www.geocities.com/SiliconValley/Lab/6888/oopbad.htm

SergeJa: два мира - две правды.. кус кода из minigui function _DefineBtnTextBox ( ControlName, ParentFormName, x, y, w, h, ; cValue, ProcedureName, bitmap, BtnWidth, FontName, FontSize, ; ToolTip, nMaxLenght, lUpper, lLower, lNumeric, lPassword, ; uLostFocus, uGotFocus, uChange , uEnter , right , HelpId , ; bold, italic, underline, strikeout , field , backcolor , fontcolor , ; invisible , notabstop , nId ) ... Public &mVar. := k ... Не правда ли, красиво и понятно, а? а реализация!! какой-то массив _HMG_aControlPicture внутри. Да еще и Public создается. А грохать его - кто будет? Ответ - а никто. Так сделано, так придумано. Horror.. Кроме того, "внутренние" глобальные переменные для каждого элемента управления - это по меньшей мере - нонсенс. В результате MiniGui - большой черный ящик, к тому же неаппетитно написанный. Все видимые проблемы максимально маскирУются #command и #xcommand. PPO выглядят ужасающе. Нормальный подход при нормальном (ООП) программировании: oBtnTextBox := TBtnTextBox( Owner ) oBtnTextBox:HelpId := <..> oBtnTextBox:OnClick := {|oSender| <..> } oBtnTextBox:FontName := <..> // здесь автоматом может вызываться, например, ::Invalidate для рефреша <...> (прочие методы и свойства). Не правда ли, гораздо понятнее и проще - как в реализации, так и в использовании, да и в добавлении в класс новых свойств? Вывод - hwgui или OOHG. Первый - предпочтительнее (платформонезавиcимый, наш и тд). Вот к ним надо и присматриваться. Писать samples, развивать библиотеки.

Петр: SergeJa пишет: два мира - две правды.. Это процедурное программирование и ООP - опять два мира? А AOP? FOP? Другие подходы уже не в счет? SergeJa пишет: Function _DefineBtnTextBox ( ControlName, ParentFormName, x, y, w, h, ; cValue, ProcedureName, bitmap, BtnWidth, FontName, FontSize, ; ToolTip, nMaxLenght, lUpper, lLower, lNumeric, lPassword, ; uLostFocus, uGotFocus, uChange , uEnter , right , HelpId , ; bold, italic, underline, strikeout , field , backcolor , fontcolor , ; invisible , notabstop , nId ) ... Public &mVar. := k ... Не правда ли, красиво и понятно, а? Вполне сравнимо с hwgui CLASS HEdit INHERIT HControl ... METHOD New( oWndParent,nId,vari,bSetGet,nStyle,nLeft,nTop,nWidth,nHeight, ; oFont,bInit,bSize,bPaint,bGfocus,bLfocus,ctooltip, ; tcolor,bcolor,cPicture,lNoBorder, lMaxLength, lPassword ) CLASS HEdit или с OOHG CLASS TText .. METHOD Define( cControlName, cParentForm, nx, ny, nWidth, nHeight, cValue, ; cFontName, nFontSize, cToolTip, nMaxLength, lUpper, lLower, ; lPassword, uLostFocus, uGotFocus, uChange, uEnter, right, ; HelpId, readonly, bold, italic, underline, strikeout, field, ; backcolor, fontcolor, invisible, notabstop, lRtl, lAutoSkip, ; lNoBorder, OnFocusPos, lDisabled, bValid ) CLASS TText SergeJa пишет: Да еще и Public создается. А грохать его - кто будет? Ответ - а никто. С каких пор удалить Public стало проблемой? SergeJa пишет: Все видимые проблемы максимально маскирУются #command и #xcommand. PPO выглядят ужасающе. Clipper, [x]Harbour, hwgui, OOHG и т.д. активно используют препроцессор, ну и что в этом плохого? Вы бы видели PPO Clipperа ( USE, CREATE INDEX, APPEND FROM..) - вот где ужас, так ужас SergeJa пишет: В результате MiniGui - большой черный ящик, к тому же неаппетитно написанный. Примерно так выражаются линуксоиды по отношению к MS Window Только MiniGui Extended поставляется с исходным кодом. SergeJa пишет: Вывод - hwgui или OOHG. Первый - предпочтительнее (платформонезавиcимый, наш и тд). Вот к ним надо и присматриваться. Писать samples, развивать библиотеки. Я б добавил еще HbWxW: xHarbour bindings for wxWidgets CrossPlatform GUI Library Mareka Paliwoda - классический ООП подход, Xailer ничего, хоть и коммерческий, но ООП рулит Но, как было сказано, на вкус и цвет.. Присматриваться надо, писать, развивать - нет проблем. Но загляните на hwgui.fastbb.ru - сколько там зарегистрированных участников. Если бы не энтузиазм А.Кресина, большой ему респект, то..

gfilatov: SergeJa пишет: Да еще и Public создается. А грохать его - кто будет? Эти Public переменные должны быть очищены автоматически при удалении этого элемента управления. SergeJa пишет: В результате MiniGui - большой черный ящик Мне кажется, что для прикладного программиста любой инструментарий выглядит как черный ящик - будь то СИ, Дельфи, Бейсик, Харбор или что-то еще SergeJa пишет: Все видимые проблемы максимально маскирУются Какая уж тут маскировка, если есть все исходники SergeJa пишет: Писать samples, развивать библиотеки. Думаю, что это дело сугубо добровольное...

SadStar3: критика ООП основана на том что коммунизм(=социализм) это плохо.

gfilatov: SadStar3 пишет: коммунизм(=социализм) это плохо Никакой политики...

Петр: SadStar3 пишет: критика ООП основана на том что коммунизм(=социализм) это плохо. Читали невнимательно - критика ООП не привязана к оценке коммунизма ( один абзац о экономическом комунизме ) и вывод Communis also looked good in theory, but its base assumptions about human nature and change patterns missed their mark. Коммунизм также ( как и ООП ) выглядел хорошим в теории, но его основные предположения о человеческой природе и образцах изменения не достигли цели. Автор также не отбрасывает ООП, хотя и жалуется, что выбор такого направления существенно замедлил развитие других направлений в программировании. Критика автора, скорее всего, основывается его личном опыте в разработке программ I have been programming small and medium custom business applications for most of my career. Но вобще-то вернемся к теме разговора GUI ( The GUI Link ) и здесь автор отдает должное ООП решениям, делает предположение, что рост популярности ООП связан с GUI разработками, и что теперь ООП GUI предлагается как решение всего и вся. И далее говорит : "ООП само по себе не позволяет программам делать вещи, которые они не могли сделать прежде". С чем в принципе не согласиться трудно.

Григорьев Владимир: Петр пишет: И далее говорит : "ООП само по себе не позволяет программам делать вещи, которые они не могли сделать прежде". С чем в принципе не согласиться трудно. В программировании важно не что делать, а как делать!

SadStar3: Вчера посмотрел примеры из OOHG и не нашел отличий от MiniGUI. Хотя и повторно открыл для себя некоторые возможности MiniGUI. Может ктонибудь ткнет пальцем - куда надо смотреть?

krutoff: В исходниках библиотеки OOHG все прозрачнее

Петр: SadStar3 пишет: Вчера посмотрел примеры из OOHG и не нашел отличий от MiniGUI. Смотрите примеры MainDemo и oohg, все остальное действительно взято из MiniGUI (не Extended) и должно демонстрировать, что старый код написанный для использования с MiniGUI не надо будет переписывать при переходе на OOHG. Впрочем это только мои догадки, может нет времени переписать примеры или желания (желающих).

gfilatov: Петр пишет: может нет времени переписать примеры или желания (желающих). Петр, Думаю, что Вы не далеки от истины. У меня сложилось подобное впечатление...



полная версия страницы