Diploma Universitario in Ingegneria Informatica
Esame di Fondamenti di Informatica II - primo modulo
A.A. 1998/99 - Appello del 26 aprile 1999
Problema 1 Si vuole progettare una classe in modo tale che ogni
oggetto della classe rappresenti un'azienda con i suoi impiegati. La
specifica del corrispondente tipo astratto è:
- TipoAstratto Azienda
- Domini
- Az (dominio di interesse), Imp (dominio per
il tipo Impiegato), Tur (dominio per il tipo Turno)
- Funzioni
-
- Crea : (Intero) --> Az
-
precondizioni e postcondizioni per
Crea(k) = a
pre: nessuna
post: a è un'azienda con 0 impiegati,
e con il vincolo di non poter assumere più di k impiegati
- Massimo : (Az) --> Intero
-
precondizioni e postcondizioni per
Massimo(a) = k
pre: nessuna
post: k è il numero massimo di impiegati
che l'azienda a può assumere
- Quanti : (Az) --> Intero
-
precondizioni e postcondizioni per
Quanti(a) = q
pre: nessuna
post: q è il numero di impiegati in a
- Assume : (Az,Imp) --> Az
-
precondizioni e postcondizioni per
Assume(a,i) = b
pre: l'azienda a ha un numero di impiegati
minore al massimo consentito per essa, e i non è impiegato in a
post: b è l'azienda pari ad a con la
differenza che b ha i come impiegato in più, e ad i non
è stato assegnato alcun turno
- Assegna : (Az,Imp,Tur) --> Az
-
precondizioni e postcondizioni per
Assegna(a,i,t) = b
pre: i è impiegato in a
post: b è l'azienda pari ad a, con la
differenza che t viene aggiunto ai turni assegnati a i in
b
- Togli : (Az,Imp,Tur) --> Az
-
precondizioni e postcondizioni per
Togli(a,i,t) = b
pre: i è impiegato in a e t è uno dei
turni asseganti a i in a
post: b è l'azienda pari ad a, con la
differenza che t non è tra i turni assegnati a i in b
- EstAssegnato : (Az,Imp,Tur) --> Intero
-
precondizioni e postcondizioni per
EstAssegnato(a,i,t) = j
pre: nessuna
post: se i non è impiegato in a, allora j =
-1; se i è impiegato in a e t non è uno dei turni
assegnati a i in a, allora j = 0; se i è impiegato in
a e t è uno dei turni assegnati a i in a, allora j =
1
- FineTipoAstratto
Domanda 1 Si chiede di illustrare le scelte di progetto riguardante la
realizzazione del tipo astratto Azienda mediante una classe Azienda
in C++. Per riferirsi ai tipi astratti Impiegato e Turno è necessario
utilizzare le classi già definite Impiegato e Turno, delle
quali però non è nota né la definizione né la dichiarazione.
Domanda 2 Si chiede di scrivere la classe Azienda che realizza il
tipo astratto Azienda secondo le scelte di progetto illustrate per la
Domanda 1. Se la progettazione della classe richiede la ridefinizione del
costruttore di copia e dell'operatore di assegnazione, la specifica delle loro
istruzioni è facoltativa.
Problema 2 Realizzare una funzione esterna (non friend) alla classe
Azienda che, data un'azienda a, un turno t, ed un insieme s di
impiegati, calcoli quanti sono gli impiegati in s che lavorano nell'azienda
a, e a quanti di questi è stato assegnato il turno t nell'azienda a.
Si noti che per realizzare la funzione si deve decidere il modo in cui
rappresentare i dati da fornire alla funzione stessa.
Problema 3 Dare le definizioni di: schema concettuale, relazione
has-a, relazione has-many, relazione isa. Illustrare un esempio di schema
concettuale con almeno una relazione has-a, una relazione has-many ed una
relazione isa.