UML hjälper till att förenkla representationen av den interna logiken i ett program.
"Unified Modeling Language", eller UML, är ett språk som är utformat för att visa hur programvara är organiserad; ingenjörer kan använda UML för att diagramma informationsflödet i ett program, vilket gör att de bättre kan förstå hur det kan förenklas eller ändras. Vid modellering av informationsflöde skiljer UML mellan "aktiva objekt" som kan initiera det flödet och "passiva objekt" som inte kan.
Objekt och klasser
När det kommer till så kallad "objektorienterad" programmering skiljer datavetenskap på ett "objekt" och en "klass". En klass är en generaliserad beskrivning av en uppsättning saker – såsom variabler eller metoder – medan ett "objekt" är en "instans" av den klassen, med sin egen unika egenskaper. Tänk på klasser som en ritning eller en mall; i den fysiska världen kan "skrivredskap" betraktas som en klass, med "penna" eller "orange krita" exempel på "objekt" av den specifika klasstypen.
Dagens video
Objekt i UML
UML bevarar en liknande distinktion mellan klasser och objekt, och de representeras på samma sätt; UML-klasser innehåller breda beskrivningar och UML-objekt innehåller specifika värden som representerar instanser av dessa beskrivningar. Formellt sett är därför ett "aktivt objekt" i UML vilken som helst instans av en "aktiv klass" och på samma sätt en "passiv objekt" är en instans av en "passiv klass" - i teoretisk mening kan du anse att dessa termer i huvudsak är utbytbar.
Aktiva objekt
I UML finns aktiva klasser, och därmed aktiva objekt, i sin egen operationstråd och har sitt eget adressutrymme. Om exekvering, eller kodaktivitet, är tänkt i termer av flöde, kan aktiva objekt starta eller styra det flödet. Aktiva objekt är med andra ord sekventiella och gör något: ändra variabler, ändra programbeteende och så vidare. I UML kännetecknas aktiva klasser och objekt genom att ha en tjockare kant än passiva objekt.
Passiva objekt
Passiva objekt i UML har i allmänhet inte förmågan att modifiera eller påbörja exekveringsflödet, eftersom de måste vänta på att ett annat objekt ska anropa dem. Istället används vanligtvis passiva objekt för att lagra information, och i många fall kan denna information delas mellan flera andra objekt. Detta kan tillåta att passiva objekt nås samtidigt, inte sekventiellt. För att säkerställa att data som finns inuti har en hög integritet tillåter UML passiva objekt att insistera på att de ska nås sekventiellt; om två trådar försöker anropa samma sekventiella passiva objekt, kan det objektet fördröja den andra tråden tills den första är klar med den.