Differenza tra Oggetto Passivo e Attivo in UML
L'"Unified Modeling Language" (UML) è un linguaggio per mostrare come è organizzato il software; gli ingegneri usano UML per diagrammi del flusso di informazione in un programma, per capire come semplificarlo o modificarlo. Modellando il flusso, UML distingue tra "oggetti attivi" che possono iniziarlo, e "oggetti passivi" che non possono.
Oggetti e Classi
Nella programmazione "a oggetti", l'informatica distingue tra "oggetto" e "classe". Una classe è una descrizione generalizzata di un insieme di cose (variabili, metodi), mentre un "oggetto" è un'"istanza" di quella classe, con proprietà uniche. Pensate alle classi come progetto o template; nel mondo fisico, "strumento di scrittura" potrebbe essere una classe, con "penna" o "pastello arancione" esempi di "oggetti" di quel tipo.
Oggetti in UML
UML preserva una distinzione simile tra classi e oggetti, rappresentati allo stesso modo; le classi UML contengono descrizioni ampie, gli oggetti UML valori specifici che rappresentano istanze di quelle descrizioni. Formalmente, un "oggetto attivo" in UML è un'istanza di una "classe attiva", e un "oggetto passivo" un'istanza di una "classe passiva"; in senso teorico, questi termini sono essenzialmente intercambiabili.
Oggetti Attivi
In UML, classi e oggetti attivi esistono nel proprio thread di operazioni e hanno il proprio spazio indirizzi. Se l'esecuzione è pensata come flusso, gli oggetti attivi possono avviare o controllare quel flusso. Gli oggetti attivi sono sequenziali e fanno qualcosa: modificano variabili, cambiano comportamento del programma, ecc. In UML, classi e oggetti attivi sono distinguibili per un bordo più spesso degli oggetti passivi.
Oggetti Passivi
Gli oggetti passivi in UML non hanno generalmente capacità di modificare o iniziare il flusso di esecuzione, perché devono aspettare che un altro li chiami. Invece, sono usati per memorizzare informazioni, spesso condivise tra più oggetti. Questo può permettere accesso concorrente, non sequenziale. Per assicurare alta integrità dei dati, UML permette agli oggetti passivi di insistere per accesso sequenziale; se due thread tentano di chiamare lo stesso oggetto passivo sequenziale, questo può ritardare il secondo finché il primo non ha finito.