curs visual c++

Click here to load reader

Post on 17-Aug-2015

60 views

Category:

Science

4 download

Embed Size (px)

TRANSCRIPT

  1. 1. Curs 1-2. S ne reamintim 1 1. S ne reamintim ... (noiuni de programare obiectual) n anii 60 s-au dezvoltat tehnicile de programare structurat. Conform celebrei ecuaii a lui Nicklaus Wirth: algoritmi + structuri de date = programe un program este format din dou pri total separate : un ansamblu de proceduri i funcii; un ansamblu de date asupra crora acioneaz practic; Procedurile sunt prezente ca i cutii negre, fiecare avnd de rezolvat o anumit sarcin (de fcut anumite prelucrri). Aceast modalitate de programare se numete programare structurat. Evoluia calculatoarelor i a problemelor de programare, a fcut ca n aproximativ 10 ani, programarea structurat s devin ineficient. Astfel, ntr-un program bine structurat n proceduri, este posibil ca o schimbare relativ minor n structura datelor, s provoace o deranjare major a procedurilor. Programarea structurat este tehnica pe care ai abordat-o, ncepnd de la conceperea primei organigrame i terminnd cu cele mai complexe programe pe care le-ai elaborat pn n acest moment, presupunnd bineneles c, citind aceste rnduri, nu suntei nc fani ai programrii obiectuale. Scopul acestui capitol este de a v deprinde cu o tehnic nou, mult mai tnr dect programarea structurat, tehnic ce permite o concepie mult mai apropiat de natural a programelor. Aceasta este Programarea Orientat pe Obiecte (POO). Dar nainte de a ncepe s ridicm ceaa ce nconjoar aceast tehnic nou, s facem cunotin cu un nou mediu de programare, care va fi utilizat de acum nainte pentru implementarea programelor. Acest mediu este Microsoft Visual C++ 6.0. 1.1. Un mediu de programare nou? Oare cum arat? Visual C++ 6.0 face parte dintr-un ansamblu de programe, numit Visual Studio 6.0. Acesta este implementarea firmei Microsoft i pentru alte limbaje pe lng C++, cum ar fi FoxPro, Basic, Java, etc. Utilizarea acestui mediu de programare are mai multe avantaje: posibilitatea de creare de programe n diferite limbaje, care s interacioneze ntre ele; utilizarea unor obiecte native Windows, ceea ce duce la crearea de programe executabile de dimensiuni relativ mici; posibilitatea utilizrii de biblioteci complexe, ce pun la dispoziia programatorului metode de rezolvare a marii majoriti a problemelor; posibilitatea utilizrii de programe vrjitor (Wizard) care ghideaz programatorul n implementarea programului.
  2. 2. Curs 1-2. S ne reamintim 2 Cum pornim Visual C++? Dac avei mediul de programare instalat pe calculatorul Dvs., vei putea lansa mediul de programare de la Start->Programs- >Microsoft Visual Studio 6.0->Microsoft Visual C++ 60 (fig. 1.1); O dat lansat programul, acesta se prezint i v afieaz o caset cu diferite mecherii utile n scrierea programelor sau utilizarea mediului (fig. 1.2). Ca s putei lucra, va trebui (eventual dup ce citii o serie de astfel de informaii) s nchidei caseta apsnd butonul OK. n Visual C++, orice program executabil rezult n urma compilrii i editrii legturilor n cadrul unui Proiect (Project). Un proiect este o entitate constituit din mai multe fiiere header, surs, de resurse, etc, care conin toate informaiile necesare generrii programului executabil. Acesta, va rezulta ca un fiier cu acelai nume cu numele proiectului. Fig. 1.1 Lansarea n execuie a Visual C++ 6.0 Fig. 1.2. Aa ncepe totul ...
  3. 3. Curs 1-2. S ne reamintim 3 O alt noiune nou introdus de mediul de programare este Spaiul de lucru (Workspace). Acesta este constituit din totalitatea fiierelor, utilitarelor, dispozitivelor, etc, puse la dispoziia programatorului n cadrul ferestrei Visual C++, pentru a-l ajuta la crearea programului. O s constatai c, dac ai lucrat la un program i ai nchis mediul de lucru, la revenirea n acelai program totul va fi identic cu momentul n care l-ai nchis. Aceasta deoarece spaiul de lucru este salvat ntr-un fiier (cu extensia .dsw) i informaiile din acesta reconstituie n mod identic spaiul de lucru la orice nou accesare. n mod normal, fiecare spaiu de lucru are n interiorul lui un singur proiect, dar se pot aduga mai multe proiecte la acelai spaiu de lucru. Cum deschidem deci un proiect nou? Foarte simplu: n meniul File alegei opiunea New i vei fi invitai s alegei tipul de proiect dorit (fig. 1.3). Dup cum se poate vedea, exist mai mute tipuri de proiecte ce pot fi create. Ne vom referi n acest moment la dou, pe care le vom utiliza n capitolele ce urmeaz. 1.1.1 Win32 Console Application. sta nu e DOS? Vom ncerca nti s creem un proiect consol. Asta nseamn c vom obine un program care s ruleze ntr-un ecran MsDos, cu toate c nu se respect regulile de compunere a adreselor din acest btrn sistem de operare, adic ceea ce tim: pointeri pe 16 bii. Acum pointerii sunt pe 32 de bii, dar i vom folosi la fel ca nainte. Pentru aceasta, vom alege opiunea Win32 Console Application, i haidei s scriem n caseta Project name numele proiectului: Primul. O dat ales numele proiectului i apsat pe butonul OK, mediul de programare va dori s tie cum trebuie s creeze proiectul: s ne lase pe noi s lum totul de la 0, sau s ne ofere nite abloane de programare, cu anumite biblioteci gata incluse (fig. 1.4). Vom alege opiunea An empty project, adic va trebui s populm noi proiectul cu diferite fiiere nainte de a putea compila ceva. Apoi apsm butonul Finish pentru a ncheia procesul de generare a proiectului. nainte de final, mediul ne va mai afia o pagin de informaii, n care ne va spune ce Fig. 1.3. Crearea unui nou proiect Tipuri de proiecte Numele proiectul ui Directorul n care se creeaz proiectul
  4. 4. Curs 1-2. S ne reamintim 4 am lucrat pn n acest moment, adic aproape nimic. Dup apsarea butonului OK, proiectul este gata s fie utilizat. Dac o s v uitai n acest moment la structura de directoare, vei constata c n directorul ales de Dvs. n caseta Location, a fost creat un director cu numele Primul, care conine mai multe fiiere asociate proiectului. Nu vei gsi nici un fiier surs (.cpp) sau header (.h). Acestea trebuie inserate n proiect. Pentru aceasta, din nou n meniul File vom alege opiunea opiunea New. De aceast dat, mediul ne va permite s populm proiectul cu diferite fiiere. Vom alege opiunea C++ Source File i vom da numele fiierului surs tot Primul (fig. 1.5). Trebuie s avem grij ca opiunea Add to project: s fie validat, n caz contrar fiierul nou creeat nu va fi adugat proiectului i va trebui s-l adugm manual. Fig. 1.4. Creem un proiect gol. O s avem ceva de lucru... Fig. 1.5. Vom aduga i un fiier surs Fiier header Fiier surs Dac nu e validat, vom aduga manual fiierul la proiect Numele fiierului
  5. 5. Curs 1-2. S ne reamintim 5 Gata! Dac apsm OK, fiierul Primul.cpp e adugat directorului Primul i ateapt s fie completat cu codul surs. Haidei s scriem urmtorul program: #include void main() { char nume[20]; char prop1[]="n Salut "; char prop2[]="n Ai scris primul program VC++!nn"; cout > nume; cout punct1.coordx >>punct1.coordy; punct1.coordy= abs(punct1.coordy); Dar cine garanteaz c a doua linie de program este introdus ntotdeauna? Poate c o soluie mai bun ar fi citirea ordonatei prin intermediul unei funcii, care s returneze ntotdeauna valoarea ei absolut. Vom putea avea spre exemplu n program declarat funcia int citescoordy () { int inputy; cin >> inputy; return (abs(inputy)); } iar secvena de program de citire a punctului ar putea fi cin >> punct1.coordx ; punct1.coordy=citescoordy(); Dar, din nou, cine garanteaz c undeva n program nu se strecoar i una din liniile cin >> punct1.coordy; sau x y Zona de existen a punctelor Fig. 1.12. Aici avem puncte...
  6. 7. Curs 1-2. S ne reamintim 7 punct1.coordy=7; Nu avem n acest moment la ndemn nici o tehnic prin care s fim obligai s folosim doar funcia de citire pentru atribuirea de valori ordonatei unui punct, sau s ne oblige s atribuim doar valori pozitive acesteia. 1.2.1 Ce este o clas? Ce este un obiect? Din cele artate mai sus, apare ideea introducerii unui nou tip, care s ncapsuleze o structur de date i un set de funcii de interfa care acioneaz asupra datelor din structur. n plus, noul tip trebuie s asigure diferite niveluri de acces la date, astfel nct anumite date s nu poat fi accesate dect prin intermediul unor funcii de interfa i nu n mod direct. Acest nou tip este denumit clas. n limbajul C++ clasele se obin prin completarea structurilor uzuale din limbajul C, cu setul de funcii necesare implementrii interfeei obiectului. Aceste funcii poart denumirea de metode. Pentru realizarea izolrii reprezentrii interne de restul programului, fiecrui membru (dat din cadrul structurii, sau metod) i se asociaz nivelul de ncapsulare public sau private (fig. 1.13). Un membru public corespunde din punct de vedere al nivelului de accesibilitate, membrilor structurilor din limbajul C. El poate fi accesat din orice punct al programului, fr s se impun vreo restricie asupra lui. Membrii private sunt accesibili doar n domeniul clasei, adic n clasa propriu- zis i n toate funciile membre. Sintaxa folosit pentru declararea unei clase este urmtoarea: class Nume_clasa { [ [private :] lista_membri_1 ] [ [public :] lista_membri_2 ] }; Cuvntul cheie class indic faptul c urmeaz descrierea unei clase, avnd numele Nume_clasa. Numele clasei poate fi orice identificator (orice nume valid de variabil), dar trebuie s fie unic n cadrul domeniului de existen respectiv. Descrierea clasei const din cele dou liste de membri, prefixate eventual de cuvintele cheie private i public. Membri privai. Pot fi accesai doar din cadrul Membri publici. Pot fi accesai i din afara clasei Funcii de interfaa (metode) Fig. 1.13. Accesibilitatea membrilor clasei
  7. 8. Curs 1-2. S ne reamintim 8 Observaie: Dac n declaraia unei clase apare o list de membri fr nici un specificator de acces, aceti membri vor fi implicit privai. n exemplul nostru, este evident c va trebui s declarm o clas care s conin ca i date dou valori ntregi. Deoarece ordonata poate fi doar pozitiv, ea nu trebuie s poat fi accesat direct din program, ci doar prin intermediul unei