(use case: registrazione utenti, pubbl video, visualizz video, esprimere valutazioni)
- utenti
- nome
- data di iscrizione
- prendere le sue playlist pubbliche
- video
- titolo
- durata
- descrizione
- nome del file (univoco)
- categoria (unica) [vedi 3]
- tag (almeno uno) [vedi 4]
- può essere video risposta
- non si può rispondere a un video pubblicato da se stessi
- può essere video censurato
- no visioni, no commenti, no voti, no playlist, no ricerca
- motivo
- numero di volte che è stato visionato
- ricerca video per tag e valutazione
- AGGIUNGO: data post?
- categoria
- nome
- ottieni video con maggiore numero di risposte
- tag
- nome
- visione video
- data e ora
- valutazioni
- valore: da 0 a 5
- l’utente che ha pubblicato un video non può votarlo
- ogni utente può votare al più una volta
- impossibile votare un video non visionato
- commenti testuali
- data e ora
- un utente può esprimere più commenti testuali
- impossibile commentare un video non visionato
- playlist
- collezioni ordinate di video [vedi 2]
- nome
- data di creazione
- pubbliche o private
specifica dei tipi di dato
- DurataVideo (minuti: Intero, secondi: Intero < 60)
specifica della classe Video
Ogni istanza di questa classe rappresenta un video della piattaforma.
V.Video.no_risposta_autoreferenziale
Per ogni istanza v1: Video
, v2: Video
, u1: Utente
, u2: Utente
, se esistono i link
(u1, v1):pubblicazione
(u2, v2):pubblicazione
(v1:originale, v2:risposta):vid_risp
allorau1 != u2
V.Video.censura
Per ogni istanza v:Video
, se v:VideoCensurato
, allora per ogni int
si ha:
- se
(v,int):comm_vid
o(v,int):visione_video
, alloraint.istante < v.istante_censura
- E
- se
(v, int):valutazione
, allora(v, int):valutazione.istante < v.istante_censura
V.Video.valutazione_solo_se_visione
Per ogni v:Video
, u:Utente
, i_valut
,
- se esiste
(u,v):valutazione
tale che(u,v):valutazione.istante = i_valut
, allora esistonovis:Visione
,i_vis
tale che(u,vis):utente_visione
E(vis,v):visione_video
E(vis,v):visione_video.istante = i_vis
Ei_valut >= i_vis
V.Video.commento_solo_se_visione
Per ogni v:Video
, u:Utente
, c:Commento
, i_comm
,
- se esistono
(u,c):utente_comm
E(c,v):comm_vid
Ec.istante = i_comm
, allora esistonovis:Visione
,i_vis
tale che(u,vis):utente_visione
E(vis,v):visione_video
E(vis,v):visione_video.istante = i_vis
Ei_comm >= i_vis
specifica delle classe Visione
Ogni istanza di questa classe rappresenta una visione di un video.
V.Visione.solo_registrati
Per ogni v:Visione
, u:Utente
, i_vis
, i_iscr
, si ha
- se
(u,v):utente_visione
e(u,v):utente_visione.istante = i_vis
eu.istante_iscrizione = i_iscr
- allora,
i_vis > i_iscr
specifica della classe Playlist
Ogni istanza di questa classe rappresenta una playlist.
V.Playlist.creazione.solo.registrati
vincoli
- entry della playlist in ordine