Poruke se na dijagramu interakcije prikazuju u sledećem formatu:

  

 attribute=signal_or_message_name(arguments):return_type

Može se specificirati više argumenata na poruci, svaki mora biti odvojen zarezom. Format argumenta je:

<name>:<class>

Elementi izbora prilikom imenovanja poruke zavise od  poznatih informacija o poruci. Veoma je bitno razumeti koji tip poruke se razmenjuje između objekata. Npr. pozivaoc može da čeka dok se poruka koju je poslao obradi i u tom slučaju govorimo o sinhronim porukama. Suprotno, pozivaoc poruke može samo želeti da pošalje poruku bez čekanja na bilo kakvu povratnu informaciju i tada govorimo o asinhronim porukama. Prijem jedne poruke se može smatrati instancom jednog događaja. Kada se pošalje poruka, sledi akcija - izvršenje naredbe koja predstavlja apstrakciju metoda.

 

UML predviđa sledeće vrste poruka:

 

  • poziv (Call) – pokreće operaciju objekta primaoca (može biti i poziv sebi)
  • povratak (Return) – vraća vrednost pozivaocu
  • slanje (Send) – asinhrono se šalje signal primaocu
  • kreiranje (Create) – kreira se objekat
  • uništavanje (Destroy) – uništava se objekat
  • pronađena poruka (Found) – poznat primalac, slanje nije opisano
  • izgubljena poruka (Lost) – poznat pošiljalac, prijem se nije dogodio
  • postajanje (Become) – objekat menja prirodu (na obe strane veze je isti objekat)

 

 Slanje i prijem poruke ilustrovano je na sledećem jednostavnom dijagramu interakcije:

 

 

Najčešći tip poruka su pozivi u kojima jedan objekat poziva operaciju nekog drugog objekta (a može i samog sebe). Operacije koje se pozivaju moraju biti definisane u datim objektima i vidljive objektu koji ih poziva. Ako prilikom modelovanja znate parametar operacije koji se prosleđuje možete ga uneti u model kao i vrednost ili naziv povratne vrednosti koja je rezultat operacije.

Operacije i poruke koje se razmenjuju imaju određeni redosled. Da bi se bolje vizuelizovao redosled poruka treba postaviti redni broj poruke kao prefiks odvojen sa dve tačke.

Grafički prikaz različitih vrsta poruka dat je na sledećoj slici:

 

 

Sinhrona poruka

 

Kao što smo već objasnili sinhrona poruka se uključuje kada pozivaoc poruke čeka da primaoc poruke vrati informaciju da je obradio poruku. Prilikom mapiranja u kôdu Message Caller objekat pravi običan metod (Java, C#) na objektu messageReciver i posle čeka da messageReceiver.foo() metod vrati povratnu vrednost pre nego što nastavi sa budućom interakcijom.

 

 

Asinhrone poruke

 

Bilo bi veoma jednostavno i uređeno kada bi se sve interakcije dešavale jedna za drugom u jednostavnom  redosledu. Međutim, sistem tako ne radi. Interakcije se mogu dešavati u svakom trenutku vremena i ponekad je potrebno inicijalizovati kolekciju interakcija u isto vreme na koje nećemo čekati odgovor.

Npr: Dizajniramo deo softvera sa korisničkim interfejsom koji podržava editovanje i štampanje skupa dokumenata. Aplikacija omogućava dugme korisniku za štampanje dokumenta. Nakon što je aktivirano štampanje, korisnik može da nastavi sa radom na aplikaciji. Regularna - sinhrona poruka nije dovoljna da prikaže ovu vrstu interakcije. Ovde je potreban drugi tip poruke a to je asinhrona poruka.

Na slici je prikazana asinhrona inerakcija - Message Caller šalje poruku jednom objekatu, ne čeka odgovor već nastavlja sa sledećim porukama prema drugim objekatima.

 

 

Povratne poruke

 

Povratne poruke (Return Message) su opcioni deo notacije koji se može koristiti na traci aktivnosti da se pokaže kontrolni tok poruke koju vraća objekat koji je primio poruku orginalnom objekatu tj. objektu koji je poslao poruku. U kodu nekog programskog jezika, return poruka je slična kraju metode ili eksplicitnom pozivu return iskaza.

Ponekad je nepotrebno koristiti povratne poruke na sekvencijalnom dijagramu jer čine dijagram previše zatrpanim i konfuznim.

 

Poruke kreiranja i brisanja objekata

 

Objekti ne moraju da žive za svo vreme izvršavanja sekvencijalnog dijagrama. Objekti se mogu kreirati i uništavati (brisati) u skladu sa porukama koje primaju. Da bi pokazali da je objekat kreiran možemo direktno poslati create() poruku liniji života objekta. Uništavanje tj. brisanje objekata pokazujemo tako što na kraju linije života objekta postavimo znak za brisanje (X).

 

 

Prilikom kreiranja softvera u Javi ili C#, možemo koristiti new ključnu reč.

 

Npr: MessageCaller kreira novi MessageRecever objekat korišćenjem new ključne reči:

 

public class MessageReceiver {
    // Atributi i metode MessageReceiver klase
}public class MessageCaller {
  // druge metode i atributi klase su deklarisani ovde
    public void doSomenthing() {
     // MessageReceiver objekat je kreiran
      MessageReceiver messageReceiver = new MessageReceiver() ;
      }
}

 

 

U nekim implementacionim jezicima, kao što je Java, ne postoji eksplicitni destroy metod (postoji Garbage Collector), ali to ne mora da ima uticaja na prikazivanje brisanja - uništavanja objekata na sekvencijalnom dijagramu. Na slici je prikazana i oznaka za eksplicitnu primenu destroy metode.

Dodaj komentar Sviđa mi se - (1) Ne sviđa mi se - (0)    

  • Poruke 1
  • Poruke 2
  • Poruke 3