Sono di fronte al seguente enigma: il nostro software ha una classe base astratta per gli oggetti algoritmici. Tutti questi oggetti hanno un metodo comune execute()
, ad es .:Parametri generici (quasi) auto-descrittivi in C++ accoppiato con una GUI?
class Algorithm
{
public:
// [...]
virtual void execute() = 0;
// [...]
};
Per ogni algoritmo che vogliamo implementare, abbiamo semplicemente ereditare dalla classe base e memorizzare tutti gli oggetti caricati algoritmo in una posizione centrale. Fin qui tutto bene.
Il problema ora risiede nei parametri di un algoritmo. Vogliamo essere in grado di descrivere per ogni algoritmo i parametri che devono essere impostati (da una classe esterna). A tal fine, abbiamo assegnato ad ogni algoritmo un oggetto ParameterList
che contiene i suoi parametri. Devo chiarire che, per noi, un parametro è costituito da un certo tipo di tipo (come ad esempio int
) e un'etichetta (come "numero di iterazioni).
Il problema ora inizia quando vogliamo collegare il ParameterList
ad un certo genere della GUI Ovviamente, i nostri algoritmi non dovrebbero avere alcuna "conoscenza" dell'API grafica (Qt, GTK, ecc.) che stiamo usando, tuttavia, dalla stessa parte, vogliamo essere in grado di descrivere semanticamente i parametri degli algoritmi, ad esempio specificando che l'algoritmo richiede un nome di file . Come viene quindi visualizzato questo nome spetta alla GUI.
esiste un modo per combinare questo ParameterList
con qualche tipo di conoscenza di tipo semantico?
Mi rendo conto che questa domanda sembra molto vaga. Tuttavia, non sono autorizzato a pubblicare esempi di codice non banali (per ragioni NDA). Quindi, qualcuno ha dovuto affrontare un problema simile in passato?
Per riassociare: Vogliamo che i nostri oggetti descrivano i parametri che richiedono a una GUI, senza conoscere i dettagli esatti della GUI.
OK, guarda, * questa è * una buona domanda. E anche da un nuovo poster. C'è speranza, dopo tutto. –
un altro metodo virtuale implementato in ogni classe di algoritmo che fornisce l'elenco dei parametri richiesti e le informazioni sul tipo (tale nome file -> quindi un campo di testo con un pulsante open-file, intero -> pulsante di rotazione ...) e così via ... la GUI chiede i parametri da mostrare per l'esecuzione di algo ... perché no? – ShinTakezou