La differenza tra un oggetto passivo e un oggetto attivo in UML
L'"Unified Modeling Language", o UML, è un linguaggio progettato per mostrare come è organizzato il software; gli ingegneri possono utilizzare UML per rappresentare graficamente il flusso di informazioni in un programma, consentendo loro di comprendere meglio come può essere semplificato o modificato. Durante la modellazione del flusso di informazioni, UML distingue tra "oggetti attivi" che possono avviare quel flusso e "oggetti passivi" che non possono.
Oggetti e classi
Quando si tratta della cosiddetta programmazione "orientata agli oggetti", l'informatica distingue tra un "oggetto" e una "classe". Una classe è una descrizione generalizzata di un insieme di cose, come variabili o metodi, mentre un "oggetto" è un'"istanza" di quella classe, con le sue proprietà uniche. Pensa alle classi come a un progetto o un modello; nel mondo fisico, "strumento per scrivere" potrebbe essere considerato una classe, con esempi "penna" o "pastello arancione" di "oggetti" di quel particolare tipo di classe.
Oggetti in UML
UML conserva una distinzione simile tra classi e oggetti e sono rappresentati allo stesso modo; Le classi UML contengono descrizioni ampie e gli oggetti UML contengono valori specifici che rappresentano istanze di tali descrizioni. Formalmente parlando, quindi, un "oggetto attivo" in UML è qualsiasi istanza di una "classe attiva" e allo stesso modo un "oggetto passivo" è un'istanza di una "classe passiva" - in senso teorico, potresti considerare questi termini per essere essenzialmente intercambiabili.
Oggetti attivi
In UML, le classi attive, e quindi gli oggetti attivi, esistono nel proprio thread di operazioni e hanno il proprio spazio di indirizzi. Se l'esecuzione, o l'attività del codice, è pensata in termini di flusso, gli oggetti attivi possono avviare o controllare quel flusso. Gli oggetti attivi, in altre parole, sono sequenziali e fanno qualcosa:modificare le variabili, cambiare il comportamento del programma e così via. In UML, le classi e gli oggetti attivi si distinguono per avere un bordo più spesso rispetto agli oggetti passivi.
Oggetti passivi
Gli oggetti passivi in UML generalmente non hanno la capacità di modificare o iniziare il flusso di esecuzione, perché devono attendere che un altro oggetto li chiami. Invece, gli oggetti passivi vengono generalmente utilizzati per memorizzare informazioni e in molti casi queste informazioni possono essere condivise tra più altri oggetti. Ciò può consentire l'accesso agli oggetti passivi contemporaneamente, non in sequenza. Per assicurarsi che i dati contenuti all'interno abbiano un'elevata integrità, UML consente agli oggetti passivi di insistere affinché sia possibile accedervi in sequenza; se due thread tentano di chiamare lo stesso oggetto passivo sequenziale, quell'oggetto può ritardare il secondo thread fino a quando il primo non ha terminato con esso.