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
-------------------------------------------------------------------------------
