(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_rispallorau1 != u2
V.Video.censura
Per ogni istanza v:Video, se v:VideoCensurato, allora per ogni int si ha:
- se
(v,int):comm_vido(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):valutazionetale che(u,v):valutazione.istante = i_valut, allora esistonovis:Visione,i_vistale che(u,vis):utente_visioneE(vis,v):visione_videoE(vis,v):visione_video.istante = i_visEi_valut >= i_vis
V.Video.commento_solo_se_visione
Per ogni v:Video, u:Utente, c:Commento, i_comm,
- se esistono
(u,c):utente_commE(c,v):comm_vidEc.istante = i_comm, allora esistonovis:Visione,i_vistale che(u,vis):utente_visioneE(vis,v):visione_videoE(vis,v):visione_video.istante = i_visEi_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_visionee(u,v):utente_visione.istante = i_viseu.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