Skip to content

Diagrama de Clases

Joaquin (Pato) Decima edited this page May 3, 2024 · 1 revision

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

VApps

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

image

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.

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

image

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

Clone this wiki locally