Esercitazioni di Teoria
dei Sistemi
Anno Accademico 2007-2008
Prof. Alessandro Raymondi
1
Introduzione all’OOP (I)
Linguaggio più vicino all’uomo che al
calcolatore
Più simile alla realtà che ci circonda
OOP come rappresentazione della
conoscenza
Il problema va analizzato ‘a oggetti’
2
Introduzione all’OOP (II)
Programmazione
tradizionale
Programma = {riga;
riga}
Procedure e funzioni
Programmazione ad
oggetti
Programma
Metodi
Tipi di dati (Int, Char,
String…)
Costanti
Classi
Variabili
Variabili
Oggetti
3
Gli oggetti (I)
Dal punto di vista operativo:
Cioè una scatola nera che contiene
funzionalità, scritte tramite un linguaggio.
Contiene una serie di procedure e funzioni
che gli competono.
4
Gli oggetti (II)
Per poter comunicare con l’oggetto, gli invio
un messaggio:
messaggio
oggetto ricevente
5
Gli oggetti (III)
Quando un oggetto riceve un messaggio,
l’oggetto dà il via all’esecuzione di un
programma, procedura o funzione:

2
6
Gli oggetti (IV)
Dal punto di vista strutturale:
Oggetto
attributo1
attributo2
attributo3
Attributi pubblici: accessibili dall’esterno
Attributi privati: accessibili solo dall’interno della classe
Attributi protetti: accessibili solo dalla classe e dalle sue
sottoclassi
7
Gli oggetti (V)
Mettiamo insieme i due punti di vista:
Oggetto
attributo1
attributo2
attributo3
funzione1()
funzione2()
funzione3()
8
La dinamica degli oggetti
Quando ad un oggetto mando un messaggio
viene eseguito un metodo
Oggetto
attributo1
attributo2
attributo3
funzione1()
funzione2()
funzione3()
Public function1()
…
End;
9
Il polimorfismo
E’ la capacità che hanno oggetti di natura
diversa di rispondere in maniera
appropriata allo stesso messaggio
Es. il metodo print (o write)
Stesso messaggio, il metodo è diverso
10
Dall’oggetto alla classe
La classe è l’insieme di tutti gli oggetti che
hanno la stessa struttura e lo stesso
comportamento
2
Integer
34531
11
La gerarchia delle classi
Object
Array
Magnitude
Windows
Number
Float
Fraction
Integer
12
Ereditarietà e sovrascrizione
Ogni classe eredita dalle classi da cui
discende tutte le proprietà: attributi e
metodi
I vantaggi: codice più ordinato, scritto nella
classe adatta, risparmio nella scrittura
Si può comunque sovrascrivere un metodo
ereditato
13
Esempi di classi (I)
Frazione
numeratore
denominatore
*
+
/
print()
…
14
Esempi di classi (II)
Matrice
m
n
celle
*
+
/
trasposta()
15
Esempi di classi: ereditarietà (III)
Matrice
m
n
celle
MatriceQuadrata
*
+
/
trasposta()
determinante()
inversa()
…
MatriceTriangolare
determinante()
Se per le
matrici triangolari
conosco un metodo
migliore lo
reimplemento
16
Esempi di classi (IV)
Biro
colore
punta
stato
foglio
posizione
livello
accenditi()
spegniti()
vai()
17
Analisi degli oggetti: astrazione
Dai requisiti alle classi
Modalità top/down
Dal punto di vista statico:



individuare le entità
individuare le relazioni
individuare gli attributi delle singole classi
Dal punto di vista dinamico:

individuare le funzionalità
Disegno dell’architettura
Sviluppo
18
Gestione degli studenti: le entità
Studente
Esame
Corso
Facoltà
Archivio
19
Gestione degli studenti: le relazioni
Facoltà
Corso
Studente
Esame
Archivio
20
Gestione degli studenti: alcune classi
Facoltà
codice
descrizione
sede
corsi
Corso
Esame
codice
descrizione
docente
esercitatore
crediti
anno
corso
data_esame
esito
21
Gestione degli studenti: la classe
studente
Studente
numero_matricola
nome
cognome
dati_anagrafici
facoltà
data_iscrizione
esami_sostenuti
Dati_anagrafici
indirizzo
località
cap
provincia
stato
data_di_nascita
stato_civile
…
22
Dal punto di vista dinamico
Studente
numero_matricola
…
esami_sostenuti
iscrizione()
sostieneEsame()
media()
archivia()
stampaLibretto()
crediti()
23
La logica di sviluppo: a tre livelli
I strato - la GUI, cioè l’interfaccia grafica
II strato - la logica: le entità che rappresentano la
mia problematica
III strato – la persistenza, cioè classi che si
occupano di ‘archiviare’ gli oggetti che si creano
nel mio sistema
Sono strati indipendenti: uno comunica solo con
quello sottostante. Possono essere sviluppati
con tecnologie differenti
24
La gestione di un caseificio
Parte gestionale:
- gestire l’acquisto del latte dai conferenti e
dai fornitori non diretti
- controllare l’esubero delle quote
- far analizzare il latte in entrata
- calcolare la qualità
- emettere le fatture per i conferenti
25
La gestione di un caseificio
La produzione:
- prelevare il latte dal silos
- ricetta per produrre il formaggio
- produzione con la tracciabilità
- fasi esterne: stagionatura
- vendita a clienti
- fatture clienti
26
La gestione di un caseificio: le entità
Latte
Conferente
Quota
Qualità
Fornitori
Analisi
Movimento
Fattura
27
La gestione di un caseificio: concetto di
prodotto
Articolo
Latte
um__raccolta
coefficiente
codice
descrizione
tipo
costo
prezzo
Prodotto
ricetta
tempo_stagionatura
28
La gestione di un caseificio: concetto di
listino
Listino
codice
descrizione
tipo_AV
prodotto
prezzo
e poi
ogni conferente “ha” un listino
ogni cliente “ha” un listino
29
La gestione di un caseificio: concetto di
conferente e altri fornitori latte
Fornitore
Conferente
quota
numeroCapi
codice
descrizione
datiAnagrafici
partitaIVA
listino
dataInizioAttività
dataCessazione
FornitoreNonDiretto
nazione
30
La gestione di un caseificio: concetto di
analisi e di movimento del latte
Analisi
data
conferente
laboratorio
grasso
proteine
carica_batterica
cellule_somatiche
Movimento
data
conferente
prodotto
quantità
um
31
La gestione di un caseificio: concetto di
qualità del latte
A seconda dei valori di analisi in un certo periodo il
latte può dare origine ad un premio qualità
(negativo indica una penale):
Qualità
periodo
conferente
media_Grasso
media_Proteine
media_CaricaBatterica
media_CelluleSomatiche
premio
32
La gestione di un caseificio: concetto di
fattura per il conferente
Fattura
anno
numero
data
periodo
conferente
titolo
note
righe
Riga_Fattura
riga
prodotto
quantità
um
prezzo
33
La gestione di un caseificio: la
fatturazione
Dato un conferente ed un periodo di calcolo
si scorrono i movimenti del periodo indicato
si creano tante righe quanti sono i listini nel
periodo (ad es. una riga per il latte normale ed
una per il latte non idoneo)
se nell’anno il totale raccolto supera la quota
assegnata, penale per superamento quota
se nel periodo ho una qualità, aggiungo in
fattura la riga con premio/penale
34
La gestione di un caseificio: la
dinamica per la fatturazione del latte
Conferente
Fattura
Riga_Fattura
consegnaLatte()
esegueAnalisi()
acquistaQuota()
cessaAttività()
Qualità
calcola()
*calcolaLatte()
*calcolaEsubero()
*calcolaQualità
stampa()
importo()
numeroRighe()
stampa()
importo()
calcolo()
stampa()
* sono metodi privati
35
La gestione di un caseificio: le
entità per la produzione
Latte
Prodotto
Ricetta
Produzione
Magazzino
Stagionatura
Vendita
Cliente
Fattura
in rosso sono indicati i processi
36
La gestione di un caseificio: il
concetto di cliente
Cliente
codice
descrizione
datiAnagrafici
partitaIVA
listino
Soggetto
quindi
Fornitore
dataInizioAttività
dataCessazione
codice
descrizione
datiAnagrafici
partitaIVA
listino
Cliente
agente
indirizzo_Spedizione
37
La gestione di un caseificio: altre
entità
Ricetta
codice
descrizione
componenti
fasi
derivati
Magazzino
Silos
um
tipoLatte
svuota()
codice
descrizione
stabilimento
lotti
capacità
temperatura
carica()
scarica()
giacenza()
prodotti()
costo()
38
La gestione di un caseificio: i
processi
Processo
Produzione
ricetta
quantità
silos
lotto
prelevaLatte()
prelevaComponenti()
versaDerivati()
data_ora_inizio
data_ora_fine
responsabile
stato
documento
esegui()
interrompi()
Stagionatura
terzista
magazzino
prodotto
quantità
lotto
Rientro
stagionatura
lottoTerzista
costo
39
La gestione di un caseificio: la
dinamica per la produzione
Produzione
ricetta
quantità
silos
lotto
prelevaLatte()
prelevaComponenti()
versaDerivati()
Il processo di produzione muove tutte le entità:
nella ricetta trovo i prodotti da movimentare
dal magazzino silos prelevo il prodotto latte
dai magazzini prodotti prelevo i componenti
nei magazzini prodotti verso i derivati
in questo momento nasce il lotto
40
La gestione di un caseificio: la
vendita
Processo
Vendita
cliente
prodotto
lotto
quantità
data_ora_inizio
data_ora_fine
responsabile
stato
documento
esegui()
interrompi()
41
La gestione di un caseificio: la
rintracciabilità
Devo essere in grado di risalire dal prodotto che
invio al cliente al latte che ho usato
parto dal prodotto / lotto nella vendita (fattura)
cerco tutti il documento di produzione in cui è
presente il prodotto / lotto in questione
dal processo risalgo alla data/ora di inizio
cerco i carichi latte con data e ora inferiore a
questa ora di inizio
nel carico è indicato il conferente che mi ha dato
il latte eventualmente avariato
42
Scarica

qui