Ho del codice, che voglio presentare in UML, ma a un certo punto mi sono bloccato. Lascia che ti dica qualcosa sulla funzionalità del codice.
Ho uno spazio di lavoro in cui posso posizionare alcuni Component
s, selezionarli, eliminare, aggiungere nuovi, spostare ecc. Posso anche collegarli secondo alcune regole (ci sono diversi tipi di Component
s disponibili) . Per determinare se un gruppo di Component
s può essere collegato o meno, ho implementato alcuni semplici meccanismi. In questo meccanismo compaiono le seguenti parti:
[ EDIT : nota che "PlausibilityRule" in UML e "ConnectionRule" sono le stesse cose: è la mia supervisione]
ConnectionRule
: ottieni il tipo di connessione e controlla se una raccolta di Component
s data come parametro può essere collegata in base a questo ConnectionRule
.
ConnectionRulesSet
- contiene molte regole all'interno. Il cliente chiede un set con regole come questa: "in base a quali regole definite in un set, i componenti dati come parametro, possono essere collegati"? ConnectionRulesSet
fornisce una lista di ConnectionRules
come risposta. Un insieme di regole di connessione concrete è esposto solo all'interfaccia throug: il client non può creare un'istanza di un RulesSet concreto.
RulesSetFactory
- a seconda di molte circostanze, l'applicazione può utilizzare% diverso% di escluso. Ecco perché ho creato una factory che fornisce una corretta implementazione dell'interfaccia ConnectionRulesSet
a seconda delle circostanze specificate.
Ora diamo un'occhiata al codice cliente:
// list of components which should be verified in terms of connection plausibility:
List<Component> selectedComponents = ... ;
// Get set of rules for normal conditions:
ConnectionRulesSet setOfRules = RulesSetFactory.getRulesSet(NORMAL_SET);
List<ConnectionRule> fulfilledRules = setOfRules.getFulfilledRules(final selectedComponents);
// Do something with fulfilled rules:
for(PlausibilityRule rule : fulfilledRules){
addToAvailableRulesList(rule.getConnectionType().getName()); // display names of connetion types...
}
Il mio problema è che non sono sicuro di come creare un diagramma di classe UML per tale soluzione dal punto di vista del Cliente ... Come esporre le relazioni tra la soluzione presentata e un Cliente. Il client utilizza in realtà tutti: ConnectionRule, RulesSet, RulesSetFactory ...
C'è una delle mie idee qui sotto ... Cosa ne pensi? Hai una soluzione migliore?