Domanda

Sto cercando riferimenti e documenti sul seguente argomento.

  1. Generale , alcuni linguaggi di programmazione consentono cambiamenti dinamici alle classi. Come esempio, una nuova variabile di istanza ‘peso’ può essere aggiunto al Edge classe (la classe dei bordi non ponderata dei grafici). Ma quello che dovrebbe accadere con gli oggetti bordo esistenti?

    Si può essere aggiornato per includere la nuova variabile esempio con un valore di default, forse 0 peso, nell'esempio bordo. O oggetti esistenti rimangono le stesse.

  2. contesto orientato programmazione, situazioni simili possono verificarsi quando un contesto viene dinamicamente attiva in fase di esecuzione. Ciò può influenzare modifiche ai metodi attualmente eseguiti (anche se sono preoccupato all'esecuzione filo singolo al momento).

  3. In considerazione modelli di progettazione , quando un oggetto proxy avvolge un altro oggetto, i riferimenti al vecchio oggetto possono aspettarsi alcuni invarianti che l'oggetto proxy non aderire. Questo può portare a inconsistenze quando un oggetto è avvolto /’aggiornata’ con un oggetto proxy.

Ci sono riferimenti che lista i possibili modi per trattare il problema in caso di dinamica modifiche / attivazione? Come le opzioni per mantenere lo stato di coerenza?

ho guardato soprattutto nelle comunità di evoluzione dinamica software, la programmazione orientata al contesto e componenti software. Ci sono altre comunità importanti posso cercare di trovare i riferimenti?

È stato utile?

Soluzione

Un recente articolo su questo argomento che mi sono imbattuto IS incrementali aggiornamenti dinamici con i contesti di prima classe by Erwann Wernli, Mircea Lungu, e Oscar Nierstrasz. L'approccio adottato nel documento non si basa su aggiornamenti globali. Piuttosto, più versioni di un sistema di operare contemporaneamente in quello che viene chiamato un di contesto . Gli oggetti vengono gradualmente migrati da un contesto all'altro, momento in cui viene eseguito un aggiornamento. trasformazioni bidirezionali sono utilizzati per mantenere la coerenza tra i vecchi un nuovo contesto.

In generale, penso che è necessario disporre di un paio di funzioni di aggiornamento per qualsiasi aggiornamento, uno per le classi di aggiornamento, l'altra per l'aggiornamento degli oggetti. Il vero problema è quando / come si fa a applicare le funzioni di aggiornamento per gli oggetti. In ogni caso, ti capiterà spesso di avere più versioni di classi intorno allo stesso tempo. UpgradeJ (da Biermann, Parkinson e Noble) è il linguaggio di programmazione uno che si occupa di più versioni di una classe in un tipo di moda di sicurezza.

La bibliografia di questi documenti fornisce alcuni cavi che si possono seguire. Anche guardare su Google Scholar per vedere che cosa la carta costruire su questi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top