2010-09-08 3 views
0

Я не эксперт в UML, я только что прошел курс до того, как окончил университет, потратив значительное количество времени на моделирование UML. Я понимаю основы, но на днях я работал над проектом и только ради собственного любопытства, мне было интересно, как вы бы моделировали обратный вызов. Вот часть кода я работал наМоделирование классов/классов обратного вызова UML

 

class OnChangeHandler(): 

    def my_init(self, rem, loc): 
     self.remotes = rem 
     self.locals = loc 

    def process_IN_CREATE(self, event): 
     #Do some work 

    def process_IN_MODIFY(self, event): 
     #Do some other work 
 
 

class Watch(): 
    def __init__(self): 

     self.wm = WatchManager() 
     self. notifier = AsyncNotifier(self.wm, OnChangeHandler(loc=self.locals, rem=self.remotes)) 
 

Я использую рамки, очевидно, таким образом, я предполагаю, что мой вопрос сводится к тому, как бы вы модель сложные отношения, где вы работаете с черным ящиком модулей и каркасов? Разве это даже не стоит тратить время? Но если это так, не большинство программ, построенных в рамках? Я нашел модели класса UML очень полезными, когда мы учились, но теперь я просто смущен.

+1

Я не уверен, что я бы диаграммировал обратные вызовы в диаграмме классов. Диаграмма классов показывает, как связаны классы. Я думаю, что обратный вызов лучше всего смоделировать с помощью диаграммы последовательности. – 2010-09-09 02:38:01

ответ

-1

Вы можете изменить рамки, изменив значение .class, чтобы получить диаграмму классов.

См. Пример обратного преобразования рамки в: http://www.ejb3.org/jar_file_reverse/jar_file_reverse.html Диаграмма классов даст представление о структуре приложения и его архитектуре.

Диаграмма последовательности также возможна, чтобы понять, что происходит при запуске приложения. Это помогает лучше понять, как класс .java мог бы реагировать на класс .class. См. Пример: http://www.ejb3.org/jar_file_reverse/jar_file_reverse.html#3.Sequence_Diagram_reverse_engineering Это очень полезно, если вам нужно добавить новый код и повторно использовать существующий скомпилированный код.

Надеюсь, это поможет.

0

Только для справки. Можно просто моделировать методы регистрации обратного вызова и вызова в классе. OTOH, если кто-то хочет иметь больше абстракции для соответствия компонентам структуры и стереотипам, можно использовать, например. путем расширения метакласса Interface с помощью стереотипа Event and Callback.

Смежные вопросы