ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto...

27
ESEMPIO DI ESEMPIO DI MODELLIZZAZIONE OOP 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 classe di concorso A042 - INFORMATICA

Transcript of ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto...

Page 1: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

ESEMPIO DI ESEMPIO DI MODELLIZZAZIONE OOPMODELLIZZAZIONE OOP

Sistema di gestione dei contatti con i clienti

da parte del reparto venditetratto da : VISUAL BASIC 6 Programmazione ad oggetti

G.Swartzfager - R.Chandak - P.Chandak - S.Alvarez

Corso abilitante riservato ad abilitati in altra classe

classe di concorso A042 - INFORMATICA

Page 2: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

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

Page 3: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

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.

Page 4: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

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.

Page 5: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

Osservazioni per individuare gli oggettireparto_vendite sono gli utenti e non fanno parte del sistemasistema_di_gestione_dei_contatti è il titolo del sistemapossibili_clienti un oggettocontatti un oggettonome, indirizzo di casa, indirizzo d’ufficio, telefono di casa, telefono d’ufficio, fax sono tutti attributi di possibile_clienteclienti è un tipo particolare di possibili_clientidata, ora, tipo di contatto sono attributi di contattitelefonico, e-mail, lettera, di persona sono tipi particolari di contattoprodotti un oggettoappunti, descrizione del contatto sono attributi di contattoquanto è un attributo (il prezzo) di un prodottocliente_acquisito è un tipo particolare di possibili_clientivenditore è un utente del sistema, e non ne fa parte

Page 6: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

Modello del sistema dato (1)

contatti

prodotti

possibile_cliente

Page 7: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

Trovare le relazioniIndividuare le frasi che mettono in relazioni gli oggetti individuati:

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.

un cliente ha più contatti

in un contatto si discutono (ha) più prodotti

Page 8: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

Modello del sistema dato (2)

possibile_cliente

contatti

prodotti

ha

vengono discussi

N

N

cardinalità della relazione

Page 9: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

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.

Page 10: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

Modello del sistema dato (3)

contatti

prodotti

ha

vengono discussi

N

N

NomeTipoClienteIndirizziNumeriTelefonici

possibile_cliente

Page 11: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

contatti

prodotti

ha

vengono discussi

N

N

NomeTipoCliente

possibile_cliente

TipoValore

indirizzi

Cancella

TipoValore

numeriTel

Cancella

ha haN N

Modello del sistema dato (4)

Page 12: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

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.

Page 13: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

Modello del sistema dato (5)

DataOraTipoContattoMemo

contatti

prodotti

ha

vengono discussi

N

N

NomeTipoCliente

possibile_cliente

TipoValore

indirizzi

Cancella

TipoValore

numeriTel

Cancella

ha haN N

Page 14: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

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.

Page 15: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

TipoProdottoPrezzo [read only]

DataOraTipoContattoMemo

contatti

prodotti

ha

vengono discussi

N

N

NomeTipoCliente

possibile_cliente

TipoValore

indirizzi

Cancella

TipoValore

numeriTel

Cancella

ha haN N

Modello del sistema dato (6)

Page 16: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

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.

Page 17: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

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

Page 18: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

Osservazioni per individuare i metodiintende utilizzare non è un metodo, ma l’esecuzione dell’applicazioneserviranno non è un metodo, elenca gli attributi di possibile_clientedistinguere e saranno divenuti non sono veri e propri metodi di possibile_clienteacquistare metodo Acquista() dell’oggetto prodottoregistrare 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 effettivoinserire metodo ProssimaVisita() dell’oggetto possibile_clientericordarlo evento Notifica() dell’oggetto contatto, per fissare il prossimoaggiungere 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

Page 19: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

Modello del sistema dato (7)

TipoProdottoPrezzo [read only]

DataOraTipoContattoMemo

contatti

Cancella()

Notifica(): eventoProdottiAcquistati(): evento

prodotti

Acquista(prezzo)

HaAcquistato(): evento

ha

vengono discussi

N

N

ProssimaVisita()AggiungiIndirizzo(Indirizzo)AggiungiTelefono(Numero)AggiungiContatto(Contatto)

NomeTipoCliente

possibile_cliente

TipoValore

indirizzi

Cancella()

TipoValore

numeriTel

Cancella()

ha haN N

Page 20: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

VisualBasic (1)

In VisualBasic per creare classi e oggetti si usano gli oggetti ClassModule, o moduli di classe, definendo-ne 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

Page 21: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

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

Page 22: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

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.

Page 23: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

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

Page 24: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

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

Page 25: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

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

Page 26: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

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

Page 27: ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.

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