Sei in: Per i Webmaster - Corso di ASP - Gli oggetti
Spesso si sente parlare di programmazione ad oggetti o rivolta agli oggetti ma cosa si intende con questa definizione? In poche parole la si può riassumere come una rappresentazione software di oggetti del mondo reale per i quali, come vedremo, si parla di proprietà, metodi ed eventi.
Quando si sarà capito che cosa si intende per oggetto, saremo in grado di capire anche come gli oggetti nella programmazione possano essere utili agli sviluppatori di software.
Che cosa è un Oggetto?
Nel mondo reale sappiamo già
che cosa sono gli oggetti. Sono cose che si possono vedere, toccare, usare
come un elettrodomestico, una macchina, un arnese da lavoro. Prendiamo ad
esempio un telefono; ogni telefono ha un microfono, un altoparlante e un
tastierino numerico. Queste sono proprietà fisiche del telefono. Si può
dire che un telefono ci permette di fare delle cose, ad esempio chiamare
qualcuno, parlargli. Un telefono ci avvisa quando qualcun altro ci chiama
e questo farà sì che noi solleviamo il ricevitore. In maniera più
astratta, si può dire che un telefono abbia:
- Alcune proprietà che lo descrivono
- Un insieme di cose o metodi che ci permettono di compiere azioni
- L'abilità di compiere azioni se si genera un evento
Vediamo una tabella riassuntiva di queste tre voci.
| Descrizione del telefono | Il telefono è grigio Il telefono è fatto di plastica Il telefono pesa 450 grammi Il telefono ha 12 tasti Il numero del telefono è 0522 333248 Il telefono è connesso alla linea |
| A cosa serve | Possiamo telefonare Possiamo rispondere ad una chiamata Possiamo interrompere una chiamata Possiamo inserire in nostro numero di carta di credito Possiamo disconnetterlo dalla linea |
| Cosa può fare per farci agire | Qualcuno ci sta chiamando La persona chiamata è occupata Un'altra persona ci sta chiamando mentre siamo in altra conversazione |
In termini più legati all'informatica, come già detto in precedenza, si parla di proprietà, metodi ed eventi. C'è un altro termine da tenere in considerazione: istanza. Quando parliamo di un unico oggetto, possiamo usare il termine di istanza per dire che si sta parlando di un oggetto in particolare. Tornando all'esempio del telefono, si può parlare di una istanza che prende in considerazione il telefono di Pippo e una che prende in considerazione il telefono di Pluto. Stiamo parlando dello stesso tipo di oggetto che però nei due casi potrebbe avere proprietà diverse; per esempio quello di Pippo potrebbe essere blu a differenza di quello di Pluto che magari è grigio. Quando si parla di un oggetto in particolare di una determinata classe, si dice che l'oggetto è stato istanziato. Quello che succede è che si genera una copia di tutte le proprietà e degli eventi dalla descrizione dell'oggetto ma i metodi (solitamente molte righe di codice) rimangono nel luogo d'origine e le sezioni del codice vengono utilizzate da tutte le diverse istanze dell'oggetto.
Proprietà
Quando parliamo delle caratteristiche di
un oggetto, ci stiamo riferendo alle sue proprietà. Ogni proprietà è
descritta da un nome al quale viene assegnato un valore.
Nell'esempio del telefono si può fare una lista di queste accoppiate:
| Nome della Proprietà | Valore della Proprietà |
| Colore | Grigio |
| Materiale | Plastica |
| Peso | 450 grammi |
| NumeroDiTasti | 12 |
| NumeroDelTelefono | 0522 333248 |
| Connesso | Sì |
Vi possono essere varie istanze dello stesso oggetto con proprietà diverse, vediamo un esempio:
| Nome della Proprietà | Telefono di Pippo | Telefono di Pluto |
| Colore | Grigio | Blu |
| Materiale | Plastica | Termoplastica |
| Peso | 450 grammi | 400 grammi |
| NumeroDiTasti | 12 | 12 |
| NumeroDelTelefono | 0522 333248 | 02 3516548 |
| Connesso | Sì | Sì |
Metodi
Un'altra caratteristica degli oggetti è che
possono compiere delle operazioni per noi. Per esempio un metodo
EffettuaChiamata ci connetterà al nostro operatore telefonico che
instraderà la chiamata e farà suonare il telefono del destinatario. Non
tutti gli oggetti hanno queste funzionalità; una sedia per esempio ci
permette di metterci a sedere, quindi possiamo dire che la sua funzione
sia quella di sopportare il nostro peso. Gli oggetti che compiono azioni
che sono più 'funzionali' posseggono dei metodi. Ogni operazione che un
oggetto può compiere è definita appunto metodo. Vediamo una tabella
riassuntiva:
| Nome del Metodo | Descrizione |
| PlaceCall | Effettua una chiamata |
| Answer | Risponde ad una chiamata |
| HangUp | Chiude la chiamata corrente |
| SendCardNumber | Inserisce o spedisce il nostro numero di carta |
| Disconnect | Disconnette il telefono dalla linea |
Solitamente alcuni metodi necessitano di parametri aggiuntivi oltre alla chiamata del metodo. Per esempio il fatto che si sollevi la cornetta per rispondere ad una chiamata non ha bisogno di nessun'altra informazione ma nel caso di una chiamata da effettuare, occorre senz'altro fornire il numero di telefono da chiamare. Ecco quindi che, come i parametri che vengono passati a subroutine e funzioni, anche quando si effettua una chiamata ad un metodo si possono passare dei parametri. Se ritorniamo ai metodi del nostro oggetto telefono, possiamo identificare quali metodi necessitano di parametri:
| Nome del Metodo | Parametri |
| PlaceCall | Numero di telefono da chiamare |
| Answer | Nessun parametro |
| HangUp | Nessun parametro |
| SendCardNumber | Numero della carta, numero PIN |
| Disconnect | Nessun parametro |
Alcuni metodi possono anche ritornare dei valori che sono appunto detti valori di ritorno.
| Nome del Metodo | Valori di ritorno |
| PlaceCall | True (se la chiamata ha avuto successo) False (se la chiamata non ha avuto successo) |
| Answer | Nessun valore di ritorno |
| HangUp | True (se il telefono è stato chiuso bene) False (se il telefono è stato chiuso male) |
| SendCardNumber | True (se la carta è stata accettata) False (se la carta non è stata accettata) |
| Disconnect | Nessun valore di ritorno |
Eventi
Le proprietà e i metodi sono modi in cui
l'utilizzatore dell'oggetto può comunicare con l'oggetto stesso, ma cosa
succede se l'oggetto deve comunicare con il programma che lo ha creato?
Per esempio quando c'è una chiamata in entrata, il telefono ci deve
avvisare. Si genera quindi un evento, cioè in questo caso molto
probabilmente la suoneria emette un suono che fa sì che noi alziamo la
cornetta. Anche gli eventi possono passare dei valori, per esempio nel
caso in cui si abbia la possibilità di visualizzare il numero del
chiamante ecco che l'evento, oltre che ad avvisarci della chiamata in
arrivo, ci comunica anche il numero di chi ci sta chiamando.
Incapsulazione
Quando si utilizzano oggetti creati
da terze parti, non ci si deve preoccupare di come questi oggetti
funzionino bensì del come li si debba utilizzare. Nel caso del telefono,
non dobbiamo preoccuparci di come la nostra voce faccia a raggiungere il
nostro interlocutore, l'unica cosa che dobbiamo fare è alzare la cornetta
e comporre il numero. Nel caso degli oggetti in ASP, non dobbiamo
preoccuparci di come siano stati programmati, basta sapere come
utilizzarli. Questo concetto di utilizzo di un oggetto, senza sapere come
l'oggetto funzioni nei minimi particolari, viene detto
incapsulazione.
Programmare con gli oggetti
Immaginiamo ora di
avere il nostro telefono collegato al nostro PC e vediamo come potremmo
interagire con esso via software. Non vedremo come l'oggetto funziona nei
particolari o come è stato programmato ma vedremo come di solito si
utilizzano in ASP le proprietà e i metodi di un oggetto. Nel caso del
telefono, potremmo immaginarla così:
<%
Option
Explicit
Dim
objTelephone
Set objTelephone =
Server.CreateObject("MyTelephone.Telephone")
objTelephone.Color
= "Blue"
objTelephone.Material =
"Thermoplastic"
objTelephone.Weight
= 450
objTelephone.NumberOfKeys = 12
Response.Write
"Fatto"
Set objTelephone =
Nothing
%>
In questo primo pezzo di codice si vede come si possono andare a modificare le proprietà di un istanza di un oggetto. Alla riga 3 si definisce la variabile che conterrà l'istanza dell'oggetto. Tramite l'istruzione Set si inizializza l'oggetto sfruttando il metodo Server.CreateObject dopodiché, tramite la sintassi oggetto.proprietà diamo i valori delle proprietà dell'oggetto.
Vediamo ora come richiamare le proprietà dell'oggetto stesso.
<%
Option
Explicit
Dim
objTelephone
Set objTelephone =
Server.CreateObject("MyTelephone.Telephone")
objTelephone.Color
= "Blue"
objTelephone.Material =
"Thermoplastic"
objTelephone.Weight
= 450
objTelephone.NumberOfKeys = 12
Dim strColor,
strMaterial, intNumKeys, intWeight, blnConnected
strColor =
objTelephone.Color
strMaterial =
objTelephone.Material
intNumKeys =
objTelephone.NumberOfKeys
intWeight =
objTelephone.Weight
blnConnected =
objTelephone.IsConnected
Response.Write
"objTelephone.Color = " & strColor & "<br>"
Response.Write
"objTelephone.Material = " & strMaterial & "<br>"
Response.Write
"objTelephone.NumberOfKeys = " & intNumeKeys &
"<br>"
Response.Write
"objTelephone.Weight = " & intWeight & "<br>"
Response.Write
"objTelephone.IsConnected = " & blnConnected &
"<br>"
Set objTelephone =
Nothing
%>
La sintassi per richiamare un metodo è molto simile alla sintassi per ricavare una proprietà; solo due cose bisogna tenere presente:
- se il metodo richiede dei parametri, bisogna passarli correttamente
- se il metodo ha un valore di ritorno, dobbiamo leggerlo in qualche modo
<%
Option
Explicit
Dim
objTelephone
Dim
blnIsConnected
Set objTelephone =
Server.CreateObject("MyTelephone.Telephone")
Response.Write
"Rispondo al telefono...<br>"
objTelephone.Answer()
blnIsConnected =
objTelephone.IsConnected
Response.Write "La
proprietà IsConnected è " & blnIsConnected
Response.Write
"Chiudo il telefono...<br>"
objTelephone.HangUp()
Response.Write "La
proprietà IsConnected è " & objTelephone.IsConnected
Set objTelephone =
Nothing
%>
Vediamo ora un esempio col passaggio di parametri.
<%
Option
Explicit
Dim
objTelephone
Dim
strPhoneNumber
Dim
blnIsConnected
Set objTelephone =
Server.CreateObject("MyTelephone.Telephone")
strPhoneNumber =
"0522 333248"
Response.Write
"Calling " & strPhoneNumber & "<br>"
objTelephone.PlaceCall(strPhoneNumber)
blnIsConnected =
objTelephone.IsConnected
Response.Write "La
proprietà IsConnected è " & blnIsConnected & "<br>"
Set objTelephone =
Nothing
%>
Fino ad ora abbiamo parlato di un oggetto che incontriamo nella vita di tutti i giorni, il telefono. Nella programmazione delle pagine ASP, quello che maggiormente interessa è il fatto che si possa tenere nota di informazioni passate dall'utente, visualizzare informazioni dinamicamente ecc... Ecco che allora Microsoft ha creato oggetti che ci permettono di effettuare molte di queste operazioni. Gli oggetti principali che costituiscono la struttura delle ASP 3.0 sono 7, anche chiamati built-in objects, ovvero oggetti incorporati. Vediamo una lista in ordine alfabetico:
- Application object
- ASPError object
- ObjectContext object
- Request object
- Response object
- Server object
- Session object
Ve ne sono altri che vedremo man mano, per ora partiamo dai due più utilizzati ovvero gli oggetti Response e Request.
