Documente Academic
Documente Profesional
Documente Cultură
C, C++
Fara amanunte principalele legaturi intre aceste limbaje:
• limbajul C++ a fost construit pe baza limbajului C (diferenta este ca intre limba vorbita si cea
literara);
• Cul este un limbaj structurat (principala componenta este functia, limbajele mai vechi nu au
nici acest lucru
• de exemplu BASIC), C++ este un limbaj pe "Obiecte" (Programarea Orientata Obiect este cel
mai nou concept folosit acum in toate mediile de programare).
C, C++, Java
Lasind la o parte faptul ca Java seamana foarte mult cu C++, mai ales avind in vedere ca
foloseste tot OOP (Object Oriented Programming), citeva asemanari: Codul functiei main:
C:
int main(argc,argv)
int argc;
char *argv[];
{
/* ... */
return 0;
}
C++:
int main(int argc, char *argv[])
{
// ...
return 0;
}
JAVA:
class main{
public static void main(String[] argv){
// ...
}
}
Includerea fisierelor header
C:
#include /* Not search at present directory */
#include "fn.h" /* Search at present directory */
C++: similar to C, may have .hh header files
JAVA:
import java.io.PrintStream;
Input si output
C:
C++: similar to C, may have .hh header files
JAVA: import java.io.PrintStream;
Exceptii
C:
C++: declared by
throw ;
caught by
try{
// possible exception here
}catch(ExceptionTypeA& a){
// treat case a
}catch(ExceptionTypeB& b){
// treat case b...
try{
throw; // rethrow to catch below
}catch(...){
// ...
}
}
Implementarea Claselor
C++:
IfrRawdata rawdata;
// Implicit implementation IfrRawdata()
rawdata.read();
JAVA:
IfrRawdata rawdata;
// No implicit implementation IfrRawdata()
//...
rawdata = new IfrRawdata(eventsFile);
or
IfrRawdata rawdata = new IfrRawdata(eventsFile);
Diferenta intre Visual C++ si Standardul C++
C++ este un limbaj standard care nu este detinut de un developer de compilatoare important.
Sunt citeva companii care produc compilatoare de C++. Aceste compilatoare compileaza programe
pentru anumite sisteme de operare. Confuzia vine din faptul ca compilatoarele pentru Windows sau
Macintosh pot compila numai programe pentru GUI (graphical user interface). Adevarul este ca multe
din compilatoare suporta asa zisele aplicatii consola. O aplicatie consola este o aplicatie care ruleaza
intro fereastra care este creata de compilator si sistemul de operare. Microsoft Visual C++ este un
mediu de dezvoltare de programe cum se spune "stateoftheart compiler", care poate crea aplicatii
"mature" pentru Windows. Acest lucru implica un GUI puternic si un debugger puternic. Include o
librarie speciala de functii numite MFC (Microsoft Foundation Classes ) care permit scrierea unor
aplicatii avansate pentru Windows. In orice caz, compilatorul permite si executarea codului scris in
C++ standard intro fereastra consola. Deci, raspunsul la intrebare pe scurt este ca Visual C++ este
un compilator care compileaza standardul C++ si mult mai mult decit atit.
Bineinteles ca se poate invata C++ul si sub Visual C++, acesta avind un help foarte bine
documentat in aceasta privinta. Eu am invatat C++ul pe un compilator vechi (BC3.1) si pot spune ca
nu este o mare diferenta (ma refer la faptul de a scrie aplicatii consola in Visual C++ sau BC3.1, mai
departe e altceva).
Visual C++, C++Builder, Borland C++
De multa vreme ma framinta aceasta problema. In general, pot spune ca tot ce se poate face in
Visual C++ se poate face si in C++Builder si invers. Exista totusi mici
• mari diferente de care trebuie tinut cont inante de a concepe un program. Acest mic ghid nu tine loc
de butonat (lucru efectiv in aceste programe).
Ca sa nu pierd vremea o sa le insir punctual cu mici comentarii:
Asemanari:
• Reducerea efortului de a scrie aplicatii in Windows, minimizarea codului;
• Usurinta de a folosi Windows API cu C++ si nu cu C;
• Usurinta de a folosi abilitati puternice cum ar fi ActiveX, suport pentru baze de date, toolbar,
printare etc.;
• cel mai important este faptul ca folosesc acelasi limbaj de programare C++ul (nu mai putem
vorbi de C pentru ca acum nu se mai pot concepe programe fara clase cu toate ca sa
mentinut aceasta compatibilitate);
• incepind cu versiunea 4.0 C++Builder contine Class Explorerul echivalentul sau in Visual
C++ este ClassViewul. Programatorii de Visual C++ nu cred casi pot inchipui cum ar
putea sa lucreze fara ClassView (care este ca un centru de comanda). Ei, eu pot spune
ca avind in vedere implementarea cu succes a conceptului de RAD (Rapid Application
Development) in Builder se pot dezvolta aplicatii mult mai repede si fara Class Explorerul
(pina acum am lucrat in C++Builder 3.0 care nu avea acest lucru);
• in amindoua mediile se poate lucra cu baze de date (dar intre noi fie vorba este de o mie de
ori mai usor in Builder);
• in Visual C++ avem MFCul (Microsoft Fundation Classes), in Builder avem "componentele"
in spatele carora se afla bineinteles clase. Aici este o diferenta de concepte si de aceea o
sa le explic pe rind;
• in Visual C++ avem Class Wizzard, in Builder avem Object Inspector. Cu toate ca sunt total
diferite in amindoua putem "vedea" functii (metode), proprietati ale unui anume obiect (aici
daca intram in amanunte nu ne ajunge toata revista);
Visual C++
• Visual C++ este un program foarte bine documentat (MSDN), cu exceptia documentatiei
pentru incepatori(cei care incep de la 0). Cei aia MESSAGE MAP, cum se implementeaza o
simpla metoda (functie) unui simplu dialog box sunt lucruri care nu le stii cind incepi lucrul cu
Visual C++ si totusi nu sunt descrisi acesti pasi decit in alte manuale nu in help. Oricum, dupa
primele programe acest lucru poate fi depasit foarte usor si nu mai sunt probleme.
C++ Builder
• C++Builder implementeaza RAD din VCL (Visual Component Library) scris in Object Pascal.
C++ si Object Pascal difera putin in felul prin care creeaza, initializeaza, copie sau
distruge obiectele. Nu o sa intru in amanunte, dar pot spune ca C++Builder le foloseste
amindoua metodele;
• conceptul de componenta care este un bloc construit pentru oricare aplicatie de baza VCL.
Un lucru foarte important aici este faptul ca aceste componente pot fi downloadate de pe
Internet (inceracati la un motor de cautare "Components for CBuilder"). Ce sunt de fapt
aceste componente? Sunt clase care implementeaza un anumit obiect de exemplu. Pot fi
componente visual (cum ar fi un popup menu, un buton, un radio button
• tineti cont ca puteti crea asemenea obiecte pentru a le putea apoi folosi in oricare alta
aplicatie) sau nonvisual (cel mai simplu exemplu este un timer);
• in C++Builder multe evenimente (de exemplu) sunt preprogramate, pentru a raspunde unui
anume "event handler". Programul nu trebuie sa determine daca evenimentul sa produs
ci prin simpla scriere a functiei (rutinei) (De exemplu, OnClick()
• la apasarea unui buton). Un lucru care mia placut in C++Builder este multitudinea de
evenimente preprogramate. In Visual C++ aceste evenimente trebuie "prinse" de
programator muncind suplimentar (multe dintre ele necesitind munca multa).
Borland C++
• este fratele mai mare al programelor amintite mai sus;
• in versiunea 3.1 se poate programa si pentru DOS (asemanator programelor "consola" din
Visual C++ si C++Builder) si pentru Windows API. Puteti incerca niste programe pentru
Windows API asa cum sunt in Visual C++
• nonMFC program;
• versiunile ulterioare permit mai multe facilitati.