You are on page 1of 3

Jorge Borrás i Duarte & Pol Garrido Melis 08 / 05 / 2022

Exàmen 3)
Context: Sistema::AltadeSubscriptor(nomS : String, iban: String, premium : Boolean)

:Subscriptor

Pre:

Post: Subscriptor.allInstances()->exists(s | s.usuari = nomS and s.dataAlta =today()

and s.oclIsNew() and s.iban = iban and

if (premium) then s.oclIsTypeOf(SubscriptorPremium) endif and result = s)

Context: Sistema::AfegirPerfil(sub : Subscriptor, nomP : String, adult : Boolean)

Pre:

Post: Perfil.allInstances()->exists(p | p.oclIsNew() and p.nom = nomP and

p.adult = adult and p.subscriptor.usuari = sub.usuari)


Jorge Borrás i Duarte & Pol Garrido Melis 08 / 05 / 2022

Context: Sistema::VisionatdeContingut(usuari : String, nomP : String, títolC : String,

puntuació : TPuntuació, comentaris : String, dataV : date)

Pre: Perfil.allInstances()->exists(p | p.nom = nomP and

p.suscriptor.usuari = usuari) and

Contingut.allInstances()->exists(c | c.títol = títolC)

Post: Perfil.allInstances()->exists(p | p.nom = nomP and p.suscriptor.usuari = usuari

and p.contingut.allInstances().nom->includes(títolC)) and

ContingutVisionat.allInstances()->exists(cv | cv.perfil.nom = nomP and

cv.perfil.suscriptor.usuari = usuari and cv.contingut.títol = títolC and

cv.dataÚltimVisionat = dataV and cv.puntuació = puntuació and

cv.comentaris = comentaris and

if (not ContingutVisionat.allInstances()@pre->exists(cv2 |

cv2.perfil.nom = nomP and cv2.perfil.subscriptor.usuari = usuari and

cv2.contingut.títol = títolC ) then c.oclIsNew() endif)


Jorge Borrás i Duarte & Pol Garrido Melis 08 / 05 / 2022

Context: Sistema::CategoriesExitoses(dataIni : Date, dataFi : Date)) :

Set(TuplaType(títolC : String, categories : Set(String), preu : Float)

Pre: dataIni < dataFi and ContingutDesscarregat.allInstances->select(cd |

cd.date > dataIni and cd.date < dataFi).size() >= 3

Body: let result : Set(ContingutPremium) =

ContingutPremium.allInstances()->select( cp |

ContingutDescarregat.allInstances()->select(cd |

cd.date >= dataIni and cd.date =< dataFi and

cd.ContingutPremium.títol = cp.títol

).size() >=5)

in result -> collect(cp | Tupla { títolC = cp.títol;

categories = Contingut.allInstances()->select(c |

c.títol = cp.títol).categoria.nom;

preu = ContingutDescarregat.allInstances()->select(cd |

cd.contingutpremium.títol = cp.títol and

cd.date >= dataIni and cd.date =< dataFi).size() * cp.preu})

You might also like