Free Essay

Orient Objected Programming in Romanian

In:

Submitted By fertzko
Words 1337
Pages 6
Adrian DEACONU

2008 - 2009 REPROGRAFIA UNIVERSITĂŢII "TRANSILVANIA" DIN BRAŞOV

Cuvânt înainte

Cartea de faţă se doreşte a fi, în principal, un ghid pentru studenţii din domeniul Informatică, dar, evident, ea poate fi utilă tuturor celor care vor să înveţe să programeze orientat pe obiecte, în general şi în C++, în particular. Este bine ca cel care citeşte această lucrare să nu fie începător în programare şi, mai mult, este trebuie să aibă cunoştiinte avansate despre limbajul C. Anumite concepte generale cum ar fi constante, variabile, funcţii, tipuri numerice, caractere, string-uri, pointeri, tablouri etc. se consideră cunoscute. Lucrarea este structurată pe două părţi. În prima parte se prezintă elementele introduse odată cu apariţia limbajului C++, care nu existau în C şi care nu au neaparat legatură cu programarea orientată pe obiecte. În partea a doua este facută o prezentare teoretică a programarii orientate pe obiecte, introducand şi conceptele POO. După această scurtă prezentare pur teoretică se prezintă programarea orientată pe obiecte din C++. Tot aici sunt prezentate şi o parte din clasele care se instalează odată cu mediul de programare (clase pentru lucrul cu fluxuri, clasa complex etc.). La fiecare capitol, sunt date exemple sugestive, care ilustrează din punct de vedere practic elemente de noutate. Este bine ca aceste exemple să fie înţelese şi, acolo unde este nevoie, să fie scrise şi rulate de către cititor. Programele din această carte nu conţin erori, deoarece ele au fost întâi testate şi abia apoi introduse în lucrare. În general, tot ceea ce este prezentat în această carte (teorie şi aplicatii) este recunoscut atât de compilatorul C++ al firmei Borland, cât şi de compilatorul Visual C++ al companiei Microsoft.

Autorul.

2

CUPRINS
PARTEA ÎNTÂI
1.1. Ce este limbajul C++ ? ................................................................................5 1.2. Elemente introduse de C++ .........................................................................5 1.3. Declaraţia variabilelor în C++ ....................................................................6 1.4. Fluxuri standard în C++ .............................................................................7 1.5. Manipulatori .................................................................................................7 1.6. Indicatori de formatare ...............................................................................8 1.7. Alocarea dinamică a memoriei în C++ ....................................................10 1.8. Funcţii în C++ .............................................................................................15
1.8.1. Funcţii cu acelaşi nume şi cu parametrii diferiţi ................................................. 15 1.8.2. Transmiterea parametrilor prin referinţă ........................................................... 16 1.8.3. Valori implicite pentru parametrii funcţiilor ...................................................... 18 1.8.4. Funcţii inline ........................................................................................................... 19 1.8.5. Funcţii şablon (template) ....................................................................................... 20

1.9. Supraîncărcarea operatorilor ...................................................................22 1.10. Tratarea excepţiilor .................................................................................28

PARTEA A DOUA
2.1. Prezentare teoretică a P.O.O. ...................................................................33 2.2. Programarea orientată pe obiecte în C++ ...............................................35
2.2.1. Neajunsuri ale POO în C ....................................................................................... 35 2.2.2. Declaraţia unei clase în C++ .................................................................................. 36 2.2.3. Declaraţia şi descrierea funcţiilor membre .......................................................... 36 2.2.4. Constructori ............................................................................................................ 38 2.2.5. Destructori ............................................................................................................... 38 2.2.6. Funcţii prietene (friend) unei clase ........................................................................ 40 2.2.7. Declaraţia, descrierea operatorilor pt. o clasă...................................................... 42 2.2.8. Membri statici ......................................................................................................... 44 2.2.9. Pointerul this ........................................................................................................... 45 2.2.10. Constructorul de copiere ...................................................................................... 49 2.2.11. Moştenirea în C++ ................................................................................................ 51 2.2.12. Funcţii virtuale ...................................................................................................... 53 2.2.13. Destructori virtuali ............................................................................................... 55 2.2.14. Funcţii pur virtuale .............................................................................................. 56 2.2.15. Moştenire multiplă ............................................................................................... 60
3

2.2.16. Clase virtuale .........................................................................................................60 2.2.17. Constructori pentru clase virtuale .......................................................................62 2.2.18. Clase imbricate ......................................................................................................66 2.2.19. Clase şablon (template) ..........................................................................................67

2.3. Fluxuri în C++ ........................................................................................... 71
2.3.1. Ierarhia streambuf ...................................................................................................71 2.3.2. Ierarhia ios ...............................................................................................................72

2.4. Fişiere în C++ ............................................................................................. 76 2.5. Prelucrarea string-urilor în C++ ............................................................. 91 2.6. Clasa complex din C++ ............................................................................. 94

Indicaţii şi răspunsuri ...................................................................................... 96 ANEXE .............................................................................................................. 98 BIBLIOGRAFIE ............................................................................................ 104

4

PARTEA ÎNTÂI
Obiective
În aceasta primă parte ne propunem să vedem ce este limbajul C++ şi să studiem elementele introduse de C++, care nu au neaparat legatură cu programarea orientată pe obiecte.

1.1. Ce este limbajul C++ ?
Limbajul C++ este o extensie a limbajului C. Aproape tot ce ţine de limbajul C este recunoscut şi de către compilatorul C++. Limbajul C++ a apărut ca o necesitate, în sensul că el a adus completări limbajului C care elimină câteva neajunsuri mari ale acestuia. Cel mai important neajuns al limbajului C este lipsa posibilităţii de a scrie cod orientat pe obiecte în adevăratul sens al cuvantului. În C se poate scrie într-o manieră rudimentară cod orientat pe obiecte folosind tipul struct, în interiorul căruia putem avea atât câmpuri, cât şi metode. Orientarea pe obiecte cu tipul struct are câteva mari lipsuri: membrii săi se comportă toţi ca nişte membri publici (accesul la ei nu poate fi restrictionat), nu avem constructori, destructori, moştenire etc. Limbajul C a fost lansat în anul 1978 şi s-a bucurat încă de la început de un real succes. Acest lucru s-a datorat uşurinţei cu care un programator avansat putea scrie programe în comparaţie cu restul limbajelor ce existau atunci pe piaţă, datorită în special modului abstract şi laconic în care se scrie cod. De asemenea, modul de lucru cu memoria, cu fişiere este mult mai transparent. Acest lucru are ca mare avantaj viteza crescută de execuţie a aplicaţiilor, dar poate foarte uşor conduce (mai ales pentru începatori) la erori greu de detectat, datorate “călcării” în afara zonei de memorie alocate. La sfârşitul anilor ’80 a apărut limbajul C++ ca o extensie a limbajului C. C++ preia facilităţile oferite de limbajul C şi aduce elemente noi, dintre care cel mai important este noţiunea de clasă, cu ajutorul căreia se poate scrie cod orientat pe obiecte în toată puterea cuvantului. Limbajul C++ oferă posibilitatea scrierii de funcţii şi clase şablon, permite redefinirea (supraîncarcarea) operatorilor şi pentru alte tipuri de date decât pentru cele care există deja definiţi, ceea ce oferă programatorului posibilitatea scrierii codului într-o manieră mult mai elegantă, mai rapidă şi mai eficientă. În anul 1990 este finalizat standardul ANSI-C, care a constituit baza elaborării de către firma Borland a diferitelor versiuni de medii de programare. În prezent sunt utilizate într-o mare măsură limbajele Java (al cărui compilator este realizat firma Sun) şi Visual C++ (care face parte din pachetul Visual Studio al firmei Microsoft), care au la baza tot standardul ANSI-C. Există însă şi competitori pe masură. Este vorba în prezent în special de limbajele ce au la bază platforma .NET - alternativa Microsoft pentru maşina virtuală Java. Poate cel mai puternic limbaj de programare din prezent este C# (creat special pentru platforma .NET). Limbajul C# seamănă cu C/C++, dar totuşi el nu este considerat ca facând parte din standardul ANSI-C. În C++ se poate programa orientat pe obiecte ţinându-se cont de toate conceptele: abstractizare, moştenire, polimorfism etc. Odată cu mediul de programare al limbajului C++ (fie el produs de firma Borland sau de firma Microsoft) se instalează şi puternice ierarhii de clase, pe care programatorul le poate folosi, particulariza sau îmbogăţi.

1.2. Elemente introduse de C++
În acest capitol vom face o scurtă enumerare a elementelor introduse de C++, care nu se găseau în limbajul C.
5

Lista celor mai importante noutăţi aduse de limbajul C++ este:  tipul class cu ajutorul căruia se poate scrie cod adevărat orientat pe obiecte  posibilitatea declarării variabilelor aproape oriunde în program  o puternică ierarhie de clase pentru fluxuri  alocarea şi eliberarea dinamică a memoriei cu ajutorul operatorilor new şi delete  posibilitatea de a scrie mai multe funcţii cu acelaşi nume dar cu parametrii diferiţi  valori implicite pentru parametrii funcţiilor  funcţiile inline  funcţiile şi clasele şablon (suport adevărat pentru programare generică)  tratarea excepţiilor stil modern (folosind instrucţiunea try … catch)  supraîncarcarea operatorilor  clasa complex etc. Aceste elemente introduse de C++ vor fi prezentate pe larg în cele ce urmează.

1.3. Declaraţia variabilelor în C++
În C variabilele locale trebuie să fie declarate pe primele linii ale corpului funcţiei (inclusiv în funcţia principală). În C++ declaraţiile variabilelor pot fi făcute aproape oriunde în program. Ele vor fi cunoscute în corpul funcţiei din locul în care au fost declarate în jos. Declaraţiile de variabile pot apărea chiar şi în interiorul instrucţiunii for. Iată un exemplu în acest sens: int n=10,a[10]; for (int s=0,i=0;i

Similar Documents

Premium Essay

If Tomorrow Comes

...Sydney Sheldon - If Tomorrow Comes If Tomorrow Comes Sydney Sheldon Hmmm, looks like another genie got out of the bottle Me Fiction Scanned and fully proofed by nihua, 2002-03-24 v4.1 CR/LFs removed and formatting tidied. pdb conversion by bigjoe. IF TOMORROW COMES by Sidney Sheldon, ©1985 BOOK ONE Chapter 01 New Orleans THURSDAY, FEBRUARY 20--- 11:00 P.M. She undressed slowly, dreamily, and when she was naked, she selected a bright red negligee to wear so that the blood would not show. Doris Whitney looked around the bedroom for the last time to make certain that the pleasant room, grown dear over the past thirty years, was neat and tidy. She opened the drawer of the bedside table and carefully removed the gun. It was shiny black, and terrifyingly cold. She placed it next to the telephone and dialed her daughter's number in Philadelphia. She listened to the echo of the distant ringing. And then there was a soft "Hello?" "Tracy... I just felt like hearing the sound of your voice, darling." "What a nice surprise, Mother." "I hope I didn't wake you up." "No. I was reading. Just getting ready to go to sleep. Charles and I were going out for dinner, but the weather's too nasty. It's snowing hard here. What's it doing there?" Dear God, we're talking about the weather, Doris Whitney thought, when there's so much I want to tell her. And can't. "Mother? Are you there?" Doris Whitney stared out the window. "It's raining." And she thought, How melodramatically appropriate. Like an...

Words: 123246 - Pages: 493

Free Essay

Introduction to Sociolinguistic

...An Introduction to Sociolinguistics AITA01 1 5/9/05, 4:36 PM Blackwell Textbooks in Linguistics The books included in this series provide comprehensive accounts of some of the most central and most rapidly developing areas of research in linguistics. Intended primarily for introductory and post-introductory students, they include exercises, discussion points, and suggestions for further reading. 1. Liliane Haegeman 2. 3. 4. 5. 6. 7. 8. 9. Andrew Spencer Helen Goodluck Ronald Wardhaugh Martin Atkinson Diane Blakemore Michael Kenstowicz Deborah Schiffrin John Clark and Colin Yallop 10. 11. 12. 13. Natsuko Tsujimura Robert D. Borsley Nigel Fabb Irene Heim and Angelika Kratzer 14. Liliane Haegeman and Jacqueline Guéron 15. Stephen Crain and Diane Lillo-Martin 16. Joan Bresnan 17. Barbara A. Fennell 18. Henry Rogers 19. Benjamin W. Fortson IV 20. AITA01 Liliane Haegeman 2 Introduction to Government and Binding Theory (Second Edition) Morphological Theory Language Acquisition Introduction to Sociolinguistics (Fifth Edition) Children’s Syntax Understanding Utterances Phonology in Generative Grammar Approaches to Discourse An Introduction to Phonetics and Phonology (Second Edition) An Introduction to Japanese Linguistics Modern Phrase Structure Grammar Linguistics and Literature Semantics in Generative Grammar English Grammar: A Generative Perspective An Introduction to Linguistic Theory and Language...

Words: 213157 - Pages: 853