tag:blogger.com,1999:blog-10768633.post-1111626172441720762005-03-24T01:44:00.000+01:002005-03-24T02:11:51.136+01:00ES2(40) Exercici per al dia 31 de març<span style="font-size:85%;">Considereu el diagrama de classes següent:</span><br /><br /><img alt="Diagrama de classes" src="http://www-lsi.upc.es/%7Eolive/fotos/DiagramaCinema1.gif" /><br /><br /><br /><span style="font-size:85%;">Suposeu que el sistema inclou (entre d’altres) els dos casos d’ús (operacions del sistema) següents: </span><br /><span style="font-size:85%;">novaSessió (títol:String, sala:Sala, dia:Date, hora:Hora)<br /></span><blockquote><p><span style="font-size:85%;">pre: --en el cinema fan la pel·lícula<br />sala.cinema.pel·lícula.títol -> includes(títol)<br />post: --creem una sessió<br />let peli:Pel·lícula = Pel·lícula.allInstances ()-> any (p p.títol = títol) </span><span style="font-size:85%;">in<br />s.oclIsNew() and s.oclIsTypeOf(Sessió) and<br />s.entradesDisponibles = sala.capacitat and s.dia = dia and s.hora = hora and s.sala = sala and s.pel·lícula = peli<br /><br /></span></p></blockquote><br /><span style="font-size:85%;">OnLaFan (títol: String, dia:Date, preuMàxim:Diner) : Set(String)<br /><br /></span><span style="font-size:85%;"></span><blockquote><span style="font-size:85%;">body: -- dóna els noms dels cinemes (amb preu de les entrades inferior a preuMàxim) on fan la pel·lícula del títol indicat en el dia indicat i amb sessions on encara hi ha entrades<br />Pel·lícula.allInstances()-><br />select(p p.títol = títol).sessió -> select(s s.hiHaEntrades() and s.dia = dia).sala.cinema -> select(c preuMàxim > c.preuEntrada).nom ->asSet()<br /><br /></span></blockquote><span style="font-size:85%;">(Observeu que aquests contractes provenen de l’especificació del sistema i, per tant, no tenen en compte els aspectes propis del disseny com són la navegabilitat de les associacions o la visibilitat de les operacions, atributs i rols).<br /><br />Es demana:<br /><br /></span><span style="font-size:85%;"></span><blockquote><span style="font-size:85%;">1. Dissenyeu dos controladors del tipus transacció per a aquestes dues operacions del sistema.<br />2. Analitzeu la responsabilitat de les operacions executar dels dos controladors anteriors. Decidiu quins altres objectes intervindran en la seva execució. Documenteu amb diagrames de seqüència l’execució de les operacions executar. Aquests diagrames han de mostrar tots els objectes que intervenen directament o indirecta en l’execució, i les operacions que s’invoquen dels objectes que intervenen.<br />3. Completeu el diagrama de classes de disseny, mostrant totes les operacions que heu decidit en el punt anterior. Hi heu d’incloure les operacions constructores que hagueu definit (si és el cas), amb els seus paràmetres.<br /></span></blockquote><br /><span style="font-size:85%;">Notes:<br />Per fer aquest exercici es pot usar com a màxim un diccionari (per a les pel·lícules).<br />Les quatre associacions indicades al diagrama de classes tenen doble navegabilitat. </span><br /><span style="font-size:85%;">El dia 31 recollirem aquest exercici i en comentarem les solucions a la classe.</span>Antonihttp://www.blogger.com/profile/04179674020928991731noreply@blogger.com