-
Notifications
You must be signed in to change notification settings - Fork 0
Diagrama de Clases
Para poder estudiar de manera más simple las clases y la composición de las aplicaciones vamos a dividirlo en su esqueleto (el origen de toda VApp) y luego sobre eso veremos el dibujo final
Para iniciar vamos a repasar rápidamente el diagrama de clases de las VApps para comprender la naturaleza de estas aplicaciones, podrán ver que es una versión simplificada del diagrama correspondiente a Componere
classDiagram
ApplicationWindow *-- QApplication
ApplicationWindow <|-- VSKWindow
ApplicationWindow *-- ApplicationBinding
ApplicationWindow *-- VSKConfigManager
VSKWindow <|-- QtWindow
VSKWindow *-- QWebChannel
VSKWindow*--*QWebEngineView
VSKWindow*--VSKJavaScript
VSKJavaScript*--QWebEngineView
QFileSystemWatcher<--ApplicationWindow
class QApplication{
+setApplicationName()
+setApplicationVersion()
+setOrganizationName()
+setWindowIcon()
+exec()
}
class QtWindow{
+QApplication app
+show()
}
class QFileSystemWatcher{
+Array files
+fileChanged.connect()
+addPaths()
}
class ApplicationBinding{
+startMove()
+startResize()
+exit()
+minimize()
+toggleMaximize()
+loadUIConfig()
}
class ApplicationWindow{
+ApplicationBinding binding
+VSKConfigManager configManager
+set_position()
+send_Javascript()
+load_ui_config()
}
class VSKConfigManager{
+get()
+reload()
}
class VSKWindow{
+QWebChannel channel
+QWebEngineView webview
+VSKJavaScript javaScript
+__set_basic_attributes()
+load_html()
+__set_webview_properties()
}
class VSKJavaScript{
+page
+send()
+_is_file_or_string()
}
class QWebChannel{
}
class QWebEngineView{
+QtWindow window
+page
+webContent
+load()
+settings()
+setContextMenuPolicy()
}
Este modelo simplificado representa el origen de toda VApp, claramente la clases están reducidas con el fin de solo mostrar las propiedades o métodos que se involucran explícitamente y poder entender de una manera más simple el diseño. Ahora sí entendiendo esto vamos a ver un poco más a fondo el diagrama de componere.
Vamos a notar, inicialmente el cambio de algunos nombres, por ejemplo lo que figuraba como ApplicationWindow
ahora recibe el nombre de ComponereWindow
y lo mismo pasa con ApplicationBinding
que pasó a llamarse ComponereBinding
classDiagram
ComponereWindow *-- QApplication
ComponereWindow <|-- VSKWindow
ComponereWindow *--* ComponereBinding
ComponereWindow *-- VSKConfigManager
ComponereBinding *-- QApplication
ComponereBinding *-- VSKIconManager
ComponereBinding *-- VSKDisks
ComponereBinding *-- VSKInfoHard
VSKWindow <|-- QtWindow
VSKWindow *-- QWebChannel
VSKWindow*--*QWebEngineView
VSKWindow*--VSKJavaScript
VSKJavaScript*--QWebEngineView
QFileSystemWatcher<--ComponereWindow
class QApplication{
+setApplicationName()
+setApplicationVersion()
+setOrganizationName()
+setWindowIcon()
+exec()
}
class QtWindow{
+QApplication app
+show()
+windowHandle()
+showMinimized()
+isMaximized()
+showNormal()
+showMaximized()
}
class QFileSystemWatcher{
+Array files
+fileChanged.connect()
+addPaths()
}
class ComponereBinding{
+ComponereWindow window
+QApplication app
+VSKIconManager iconManager
+VSKDisks disks
+VSKInfoHard infoHard
+getHome()
+startMove()
+startResize()
+exit()
+minimize()
+toggleMaximize()
+loadUIConfig()
+getIcon()
+save()
+install()
+getDisks()
+getHardInfo()
}
class VSKInfoHard {
+getInfo()
}
class VSKDisks {
+getDisksList()
}
class VSKIconManager{
+get_Icon()
}
class ComponereWindow{
+ComponereBinding shareObject
+VSKConfigManager configManager
+set_position()
+send_Javascript()
+load_ui_config()
}
class VSKConfigManager{
+get()
+reload()
}
class VSKWindow{
+QWebChannel channel
+QWebEngineView webview
+VSKJavaScript javaScript
+__set_basic_attributes()
+load_html()
+__set_webview_properties()
}
class VSKJavaScript{
+page
+send()
+_is_file_or_string()
}
class QWebChannel{
}
class QWebEngineView{
+QtWindow window
+page
+webContent
+load()
+settings()
+setContextMenuPolicy()
}
Podemos notar que los cambios son triviales, se centran más en las funcionalidades que agregan que el modificar la arquitectura principal de clases, de esta forma, extenderlo o modificarlo es relativamente más simple una vez tenemos conocimiento sobre el funcionamiento de las VApps