Bentornati al corso.
Come premesso nell’ultima lezione cambiamo un po’
discorso: in questa lezione ci dedicheremo di più alla programmazione
pura che alle funzioni predefinite del Visual C++. Abbiamo oramai
strumenti a sufficienza per poter iniziare a programmare a tutti
gli effetti.
Introdurremo ora un gruppo di classi importantissime in programmazione
col Visual C++ e che consentono di velocizzare, data la loro struttura,
la creazione dei nostri programmi.
Tali classi, da alcuni programmatori amate, da altri odiate, sono
le MFC ovvero le Microsoft Foundation Class.
Che hanno di particolare tali classi?
Semplice: sono state concepite studiando a fondo tutte le esigenze
che ogni programmatore si troverà ad affrontare nel corso della
stesura dei suoi programmi.
Pensiamoci bene: perché scervellarci a fare classi nuove quando
si può usare le classi esistenti ottimizzate della Microsoft e
risparmiare tempo e fatica?
Il lavoro è sempre lavoro e come tale meglio riposarsi il più
possibile no?
Analizziamo come sono strutturate le nostre classi che ci permetteranno
di dormire di più
Esse si dividono in :
1) Classi per la gestione dell’Architettura dell’applicazione
(CDocument, CWinApp);
2) Classi per la gestione delle Eccezioni ( CException);
3) Classi per la gestione dei File (CFile);
4) Classi per la gestione della Grafica (CDC);
5) Classi Per la gestione della Memoria atte a facilitare la Programmazione
(CArray, CString ).
Analizzeremo meglio in dettaglio tali classi.
Per ora diciamo che esse derivano tutte da una classe particolare
molto generica detta CObject.
Questa classe è una sorta del classico void * che conosciamo nel
linguaggio C.
La sua potenza è data dalla sua genericità. E’ come se volessimo
creare un elemento da poter inserire in un array e non vogliamo
preoccuparci della sua struttura interna.
Una bella potenza non vi pare? Col tempo vedremo anche come evitare
di effettuare casting su tali oggetti.
Per includere le classi MFC la procedura è molto semplice: esse
sono divise in gruppi di appartenenza a seconda dello scopo che
esse svolgono. Per alcune non è necessaria una inclusione esplicita
(vedi CString ), per altre, le meno utilizzate, è necessario dichiararne
a volte l’utilizzo (CSocket).
Analizziamo ora la classe base di tutte le MFC:
CObject
Costruttori e operatori di creazione e assegnamento
| CObject() |
Costruttore di default |
| Costruttore per copia |
|
| void* operator new( size_t nSize ); |
Rimappaggio dell’operatore new per CObject |
| voidoperator delete( void* p ); |
Rimappaggio dell’operatore delete per CObject |
| voidoperator =( const CObject& src ); |
Operatore di Assegnamento |
Serializzazione (scrittura e lettura dei
valori da stream)
| BOOLIsSerializable( ) const |
Verifica se la classe derivate da CObject ha una funzione membro di serializzazione. Restituisce TRUE in caso positivo, FALSE altrimenti |
| virtualvoid Serialize( CArchive& ar ); |
Carica o salva I dati della classe nell’archivio puntato da CArchive. CArchive è una classe associata a un file da dove verranno prelevati o scritti i dati. |
Varie
| virtualCRuntimeClass* GetRuntimeClass( ) const; |
E’ la funzione membro di cui parlavamo prima, consente di verificare il tipo di oggetto derivante dalla classe CObject. Restituisce un puntatore all’istanza della classe verificabile tramite macro che analizzeremo in seguito. |
| BOOLIsKindOf( const
CRuntimeClass* pClass ) const; |
Collegata a GetRuntimeClass consente di distinguere I vari oggetti di tipo CObject presenti in un qualsiasi oggetto. Restituisce Vero se la classe in questione è del tipo passatogli tramite pClass, Falso altrimenti |
Bene, per ora fermiamoci qui.
Noterete la facilità di utilizzo di queste classi nella prossima lezione in
cui creeremo delle classi derivate tutte da CObject, vedremo come distinguere
tali istanze e come utilizzarne le potenzialità.
Alla prossima lezione
Torna all'indice Generale del corso di Corso di Visual C++ di Software Planet