Che Cosa è Visual Objects :
CA- Visual Objects è considerato la naturale evoluzione di Clipper per il mondo Windows. Esso ha apportato numerose e importanti novità come la programmazione Object Oriented (implementata in modo nativo nel linguaggio), la gestione degli OCX e Active X, gestione di Sql, eccà
La Computer Associates ha, praticamente progettato da zero lÆambiente di sviluppo. Una delle novità più salienti è il sistema di "Repository" (del quale parleremo in seguito), un sistema che ha rivoluzionato il modo di vedere le applicazioni. Forse è stato anche per questo che la prima versione, uscita nel 1993, non riscosse molto successo. A questo si aggiunse la pubblicità non proprio "aggressiva" con la quale la Computer Associates presentò il prodotto. In seguito la CA (Computer Associates) prendendo in considerazione i suggerimenti e le critiche provenienti dagli sviluppatori e dai numerosi User Group mondiali, ha realizzato con la versione 2 un prodotto completamente rinnovato. TantÆè vero che oggi è considerato da molti uno dei sistemi di sviluppo più stabili ed efficienti per PC, sul mercato.
Il Repository
Come già citato in precedenza una delle più importanti novità di VO (Visual Objects) è il "Repository", esso consiste in un enorme database che contiene le applicazioni, le loro funzioni, i metodi, le variabili, le classi, eccà Nel repository il codice è suddiviso gerarchicamente in varie categorie, il Progetto, lÆApplicazione, il Modulo, e lÆEntità. La prima categoria in ordine gerarchico è il progetto, il quale contiene applicazioni e librerie. Ogni applicazione è divisa, a sua volta in moduli. Un modulo al suo interno è composto da entità. Un progetto può essere una singola applicazione, un gruppo di applicazioni, un gruppo di librerie, eccà Nel repository si possono avere più progetti indipendenti tra loro, con proprie librerie. UnÆapplicazione può essere un programma e anche una libreria. Come possiamo vedere dalla figura 1 ci sono otto librerie per il "Default Project". I moduli di una applicazione si possono pensare come dei programmi che concorrono a far funzionare lÆapplicazione o la libreria di cui fanno parte. Al quarto ed ultimo livello del repository troviamo le Entità. LÆentità è il più piccolo componente del repository di VO. Una entità può contenere del codice sorgente o del codice binario generato da VO, ad esempio, in seguito al disegno di una finestra o di un menù. Come possiamo ancora vedere nella Figura 1 quando facciamo click su ogni modulo di una applicazione o libreria, alla destra del repository si possono vedere le entità del modulo selezionato. Ogni progetto ha una propria directory di lavoro. Quando VO viene installato, viene creata una directory apposita C:\CAVO20\DATA per i file che compongono il "Default Project". Ogni volta che viene creato un nuovo progetto, questi file vengono creati e memorizzati nella directory indicata allÆatto della creazione del progetto. Nella Fig. 2 possiamo vedere lÆelenco di questi file.
Ogni file .CDP è una delle librerie di default che appaiono in Fig.1, gli altri file sono file di catalogo, informazioni del progetto e file indice (.IND). Se si hanno problemi con lÆindice del repository, possiamo cancellare i file .IND dalla directory del progetto dopo essere usciti ed aver chiuso VO. Questi file sono gli indici dei file esterni a VO. Quando saranno stati cancellati e VO sarà lanciato nuovamente, il sistema provvederà a reindicizzare il repository automaticamente, rigenerando questi file cancellati in precedenza. Adesso vediamo le caratteristiche più salienti del repository. Guardando la Fig.1 vediamo che il repository è diviso in due parti. La parte destra è una lista tipo "Tree View" dei componenti di ciò che si evidenzia sulla parte sinistra. Ad esempio in Fig.1 sulla parte sinistra è evidenziata la libreria Win32API Library, sulla destra vediamo la lista di tutti i moduli che la compongono. Se si fa doppio clic su uno di questi moduli, oppure si espande la libreria facendo clic su segno "+" accanto alla libreria e si evidenzia uno dei moduli, vediamo sulla sinistra le entità che compongono il modulo evidenziato. Sempre sulla parte sinistra del repository possiamo vedere le caratteristiche di ogni componente organizzate in colonne, le quali sono ridimensionabili a piacere per rendere più visibili le notizie che ci interessano. EÆ importante, inoltre, notare che è possibile ordinare la lista facendo clic sul titolo della colonna per la quale vogliamo ordinare la lista. Per aiutare il programmatore nelle operazioni più comuni, esistono vari Pop-Up Menù
Che sono richiamabili facendo clic sul tasto destro del mouse. A seconda dellÆelemento che si evidenzia, appare il pop-up menù adeguato (vedi Fig.3 e Fig.4 )
Adesso passiamo a vedere le funzioni di ogni singolo bottone della Toolbar principale, visibile nella parte superiore della finestra del repository (Fig.5).
Il primo bottone che troviamo partendo da sinistra è quello che ci permette di inserire un nuovo elemento al repository. Si può aggiungere una nuova applicazione, modulo o entità a seconda del livello a cui ci troviamo, ad esempio se abbiamo selezionato una applicazione sulla parte destra del repository, premendo questo bottone potremo aggiungere un nuovo modulo nellÆapplicazione selezionata. Se invece si seleziona un modulo potremo aggiungere una nuova entità in tale modulo.
Il secondo bottone permette di "importare" dentro al repository una applicazione, modulo o entità a seconda del livello in cui siamo in quel momento, che possiamo anche stampare mediante il terzo bottone. Il quarto bottone riveste una particolare importanza, esso permette di compilare i moduli dellÆapplicazione selezionata. Il compilatore è un compilatore incrementale di codice nativo, cioè compila solo le parti dellÆapplicazione che hanno subito modifiche, le quali sono contrassegnate da una "X" di colore rosso visibili nella parte destra del repository (vedi fig.6 ). Tale compilatore non produce il file .EXE, il quale viene prodotto mediante il quinto bottone. Passiamo adesso a vedere lÆottavo bottone tralasciando i due precedenti poiché essi riguardano il Debugger, uno strumento molto potente in VO che analizzeremo una delle prossime volte. Questo bottone permette di entrare nella finestra delle proprietà dellÆapplicazione, dalla quale possiamo modificare il nome e la path dellÆapplicazione, aggiungere o togliere delle librerie, includere nellÆapplicazione una serie di comandi personalizzati, mettere degli Header (file. H) che si usavano in Clipper e, infine, settare le varie opzioni del compilatore per poter anche generare un eseguibile ottimizzato in ordini di velocità di esecuzione o dimensioni del file .EXE. Dai test fatti, comparando applicazioni in C++ e in VO, risulta che una applicazione VO è molto vicina, in termini di velocità, a quella scritta in C++. Passando adesso di nuovo ai bottoni della Toolbar, abbiamo un gruppo di tre bottoni che permettono di modificare la vista dei vari moduli e applicazioni (Icone grandi, icone piccole, dettagli eccà). Mediante gli ultimi due bottoni si possono raggruppare i componenti del repository per tipo o per classe.
Alcuni consiglià
Il repository, se usato con criterio, è uno strumento molto potente. Innanzitutto abbiamo sottÆocchio tutte le applicazioni che ci interessano. Tramite le normali operazioni di taglia - copia - incolla û sposta û eccà proprie di Windows, è possibile creare una nuova applicazione prendendo codice dalle altre e modificandolo in maniera apportuna. Per fare questo pero ci dobbiamo dare delle regole per la creazione dei vari componenti, siano essi applicazioni, moduli o entità qui di seguito si indicano dei piccoli accorgimenti per rendere il lavoro molto più produttivo e sfruttare al massimo il repository :
Clienti (Finestre) ß Modulo che raccoglie il codice generato da VO per le finestre
Clienti (Metodi) ß Modulo che raccoglie il codice manuale per gestione clienti
In tal caso è semplice individuare ciò che abbiamo scritto noi, per poter modificare il codice.
Ad esempio :
CliWindow ß Finestra principale dei clienti (di solito contiene un browser con la lista dei clienti inseriti ed alcuni bottoni per inserire, modificare cancellare, i dati)
CliBrowseWindow ß Finestra che contiene il browser della lista clienti
CliEditWindow ß Finestra di editing per inserire, modificare i dati dei clienti (di solito richiamata dai bottoni posti nella finestra precedentemente mensionata)
Da questo esempio si può notare che il criterio adottato è il seguente :
I primi tre caratteri indicano il soggetto di cui gestire i dati (Cli = Clienti)
I seguente gruppo di caratteri indica il tipo di finestra (Window = Finestra principale, BrowseWindow = finestra del browser, EditWindow = finestra di editing).
Risulta chiaro che in caso di riutilizzo del codice in un'altra applicazione, basta in molti casi cambiare i primi tre caratteri che identificano il soggetto ( Cli con Forn) ed abbiamo creato metodi e codice per una nuova classe.
Conclusioni
In questa prima parte abbiamo analizzato gli aspetti più importanti del sistema di repository di cui è dotato VO. Abbiamo visto come sia importante saper usare con criterio questo strumento per rendere lÆattivittà di programmazione in VO altamente produttiva. Prossimamente passeremo ad analizzare uno per uno i potenti wizard del sistema di sviluppo, che permettono di creare i componenti principali di una applicazione.