Diagrama d'estats: diferència entre les revisions

Contingut suprimit Contingut afegit
m neteja i estandardització de codi
mCap resum de modificació
Línia 1:
{{FR|data=2022}}
Un '''diagrama d'estat''' és un tipus de [[diagrama]] utilitzat en [[informàtica]] i àrees similars per descriure el comportament de sistemes. Els diagrames d'estat requereixen que el sistema descrit estigui compost d'un nombre finit d'estats; de vegades per a la seva creació cal una capacitat d'[[Abstracció (informàtica)|abstracció]] notable. Hi ha moltes formes de diagrames d'estat, que difereixen lleugerament i tenen una semàntica diferent.
 
Quant a la representació, un diagrama d'estats és un gràfic que els nodes del qual són estats i els arcs dirigits del qual són transicions etiquetades amb els noms dels esdeveniments. Un estat es representa com una caixa arrodonida amb el nom de l'estat en el seu interior. Una transició es representa com una fletxa des de l'estat origen a l'estat destí. La caixa d'un estat pot tenir 1 o 2 compartiments. Al primer compartiment apareix el nom de l'estat. El segon compartiment és opcional, i en ell poden aparèixer accions d'entrada, de sortida i accions internes.
Línia 40:
 
== Quadre d'estats Harel ==
[[Fitxer:OO Modeling languages history.jpg|369px|miniatura|Diagrama que mostra com els quadres d'estat Harel van contribuir als mètodes i notacipnsnotacions orientats a objectes]]
Els quadres d'estats (''statecharts'') Harel (desenvolupats en [[1987]] per [[David Harel]]) estan guanyant en ús ampli atès que una variant ha arribat a ser part del [[UML]]. El tipus de diagrama permet modelar superestat, diagrames d'estats concurrents i modelar les activitats com a part d'un estat.
 
Línia 46:
 
== Diagrama d'estats UML ==
El [[llenguatge unificat de modelat]] (UML) especifica una notació estandarditzada per diagrames d'estat que es pot utilitzar per descriure classes, sistemes, subsistemes o fins i tot processos de negoci. Els diagrames d'estat també mostren el conjunt d'estats pels quals passa un objecte, durant la seva vida en una aplicació en resposta a eventssuccessos (per exemple, missatges rebuts, temps sobrepassat o errors), junt amb les seves respostes i accions. També il·lustren quins eventssuccessos poden canviar l'estat dels objectes de la classe. Normalment contenen estats i transicions. Com els estats i les transicions inclouen a la vegada, eventssuccessos, accions i activitats, anem a veure primer les seves definicions.
 
Un eventsuccés és un esdeveniment important a tenir en compte per al sistema. Un estat és la condició d'un objecte en un moment determinat: el temps que transcorre entre eventssuccessos. Una transició és una relació entre dos estats, i indica que, quan ocorre un event, l'objecte passa de l'estat anterior al següent.
 
Igual que altres diagrames, en els diagrames d'estat poden aparèixer notes explicatives i restriccions.
Línia 75:
:[[Fitxer:statechart vs flowchart.png|Diagrama d'estat (a) i diagrama de flux (b)]]
 
== Eventssuccessos ==
Un eventsuccés és una ocurrència que pot causar la transició d'un estat a un altre d'un objecte. Aquesta ocurrència pot ser una:
*Condició que pren el valor de verdader (normalment descrita com una expressió booleana). És un EventCanvi.
* Recepció d'un senyal explícit d'un objecte a un altre. És un EventSenyal.
* Recepció d'una crida a una operació. És un Eventcrida.
* Pas de cert període, després d'entrar a l'estat actual, o de certa hora i data concretes. És un EventTemps.
 
El nombre d'un eventsuccés té dintre del paquet en el qual està definit i pot ser utilitzat en els diagrames d'estats per les classes que tenen visibilitat dintre del paquet. Un eventsuccés no és local a la classe on està declarat
• Condició que pren el valor de verdader (normalment descrita com una expressió booleana). És un EventCanvi.
 
• Recepció d'un senyal explícit d'un objecte a un altre. És un EventSenyal.
 
• Recepció d'una crida a una operació. És un Eventcrida.
 
• Pas de cert període, després d'entrar a l'estat actual, o de certa hora i data concretes. És un EventTemps.
 
El nombre d'un event té dintre del paquet en el qual està definit i pot ser utilitzat en els diagrames d'estats per les classes que tenen visibilitat dintre del paquet. Un event no és local a la classe on està declarat
 
== Accions ==
Una acció és una operació atòmica, que no es pot interrompre per un eventsuccés i que s'executa fins a la seva finalització. Una acció pot ser:
* una crida a una operació (a l'objecte al qual pertany el diagrama d'estats o també a un altre objecte visible),
 
* la creació o la destrucció de l'altre objecte o
• una crida a una operació (a l'objecte al qual pertany el diagrama d'estats o també a un altre objecte visible),
* l'enviament d'un senyal a un objecte.
 
• la creació o la destrucció de l'altre objecte o
 
• l'enviament d'un senyal a un objecte.
 
== Activitats ==
Quan un objecte està en un estat, generalment està esperant que succeeixi algun esdeveniment. Encara que, a vegades, volem modelar una activitat que s'està executant. És a dir, mentre un objecte estáestà en un estat, dit objecte realitza un treball que continuarà fins que sigui interromput per un esdeveniment.
 
Llavors, una acció contrasta amb una activitat, ja que aquesta última pot ser interrompuda per altres esdeveniment.