SCHEMA CONCETTUALE DELL'APPLICAZIONE: ----------------- | | | Docente | | | ----------------- ^ ^ ^ | | | | | | ----------------------- | --------------------------- | | | | | | |isa |isa |isa | | | | | | ----------------- -------------------- ----------------------- | | | | | | | Ricercatore | | Associato | | Ordinario | | | | | | | ----------------- -------------------- ----------------------- ------------------------------------------------------------------------------- TIPOASTRATTO Docente COMMENTO: rappresenta docenti universitari SORTE Doc: la sorta di interesse del tipo Date: la sorta per il dominio delle date FUNZIONI CreaDocente: (Stringa,Stringa,Date) --> Doc precondizioni e postcondizioni per CreaDocente(n,c,da) = do pre: nessuna post: do e' il docente di nome n, cognome c, che ha preso servizio in data da Nome: (Doc) --> Stringa precondizioni e postcondizioni per Nome(do) = n pre: nessuna post: n e' il nome di do Cognome: (Doc) --> Stringa precondizioni e postcondizioni per Cognome(do) = c pre: nessuna post: c e' il cognome di do Anzianita': (Doc,Date) --> Intero precondizioni e postcondizioni per Anzianita'(do,da) = i pre: la data di presa di servizio di do e' anteriore a da post: i e' il numero di mesi (arrotondato per difetto) di differenza fra da e la data di presa di servizio di do Retribuzione: (Doc,Date) --> Reale precondizioni e postcondizioni per Retribuzione(do,da) = r pre: la data di presa di servizio di do e' anteriore a da post: il valore di r dipende dall'anzianita' di servizio di do, secondo una formula che, a sua volta, dipende dalla sottoclasse si docente a cui appartiene do FINETIPOASTRATTO ------------------------------------------------------------------------------- TIPOASTRATTO Ordinario isa Docente COMMENTO: rappresenta professori ordinari SORTE Ord: la sorta di interesse del tipo FUNZIONI Retribuzione: (Ord,Date) --> Reale precondizioni e postcondizioni per Retribuzione(do,da) = r pre: la data di presa di servizio di do e' anteriore a da post: r = 1000 + 10*Anzianita(do,da) FINETIPOASTRATTO ------------------------------------------------------------------------------- TIPOASTRATTO Associato isa Docente COMMENTO: rappresenta professori associati SORTE Ass: la sorta di interesse del tipo FUNZIONI CreaAssociato: (Stringa,Stringa,Date) --> Ass precondizioni e postcondizioni per CreaAssociato(n,c,da) = as pre: nessuna post: as e' l'associato di nome n, cognome c, che ha preso servizio in data da, e che non e' confermato Retribuzione: (Ass,Date) --> Reale precondizioni e postcondizioni per Retribuzione(as,da) = r pre: la data di presa di servizio di as e' anteriore a da post: r = 700 + 70*Anzianita(as,da) se as non e' confermato; r = 1.2*(700+70*Anzianita(as,da)) se as e' confermato; Conferma(Ass) --> Ass precondizioni e postcondizioni per Conferma(a) = b pre: a non e' confermato post: b e' l'associato uguale ad a tranne per il fatto che b e' confermato EstConfermato(Ass) --> Bool precondizioni e postcondizioni per EstConfermato(a) = b pre: nessuna post: b e' true se a e' confermato; e' false, altrimenti FINETIPOASTRATTO ------------------------------------------------------------------------------- TIPOASTRATTO Ricercatore isa Docente COMMENTO: rappresenta ricercatori SORTE Ric: la sorta di interesse del tipo FUNZIONI CreaRicercatore: (Stringa,Stringa,Date) --> Ric precondizioni e postcondizioni per CreaRicercatore(n,c,da) = ri pre: nessuna post: ri e' il ricercatore di nome n, cognome c, che ha preso servizio in data da, e che non e' confermato Retribuzione: (Ric,Date) --> Reale precondizioni e postcondizioni per Retribuzione(ri,da) = r pre: la data di presa di servizio di ri e' anteriore a da post: r = 500 + 50*Anzianita(ri,da) se ri non e' confermato; r = 1.2*(500+50*Anzianita(ri,da)) se ri e' confermato; Conferma(Ric) --> Ric precondizioni e postcondizioni per Conferma(a) = b pre: a non e' confermato post: b e' il ricercatore uguale ad a tranne per il fatto che b e' confermato EstConfermato(Ric) --> Bool precondizioni e postcondizioni per EstConfermato(a) = b pre: nessuna post: b e' true se a e' confermato; e' false, altrimenti FINETIPOASTRATTO -------------------------------------------------------------------------------