classe di concorso A042 - INFORMATICA
ESEMPIO DI
MODELLIZZAZIONE OOP
Sistema di gestione dei contatti con i clienti
da parte del reparto vendite
tratto da : VISUAL BASIC 6 Programmazione ad oggetti
G.Swartzfager - R.Chandak - P.Chandak - S.Alvarez
Corso abilitante riservato ad abilitati in altra classe
Specifiche (1)
Sistema di gestione per i contatti di vendita
Il reparto vendite intende utilizzare un sistema di
gestione dei contatti per la rilevazione dei possibili
clienti e dei relativi contatti.
In particolare ci serviranno le seguenti informazioni sul
possibile cliente: nome, indirizzi di casa e d’ufficio,
numeri di telefono e di fax (casa, ufficio, altri) e tutti i
contatti avvenuti con il possibile cliente. È importante
prevedere un sistema per distinguere tra tutti i contatti,
quelli che successivamente saranno divenuti dei clienti.
segue
Specifiche (2)
segue
Il sistema dovrà permettere di specificare data, ora, tipo
di contatto (telefonico, e-mail, lettera, di persona, ...), i
prodotti discussi, ed uno spazio per appunti e la
descrizione del contatto. Se un cliente decide di
acquistare durante un contatto, si deve poter registrare
che cosa e quanto è stato acquistato, e trasformare il
cliente da possibile cliente a cliente acquisito.
Sarebbe anche interessante poter inserire gli estremi
del possibile contatto successivo, e di chiedere al
sistema di ricordarlo automaticamente al venditore.
Individuare gli oggetti (1)
Selezionare dalle specifiche i nomi significativi,
esplicitando i pronomi ed i nomi sottointesi:
Il reparto_vendite intende utilizzare un
sistema_di_gestione_dei_contatti per la
rilevazione dei possibili_clienti e dei
relativi contatti.
In
particolare
ci
serviranno
(al
reparto_vendite) le seguenti informazioni
sul possibile_cliente: nome, indirizzi di
casa e d’ufficio, numeri_di_telefono e
numeri_di_fax (casa, ufficio, altri) e tutti i
contatti avvenuti con il possibile_cliente.
È importante prevedere un sistema per
distinguere tra tutti i contatti, quelli che
successivamente saranno divenuti dei
clienti.
Il
sistema
dovrà
permettere
(al
reparto_vendite ) di specificare data, ora,
tipo_di_contatto
(telefonico,
e-mail,
lettera, di_persona, ...), i prodotti discussi,
ed uno spazio per appunti e la
descrizione_del_contatto.
Se
un
possibile_cliente decide di acquistare
durante un contatto, si deve poter
registrare che prodotti e quanto è stato
acquistato,
e
trasformare
il
possibile_cliente in cliente_acquisito.
Sarebbe anche interessante poter inserire
gli
estremi
del
possibile
contatto
successivo, e di chiedere al sistema di
ricordarlo automaticamente al venditore.
Osservazioni per individuare gli oggetti
reparto_vendite
sono gli utenti e non fanno parte del sistema
sistema_di_gestione_dei_contatti è il titolo del sistema
possibili_clienti
un oggetto
contatti
un oggetto
nome, indirizzo di casa, indirizzo d’ufficio, telefono di casa,
telefono d’ufficio, fax sono tutti attributi di possibile_cliente
clienti
è un tipo particolare di possibili_clienti
data, ora, tipo di contatto sono attributi di contatti
telefonico, e-mail, lettera, di persona sono tipi particolari di contatto
prodotti
un oggetto
appunti, descrizione del contatto
sono attributi di contatto
quanto
è un attributo (il prezzo) di un prodotto
cliente_acquisito
è un tipo particolare di possibili_clienti
venditore
è un utente del sistema, e non ne fa parte
Modello del sistema dato (1)
possibile_cliente
contatti
prodotti
Trovare le relazioni
Individuare le frasi che mettono in relazioni gli
oggetti individuati:
Il reparto_vendite intende utilizzare un Il
sistema
dovrà
permettere
(al
sistema_di_gestione_dei_contatti per la reparto_vendite ) di specificare data, ora,
rilevazione dei possibili_clienti e dei relativi tipo_di_contatto (telefonico, e-mail, lettera,
contatti.
di_persona, ...), i prodotti discussi, ed uno
un cliente ha più contatti spazio
per
appunti
e
la
In
particolare
ci
serviranno
(al
Se
un
reparto_vendite) le seguenti informazioni descrizione_del_contatto.
sul possibile_cliente: nome, indirizzi di casa possibile_cliente decide di acquistare
e
d’ufficio,
numeri_di_telefono
e durante un contatto, si deve poter registrare
numeri_di_fax (casa, ufficio, altri) e tutti i che prodotti e quanto è stato acquistato, e
il
possibile_cliente
in
contatti
avvenuti
con
il trasformare
possibile_cliente. È importante prevedere cliente_acquisito.
un sistema per distinguere tra tutti i Sarebbe anche interessante poter inserire
contatti, quelli che successivamente gli estremi del possibile contatto successivo,
in un contatto si discutono (ha)
più prodotti
saranno divenuti dei clienti.
e di chiedere al sistema di ricordarlo
automaticamente al venditore.
Modello del sistema dato (2)
possibile_cliente
ha
N
contatti
cardinalità della
relazione
vengono
discussi
N
prodotti
Trovare gli attributi (di possibile_cliente)
Il reparto_vendite intende utilizzare un
sistema_di_gestione_dei_contatti per la
rilevazione dei possibili_clienti e dei relativi
contatti.
In
particolare
ci
serviranno
(al
reparto_vendite) le seguenti informazioni
sul possibile_cliente: nome, indirizzi di
casa e d’ufficio, numeri_di_telefono e
numeri_di_fax (casa, ufficio, altri) e tutti i
contatti avvenuti con il possibile_cliente. È
importante prevedere un sistema per
distinguere tra tutti i contatti, quelli che
successivamente saranno divenuti dei
clienti.
Il
sistema
dovrà
permettere
(al
reparto_vendite ) di specificare data, ora,
tipo_di_contatto (telefonico, e-mail, lettera,
di_persona, ...), i prodotti discussi, ed uno
spazio
per
appunti
e
la
descrizione_del_contatto.
Se
un
possibile_cliente decide di acquistare
durante un contatto, si deve poter registrare
che prodotti e quanto è stato acquistato, e
trasformare
il
possibile_cliente
in
cliente_acquisito.
Sarebbe anche interessante poter inserire
gli estremi del possibile contatto successivo,
e di chiedere al sistema di ricordarlo
automaticamente al venditore.
Modello del sistema dato (3)
possibile_cliente
Nome
TipoCliente
Indirizzi
NumeriTelefonici
ha
N
contatti
vengono
discussi
N
prodotti
Modello del sistema dato (4)
possibile_cliente
ha
Nome
TipoCliente
N
contatti
vengono
discussi
N
prodotti
ha
N
ha
N
indirizzi
numeriTel
Tipo
Valore
Cancella
Tipo
Valore
Cancella
Trovare gli attributi (di contatto)
Il reparto_vendite intende utilizzare un
sistema_di_gestione_dei_contatti per la
rilevazione dei possibili_clienti e dei relativi
contatti.
In
particolare
ci
serviranno
(al
reparto_vendite) le seguenti informazioni
sul possibile_cliente: nome, indirizzi di casa
e
d’ufficio,
numeri_di_telefono
e
numeri_di_fax (casa, ufficio, altri) e tutti i
contatti avvenuti con il possibile_cliente. È
importante prevedere un sistema per
distinguere tra tutti i contatti, quelli che
successivamente saranno divenuti dei
clienti.
Il
sistema
dovrà
permettere
(al
reparto_vendite ) di specificare data, ora,
tipo_di_contatto (telefonico, e-mail, lettera,
di_persona, ...), i prodotti discussi, ed uno
spazio
per
appunti
e
la
descrizione_del_contatto.
Se
un
possibile_cliente decide di acquistare
durante un contatto, si deve poter registrare
che prodotti e quanto è stato acquistato, e
trasformare
il
possibile_cliente
in
cliente_acquisito.
Sarebbe anche interessante poter inserire
gli estremi del possibile contatto successivo,
e di chiedere al sistema di ricordarlo
automaticamente al venditore.
Modello del sistema dato (5)
possibile_cliente
ha
Nome
TipoCliente
ha
N
N
contatti
Data
Ora
TipoContatto
Memo
ha
N
indirizzi
numeriTel
Tipo
Valore
Cancella
Tipo
Valore
Cancella
vengono
discussi
N
prodotti
Trovare gli attributi (di prodotto)
Il reparto_vendite intende utilizzare un
sistema_di_gestione_dei_contatti per la
rilevazione dei possibili_clienti e dei relativi
contatti.
In
particolare
ci
serviranno
(al
reparto_vendite) le seguenti informazioni
sul possibile_cliente: nome, indirizzi di casa
e
d’ufficio,
numeri_di_telefono
e
numeri_di_fax (casa, ufficio, altri) e tutti i
contatti avvenuti con il possibile_cliente. È
importante prevedere un sistema per
distinguere tra tutti i contatti, quelli che
successivamente saranno divenuti dei
clienti.
Il
sistema
dovrà
permettere
(al
reparto_vendite ) di specificare data, ora,
tipo_di_contatto (telefonico, e-mail, lettera,
di_persona, ...), i prodotti discussi, ed uno
spazio
per
appunti
e
la
descrizione_del_contatto.
Se
un
possibile_cliente decide di acquistare
durante un contatto, si deve poter registrare
che prodotti e quanto è stato acquistato, e
trasformare
il
possibile_cliente
in
cliente_acquisito.
Sarebbe anche interessante poter inserire
gli estremi del possibile contatto successivo,
e di chiedere al sistema di ricordarlo
automaticamente al venditore.
Modello del sistema dato (6)
possibile_cliente
ha
Nome
TipoCliente
ha
N
N
contatti
Data
Ora
TipoContatto
Memo
ha
N
indirizzi
numeriTel
Tipo
Valore
Cancella
Tipo
Valore
Cancella
vengono
discussi
N
prodotti
TipoProdotto
Prezzo [read only]
Trovare i metodi (1)
Individuare i verbi e le locuzioni verbali presenti
nelle specifiche:
Il reparto_vendite intende utilizzare un
sistema_di_gestione_dei_contatti per la
rilevazione dei possibili_clienti e dei relativi
contatti.
In
particolare
ci
serviranno
(al
reparto_vendite) le seguenti informazioni
sul possibile_cliente: nome, indirizzi di casa
e
d’ufficio,
numeri_di_telefono
e
numeri_di_fax (casa, ufficio, altri) e tutti i
contatti avvenuti con il possibile_cliente. È
importante prevedere un sistema per
distinguere tra tutti i contatti, quelli che
successivamente saranno divenuti dei
clienti.
Il
sistema
dovrà
permettere
(al
reparto_vendite ) di specificare data, ora,
tipo_di_contatto (telefonico, e-mail, lettera,
di_persona, ...), i prodotti discussi, ed uno
spazio
per
appunti
e
la
descrizione_del_contatto.
Se
un
possibile_cliente decide di acquistare
durante un contatto, si deve poter
registrare che prodotti e quanto è stato
acquistato,
e
trasformare
il
possibile_cliente in cliente_acquisito.
Sarebbe anche interessante poter inserire
gli estremi del possibile contatto successivo,
e di chiedere al sistema di ricordarlo
automaticamente al venditore.
Trovare i metodi (2)
Il verbo in esame è un metodo se
• provoca un cambiamento di stato dell’oggetto
• richiede calcoli o operazioni sugli attributi dell’oggetto
Vanno individuati i parametri (obbligatori o facoltativi) di ogni
metodo individuato.
Vanno distinti i metodi dagli eventi, cioè quei metodi che
l’oggetto esegue nel mondo esterno per avvertire qualcun
altro che è successo qualcosa al suo interno
Osservazioni per individuare i metodi
intende utilizzare
non è un metodo, ma l’esecuzione dell’applicazione
serviranno
non è un metodo, elenca gli attributi di possibile_cliente
distinguere e saranno divenuti non sono veri e propri metodi di possibile_cliente
acquistare
metodo Acquista() dell’oggetto prodotto
registrare
non è un metodo, specifica un obiettivo dell’applicazione
è stato acquistato evento HaAcquistato() dell’oggetto prodotto, e conseguente
evento ProdottiAcuistati dell’oggetto contatti per far diventare
cliente effettivo
inserire
metodo ProssimaVisita() dell’oggetto possibile_cliente
ricordarlo
evento Notifica() dell’oggetto contatto, per fissare il prossimo
aggiungere un cliente operazione tipica dell’applicazione, che comporta nell’oggetto
possibile_cliente i metodi AggiungiIndirizzo e AggiungiNumTel e
AggiungiContatto()
eliminare un cliente operazione tipica dell’applicazione, che comporta negli oggetti
Indirizzi e NumeriTel i rispettivi metodi Cancella()
eliminare un contatto metodo Cancella() dell’oggetto contatto, operazione derivata
dall’eliminazione di un cliente
Modello del sistema dato (7)
possibile_cliente
ha
Nome
TipoCliente
ProssimaVisita()
AggiungiIndirizzo(Indirizzo)
AggiungiTelefono(Numero)
AggiungiContatto(Contatto)
ha
N
indirizzi
Tipo
Valore
Cancella()
ha
N
numeriTel
Tipo
Valore
Cancella()
N
contatti
Data
Ora
TipoContatto
Memo
Cancella()
Notifica(): evento
ProdottiAcquistati(): evento
vengono
discussi
N
prodotti
TipoProdotto
Prezzo [read only]
Acquista(prezzo)
HaAcquistato(): evento
VisualBasic (1)
In VisualBasic per creare classi e oggetti si usano gli
oggetti ClassModule, o moduli di classe, definendone le procedure Property, Function, Sub e Event.
In ogni progetto VB possono essere utilizzati più
moduli di classe, uno per ogni nuova classe definita.
Le proprietà rappresentano i dati che descrivono lo
stato dell’oggetto. In VB possono essere definite
come variabili pubbliche o come dichiarazione di
proprietà. Molto meglio le seconde.
segue
VisualBasic (2)
Le procedure di proprietà prevedono l’utilizzo di
schemi prestabiliti per
Let scrivere un valore in una proprietà
Get leggere il valore di una proprietà
Un metodo rappresenta il comportamento di un
oggetto, un’azione che può fare. I metodi in VB
possono essere Function o Sub: le prime
restituiscono un valore, le seconde no.
segue
VisualBasic (3)
Gli eventi descrivono le reazioni dell’oggetto a
particolari situazioni.
Ad esempio quando lo stato interno raggiunge
configurazioni particolari, l’oggetto comunica
all’esterno questo particolare evento.
Specifiche del VisualBasic (1)
Per creare una classe:
1. inserire un modulo di classe (dal menu Progetto)
2. impostare il nome della classe
3. definire le proprietà:
– definire le proprietà della classe, dichiarando le variabili pubbliche
e quelle private
– definire le procedure Property, che rendono accessibili le variabili
private, sono di tipo Get (leggi), Let (scrivi) o Set (per gli oggetti)
4. creare i metodi
– determinare se il metodo è pubblico o privato
– se restituisce un valore va definito Function, altrimenti Sub
segue
Specifiche del VisualBasic (2)
5. predisporre gli eventi
– ci sono due eventi incorporati: Initialize() e Terminate()
– Initialize() assomiglia ad un costruttore, ma non accetta parametri
Traduzione in VisualBasic (1)
’Area delle intestazioni:
Classe PossibileCliente
’Area delle dichiarazioni:
Option Explicit
Private WithEvents mContatti As Contatti
Private Nome As String
Attribute mContatti.VB_VarHelpID = -1
’Area delle proprietà:
Public Property Get Nome() As String
End Property
Public Property Let Nome(NuovoNome As String)
End Property
Public Property Get TipoCliente() As String
End Property
’
segue
Traduzione in VisualBasic (2)
’segue Classe
PossibileCliente
Public Sub ProssimaVisita(Data As Date, Ora As String)
End Sub
Public Function AggiungiIndirizzo() As Indirizzo
End Function
Public Function AggiungiTelefono() As NumeriTel
End Function
Public Function AggiungiContatto() As Contatto
End Function
Traduzione in VisualBasic (3)
’Area delle intestazioni:
Classe Contatti
’Area delle dichiarazioni:
Option Explicit
Private mContattiData As Date
Private mContattiOra As String
Private mContattiTipo As String
’Area delle proprietà:
Public Property Get Nome() As String
End Property
Public Property Let Nome(NuovoNome As String)
End Property
Public Property Get TipoCliente() As String
End Property
’
segue
Scarica

esempio_oop