Amiga E OOP Tutorial - Codice D'Esempio
MODULE 'tools/exceptions'
-> Queste costanti sono usate dopo per get() e memorize()
ENUM MEMORIZE_NAME=0, MEMORIZE_SURNAME
/*
Ecco la nostra classe "person"
*/
OBJECT person
PRIVATE -> Tutti i dati sono privati
name:PTR TO CHAR
surname:PTR TO CHAR
ENDOBJECT
PROC person() OF person -> Costruttore dell'oggetto "person"
self.name:=String(30)
IF self.name = NIL THEN Raise("MEM")
self.surname:=String(50)
IF self.surname = NIL THEN Raise("MEM")
ENDPROC
PROC end() OF person -> Distruttore dell'oggetto "person"
DisposeLink(self.name)
DisposeLink(self.surname)
ENDPROC
PROC clear() OF person -> Qui puliamo tutte le stringhe
StrCopy(self.name, '')
StrCopy(self.surname, '')
ENDPROC
/*
Questa proc è utilizzata per memorizzare i dati all'interno dell'oggetto.
Per favore, notate il SELECT, che permette una espansione semplice
dell'oggetto.
*/
PROC memorize(v, mode=MEMORIZE_NAME) OF person
SELECT mode
CASE MEMORIZE_NAME
StrCopy(self.name, v)
CASE MEMORIZE_SURNAME
StrCopy(self.surname, v)
ENDSELECT
ENDPROC
-> Questo comando ritorna i valori all'interno dell'oggetto
PROC get(mode=MEMORIZE_NAME) OF person
DEF p=NIL
SELECT mode
CASE MEMORIZE_NAME
p:=self.name
CASE MEMORIZE_SURNAME
p:=self.surname
ENDSELECT
ENDPROC p
/*
Qui inizia il nostro oggetto ioperson, una classe DERIVATA da
"person" che permette l'I/O.
*/
OBJECT ioperson OF person
-> Non abbiamo nessun altro nuovo campo
ENDPROC
PROC ioperson() OF ioperson -> COSTRUTTORE classe "ioperson"
self.person() -> invochiamo il COSTRUTTORE di "person"
ENDPROC
PROC end() OF ioperson -> il DISTRUTTORE di "ioperson" è lo stesso di "person"
SUPER self.end() -> Hey, un comando SUPER!!
ENDPROC
-> Questa procedura carica i dati da un file a un oggetto "ioperson"
PROC load(fname) OF ioperson HANDLE
DEF fh=NIL, buf[256]:STRING
IF (fh:=Open(fname, MODE_OLDFILE))=NIL THEN Raise("file")
FgetS(fh, buf, 255)
StrCopy(self.name, buf)
FgetS(fh, buf, 255)
StrCopy(self.surname, buf)
EXCEPT DO
IF fh THEN Close(fh)
ReThrow()
ENDPROC
-> Questa proc salva i dati da un oggetto "ioperson" a un file
PROC save(fname) OF ioperson HANDLE
DEF fh=NIL
IF (fh:=Open(fname, NEWFILE))=NIL THEN Raise("file")
FputS(fh, self.name)
FputS(fh, self.surname)
EXCEPT DO
IF fh THEN Close(fh)
ReThrow()
ENDPROC
-> Ecco un esempietto veloce veloce
PROC main() HANDLE
DEF iop=NIL:PTR TO ioperson
NEW iop.ioperson()
iop.memorize('Fabio')
iop.memorize('Rotondo', MEMORIZE_SURNAME)
iop.save('Ram:iopTest')
iop.clear()
iop.load('Ram:iopTest')
WriteF('Nome:\s - Cognome:\s\n', iop.get(), iop.get(MEMORIZE_SURNAME))
EXCEPT DO
report_exception()
END iop
CleanUp(0)
ENDPROC
Pagina Principale
Scritto Da: Fabio Rotondo e-mail: fsoft@intercom.it
C.so Vercelli 9
28100 Novara
ITALY tel: (ITA) - (0)321 459676