Варианты проектирования класса...

fedotxxl

Well-known member
09.11.2005
614
0
#1
Привет)
Думаю как лучше спроектировать - посоветуйте
Предположим у меня есть класс, получает на вход notesDocument, имеет набор функций.
Как лучше сделать: nd забивать в конструкторе / nd передавать в параметр каждой функции. Второе мне больше нравится, т.к. класс не нужно переинициализировать для нового документа, но насколько это правильно с точки зрения проектирования
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#2
все зависит от задач, которые будут возлагаться на класс...
если это прокси-класс для NotesDocument, то как-то глупо передавать в каждый метод объект документа, а если это класс для обработки многих документов одинаковым способом, то смысл есть, но будет ли он отличаться от процедуры?.. если нет, то в классе смысла нет, если одна процедура будет вызывать множество других, то, возможно, имеет смысл инкапсулировать все это в класс, но к ООП это не будет иметь отношения... такое в общем...
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#3
с т.з. проектирования существуют статические методы в классах :lol: когда инициализация и вовсе не нужна
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#4
lmike, ты имхо запутываешь возможности языка и понятия :lol:
 
K

K-Fire

#5
Если бы в лотусе еще были статические методы... Эх, мечты мечты :lol:
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#6
что тебе мешает имитировать их? создал библиотеку, создал класс, в ней глобальную переменную-объект, там же инициализровал и вуаля :lol:
 
K

K-Fire

#7
что тебе мешает имитировать их? создал библиотеку, создал класс, в ней глобальную переменную-объект, там же инициализровал и вуаля :lol:
Именно так и делаю, суть в том что это имитация. IBM-у никто не мешал, по крайней мере начиная с 6й версии, реализовать больше возможностей для ООП. Хотя о чем я вообще говорю, если до сих пор нет нормального редактора для классов в скрипте.


PS 8.5.1 бета якобы вышла уже недели 2 назад, кто-нить в курсе где скачать ?
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#8
а собсно, где статические классы есть кроме явы?.. в сипипи разве были?.. в паскале до версии делфи 6 вроде не было ))
смалтолк не знаю... короче кроме явы не знаю где они есть :lol:)
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#9
я ничего не запутываю :(
в С++ тоже такие есть, в шарпее
в паскале (объектном) - просто не помню, вроде тоже были
в smalltalk нет такого названия, но "поведение" такое есть (почти не знаю смолтолк)

для ООП - это "нормальный тип" вызовов
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#10
lmike, знаешь, наверное я о чем-то другом думал, когда тебе отвечал ))
статические методы тут вполне подойдут, смотря чего надо...
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#11
Если бы в лотусе еще были статические методы... Эх, мечты мечты :(
в LDN они есть, реализовано в java ;), надо не мечтать, а пользоваться :)
Lotus Script вынуждены пользовать в UI, в остальных случаях, я лично, не вижу целесообразным
 
K

K-Fire

#12
lmike, ты говоришь так, как будто у тебя во всех серьезных приложениях используется ява. И везде где только можно делаешь вызовы Java-агентов, LSJ-бриджи и т.п. И на любую кнопку 1й раз у тебя всегда JVM стартует? И диалоги ты наверное на SWT делаешь, или на чем там еще в яве можно?

И пишешь ее ты наверное в эклипсе, и там же отлаживаешь? Только тогда объясни, зачем тогда тебе лотус вообще нужен? :(
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#14
lmike, ты говоришь так, как будто у тебя во всех серьезных приложениях используется ява. И везде где только можно делаешь вызовы Java-агентов, LSJ-бриджи и т.п. И на любую кнопку 1й раз у тебя всегда JVM стартует? И диалоги ты наверное на SWT делаешь, или на чем там еще в яве можно?

И пишешь ее ты наверное в эклипсе, и там же отлаживаешь? Только тогда объясни, зачем тогда тебе лотус вообще нужен? :)
я не вижу смысла противопоставления, джава - родной язык для LDN (с оговоркой - с опред. версии ;) )
джава код я пишу почти вслепую, в убогом дизайнере нотусов (при условии его малого объема ;) )
домино замечательная платформа и я не раз это подчеркивал
супрайз, но жвм у домины будет стартовать один раз ;), от этого и проистекают нек. "особенности" использования
 
K

K-Fire

#15
я не вижу смысла противопоставления, джава - родной язык для LDN (с оговоркой - с опред. версии :) )
C какой?

джава код я пишу почти вслепую, в убогом дизайнере нотусов (при условии его малого объема ;) )
домино замечательная платформа и я не раз это подчеркивал
супрайз, но жвм у домины будет стартовать один раз ;), от этого и проистекают нек. "особенности" использования
Может тогда поделишься опытом? В действительности мне уже давно хочется уйти от скрипта, но я пока не вижу как в существующей стандартной архитектуре лотус-приложений можно по максимуму задействовать яву.
 

TIA

:-)
Lotus team
15.05.2009
790
3
#16
супрайз, но жвм у домины будет стартовать один раз wink.gif, от этого и проистекают нек. "особенности" использования
Не означает ли это, что можно задать некие "глобальные" объекты, с временем жизни большим, чем у исполняемого модуля? Например, Java-объект, порождённый в QuerySave формы, может ли стать каким-то образом доступным в агенте? Я не имею в виду искусственную эмуляцию долгоживущих объектов через такие механизмы, как сериализация, а реальную. Относится ли данное поведение и к объектам-обёрткам над notes-объектами?
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#17
джава код я пишу почти вслепую, в убогом дизайнере нотусов (при условии его малого объема :) )
зачем так корячиться, поставьте себе эклипс или еще что, настройте связку с лотусом, пишите и дебажьте код..
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#18
не помню, как в 4.6, но с R5 можно было уже писать на джава, LS2J бридж появился, по-моему в 6-ке

а какой опыт нужен? В дизайнере есть java объекты, в либах и агентах к примеру
из формах пока нельзя "напрямую" вызвать java, но это чисто UI заморочки

Т.о. библиотеки можно писать на java (для бэкэнда), можно создавать собственные jar и цеплять их "снаружи"
композитные приложения в 8-ке...


Не означает ли это, что можно задать некие "глобальные" объекты, с временем жизни большим, чем у исполняемого модуля? Например, Java-объект, порождённый в QuerySave формы, может ли стать каким-то образом доступным в агенте? Я не имею в виду искусственную эмуляцию долгоживущих объектов через такие механизмы, как сериализация, а реальную. Относится ли данное поведение и к объектам-обёрткам над notes-объектами?
с нотусёвыми объектами сложнее :) - ониж натив вызывают (можно напороться на крэш в длл). Очереди юзал, под клиентом...
долгоживущий объект есть в Нотусах и Домине - очереди (недостаток - малый объем хранения), но их проще через АПИ юзать

есть примеры реализаций адынов для джава кода http://www.nsftools.com/tips/JavaTips.htm#javaaddin

остаётся вопрос передачи объектов, но как мне кажется (не пробывал) заюзать статик или синглтон из внешней библы - не составит проблем
вопрос многотредовости я не исследовал (насколько нервно ИБМ жвм на это отреагирует)

зачем так корячиться, поставьте себе эклипс или еще что, настройте связку с лотусом, пишите и дебажьте код..
на 64-бит линухе такая связка проблематична ;) - у Нотусей 32бит библы с жёсткой (хардкоденой) привязкой
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#20
эклипс 64 бит, джава 64 бит, эклипс 32 бит взлетает, но нехоца держать 2-а эклипса
нотусёвая либа - 32 бит, под 64 жвм не взлетела (падает в корку) после прописывания LD
джава 32-бит работает в 64 бит линухе