Un messaggio in un diagramma di sequenza UML ha parametri o argomenti? [duplicare]

4

Recentemente ho sostenuto un esame per il corso introduttivo di Informatica. Una domanda riguardava i diagrammi di sequenza (un esempio molto semplice, riassunto nei suoi elementi essenziali):

The Bank object sends a message withdraw(100) to the Account object. In the message, 100 is called a parameter. True or false?

Essendo un programmatore Java, ho risposto false, poiché un parametro è il nome con cui possiamo fare riferimento al valore passato a un metodo. Invece, chiamerei questo un argomento: il valore effettivo che viene passato al metodo. La mia risposta è stata contrassegnata in modo errato.

La mia risposta era davvero sbagliata? Sto confondendo la terminologia?

Modifica

So che c'è una differenza tra parametri e argomenti, sono curioso di sapere se questa differenza viene fatta anche con i diagrammi di sequenza.

    
posta Stefan van den Akker 02.06.2016 - 08:07
fonte

1 risposta

2

Alla domanda è stata data una risposta soddisfacente dal riferimento di @ gnat.

Per aggiungere alla discussione, in generale, e quindi nel contesto di UML Sequence Diagrams, quanto segue.

Se i tuoi colleghi chiamano 100 un parametro, stanno usando il termine in modo approssimativo, ma è comunque normale farlo.

Anche Wikipedia cita: I termini parametro e argomento sono talvolta usati in modo intercambiabile, e il contesto è usato per distinguere il che significa .

Se vuoi essere ancora più preciso, puoi usare i termini parametro formale vs. argomento attuale . Penso che i termini più brevi formale e attuale non siano spesso scambiati come parametro di argomento. Inoltre, potresti dire che il valore del parametro è 100 invece che 100 è un parametro.

Come altro punto dati, la ANSI C cita standard terminologia:

  • argomento attuale
  • parametro attuale (deprecato)

e

  • parametro formale
  • argomento formale (deprecato)

Nel contesto dei diagrammi di sequenza UML, vediamo:

IBM descrive amount come parametro . Tuttavia, descrivono 100 come il valore del parametro, non come il parametro stesso. Tuttavia, sembrano usare il termine parametro come la cosa che viene trasmessa, anche se coerentemente con la nozione di un nome piuttosto che di un valore (evocativo della nozione di parametro formale nonostante la descrizione di ciò che viene passato).

Un altro testo sui diagrammi di sequenza usa una terminologia come: sostituisce i parametri formali con gli argomenti , distinguendo tra i due termini nel solito modo.

I testi di Microsoft sui diagrammi di sequenza UML rimandano l'argomento di discussione dei parametri ai diagrammi delle classi UML (e, naturalmente, nei diagrammi delle classi il termine parametro indica un parametro formale in quanto non ci sono dati effettivi nei diagrammi delle classi).

dal gruppo di gestione degli oggetti; la specifica UML , vediamo una terminologia come "Gli argomenti del messaggio corrispondono agli interni e ai inout OwnParameters of the Operation ", and," Un argomento di un messaggio è una ValueSpecification. Se il messaggio ha una firma e non è un messaggio di risposta, il suo argomento ValueSpecifications viene considerato come valutato nel punto dell'evento send del messaggio. I loro risultati forniscono i valori per i corrispondenti parametri di input dell'operazione o attributi del segnale. "

Was my answer indeed wrong? Am I confusing terminology?

No, tecnicamente, hai ragione.

Tuttavia, trattandosi di un'area con una discreta quantità di grigio, avrei risposto sì, per essere non-argomentativa, è un parametro e immediatamente incluso nella mia risposta che: con più precisione, 100 è l'effettiva parametro (anche se quel termine tende ad essere deprecato), alias argomento attuale o effettivo, più precisamente, e anche 100 è il valore del parametro che viene passato (o inviato o ricevuto).

Nel contesto di un linguaggio di programmazione specifico, possono definire la propria terminologia (C, Java, C # e persino UML sembrano essere tutti d'accordo sul parametro formale rispetto all'argomento effettivo), ma in altri contesti, la terminologia dovrebbe essere visto come potenzialmente in qualche modo intercambiabile.

Nei linguaggi di programmazione tendiamo a pensare al chiamante chiamante e al destinatario ricevente, quindi è naturale pensare che il lato chiamato fornisca un elenco di argomenti valutato e quindi parametri come variabili del metodo richiamato.

Tuttavia, nella messaggistica, esiste una nozione reificata del messaggio stesso, come parte di dati o contenuto, ad es. sul filo, tra essere inviati e ricevuti; pensa a XML o JSON. Come tale, suppongo che tendiamo a vedere i parametri come qualcosa che viene passato o inviato, perché il contenuto del messaggio spesso identifica i parametri per nome insieme ai valori effettivi forniti.

    
risposta data 02.06.2016 - 18:39
fonte

Leggi altre domande sui tag