-----------------------------------------------------------------------
Libreria per la creazione di OOBJECT CLASS
Versione 2.00
Un'estensione di oggetti per Clipper 5.x
(c) 1997-98 , ASCO Tours Aegina
-----------------------------------------------------------------------
Contenuti:
----------
1. Avvertimenti
2. Che cos'è ???
3. Caratteristiche di base:
4. Veduta d'insieme:
a. Oggetti e [oObject]
b. Problemi dell'Ereditarietà
c. Assegnazione delle variabili
d. Dichiarazione metodi
e. Inline/ Block
f. Alias dei Metodi
g. Metodi Interni e variabili istanza
h. Modifica diretta di variabili istanza (adattamento originale)
i. [oObject] ed il Debugger-STATIC Methods-Reusable Method Functions
* Leggete il Whats.New. Alcune caratteristiche nuove possono richiedere di
* cambiare 1a versione del codice (come la clausola NOSELF negli INLINE statements)
* Leggete anche [notes.txt] per alcune istruzioni rapide e trucchi.
AVVERTIMENTI:
-------------------
Questo è un lavoro di Manos Aspradakis. E' software libero e chiunque è
libero usarlo nelle Sue applicazioni senza qualsiasi restrizione quale che sia;
è anche software utente da sostenere ed l'utilizzatore è incoraggiato a migliorare in qualsiasi modo ritenga opportuno. Non mi aspetto alcun pagamento per questo lavoro ma non assumo anche nessuna responsabilità per qualsiasi danno che si può pensare che abbia causato. Comunque, se Vi sentite in qualche modo obbligati, speditemi una cartolina dal Vostro paese all'indirizzo seguente:
MANOS ASPRADAKIS
ASCO Viaggia Aegina
18010, Aegina Isola
GRECIA
Inoltre, non esitate a indirizzarmi le Vostre domande o suggerimenti a:
eMail: [email protected]
CHE COS'E':
--------------
Dopo aver passato un paio di anni a lavorare con librerie sulle classi, sono giunto alla conclusione che i prodotti uno può trovare anche sulla rete come
Freeware, shareware, cardware, come oClip, ooClip, Classic o
prodotti commerciali come Class(y), TopClass* o Objetcts** (I, II, III),
erano o veramente simplistici, o molto complicati o pieni di difetti, o
aggiungevano 200.000 bytes ai miei programmi o leeenti o molto cari o
qualunque altra cosa.
* TopClass è il motore OOPs del Clip4Win, scritto da John Skelton. Come un
utente registrato del C4W posso dire quello TopClass è la più stabile piattaforma OOPs del momento. Comunque, non è disponibile al di fuori fuori del pacchetto C4W (almeno non l'ho visto venduto separatamente) e non mi piace veramente la compatibilità VO.
Grazie John per un grande prodotto - spero che gli piacciano i francobolli che ho spedito con la mia registrazione.
** Objects è stato scritto da Antonio Linares ed è diventato un motore OOPs molto stabile e veloce. Objects è incluso nel pacchetto Fivewin.
Tuttavia non è un prodotto altrettanto stabile quanto TopClass.
La sola soluzione che ho trovato valida e sulla quale ho lavorato, è stata oClip di Peter M.Freeze, ancora vivo e che ancora gioca a calcio nel 1997 mille grazie!!! Piccole dimensioni, esecuzione veloce e sintassi semplice ne hanno fatto un prodotto meraviglioso da lavorarci ed entrare nel mondo eccitante di OOP, inoltre è completamente FREE e fornito anche dei sorgenti del programma. Comunque, oClip ha effettuato solo un approccio minimalistico del problema e non elegante come quello, oltre asd altri miglioramenti di oOClip]che non era molto adatto per me e non ha incluso alcun sorgente per correggere gli (ovvii)
errori, ed inoltre, ha richiesto del denaro - vedi commento qui sotto- comunque,
oOClip, mi ha dato l'idea dell'aliasing, del metodo che era ha implementato al fine di provvedere ad una migliore ereditarietà.
Così, poicè odio spendere del denaro su software che posso scrivere da solo, io ho deciso di scrivere la mia libreria di classi ed ho scritto questo piccolo
mostro, oObject.Lib
La biblioteca è stata scritta in meno che una settimana e l'ho ottimizzata per più di un mese prima di renderla pubblica, così ci potrebbero essere ancora dei difetti. Poichè ho utilizzato la libreria per aggiornare due miei programmi commerciali - la società turistica di cui sopra - e sembrano completamente solidi e si sono comportati bene per due settimane (6 mesi in 2.B); così ritengo che sia definitiva.
La biblioteca è stata scritta usando il metodo OOP. Questo vuole dire che la
funzione Class è un vero oggetto Clipper della classe _OBJECT_. Date giusto un'occhiata all'header file per vedere come è realmente elegante questa soluzione. L'ammontare di puro codice nell'header file è molto piccolo e
crea anche spazzatura. Compilate un programma dell'esempio coll'opzione /p
per vedere quello che accade "sotto la superficie."
-------------------------------------------------------------------------
A proposito,l' _OBJECT_ class è stato scritto col mio ClipOO.ch header file
(incluso anche quello) che può creare classi SENZA alcuna libreria esterna o .OBJs. Potete scrivere classi molto semplici o classi molto complesse usando solo questa header file, ma non può ereditare subclass da loro. E' un modo molto veloce e pulito per scrivere quelle classi semplicemente, elegantemente, senza alcuno codice di testata addizionale e anche un buon esempio di come può utilizzare il preprocessore di Clipper alla lontana senza farsi male. Il manuale, ClipOO.NGT è stato creato con le Norton Guide del testo delle guide ed è pronto compilare con NG.
-------------------------------------------------------------------------
E la cosa migliore è il fatto che sia FREE. Ho ricevuto così tanto dalla rete, dai newsgroups ed il Web nell'ultimi anni che sento giunto il momento in cui debba rendere con gli interessi, così includo i sorgenti della libreria (1) sperando che qualcuno li usi fra i nuovi utenti (se c'è qualcosa ora che
CA ci ha lasciato all'asciutto) (2) ottenere riscontri, correzioni,miglioramenti o commenti dai vecchi utenti e trasformare questo
progetto in vero software orientato agli utenti e (3) perché mi vergogno dei miei sorgenti.
--------- commento -------------------------------------------------------
Io odio veramente scaricare dal net un file e scoprire che contiene solo un .OBJ o una piccola .LIB ed un .DOC dove si dice "datemi 10 sacchi per ottenere il sorgente del mio UDF." A quella gente non ho che una cosa da dire:
VALKYRIE E' UN GRANDE PRODOTTO.
--------- fine commento ---------------------------------------------------
Ho sempre pensato che i pubblici programmatori dovessero condividere il lavoro ed assistersi in proprio, così ho lasciato i miei sorgenti liberi e non preoccupo più di loro<g>,
I miei ringraziamenti a Peter M. Freeze che è mi ha reso un po' più saggio e
mi ha mostrato la via all'OOP quando c'era nulla altro intorno. Mi sono preso la
libertà di usare il suo file .ASM, e l'ho leggermente modificato per la creazione di oObject.lib.
Anche a Philip Barnett il cui sito è forse la risorsa più preziosa nella
rete e la cui dedicazione alla comunità dei Clipperisti lo rende una
delle nostre risorse più preziose. Come va Philip?