You are on page 1of 371
Google This book is provided in digital form with the permission of the rightsholder as part of a Google project to make the world's books discoverable online. The rightsholder has graciously given you the freedom to download all pages of this book. No additional commercial or other uses have been granted Please note that all copyrights remain reserved About Google Books Google's mission is to organize the world’s information and to make it universally accessible and useful. Google Books helps readers discover the world’s books while helping authors and publishers reach new audiences. You can search through the full text of this book on the web at ittp//books.google.com4 viizesy Google Daniel Danciu George Mardale ARTA PROGRAMARII IN JAVA vol I - Concepte fundamentale viizessy Google Cuprins Prezentarea limbajului Java Ml 12 13 14 1s Nofiuni fundamentale de programat 2 22 23 24 imbaje de programare . {nceputusile imbajului Java Caracteristici ale limbajului Java Implementiri ale limbajului Java Implementarea Sun a limbajului Java 1.5.1 Platformele Java : 1.5.2. Platforma J2SE (lava 2 Platform, Standard Edition) 1.5.3 I2SDK Java 2 SDK, Standard Edition) 1.54 J2RE (ava 2 Runtime Environment, Standard Edition) 1.5.5 Documentatia J2SE (Java 2 Standard Edition Documen- tation) 1.5.6 Licenja de utilizare a platformei J2SE Java ‘Mediu! de Iueru Java Primul program Java 2.2.1 Comentarii 2.22 Funcjiamain 2.2.3 Afigarea pe ecran Tipuri de date primitive 2.3.1 Tipurile primitive 23.2 Constante . 2.3.3 Declararea si inijalizarea tipurilor primitive in Java 2.34 Citite/scriere Ia terminal Operatori de baz’ 24.1 Operatori de atribuire 24.2 Operator aritmetici binari 3 7 a 19 2 2B . 26 . 26 27 29 32 32 32 34 35 35 36 37 37 37 37 38 39 40 4 . 42 cura 24.3 Operator aritmetici unati Conversii de ip 25 ini conditionale 25.1 Operator relajionali 25.2 Operator logict 25.3 Operator la nivel de bit 25.4 Instrucjiumea S 25.5 Instructiunea while 25.6 Instructiunea for 25.7 Instructiunea do 25.8 Instructiunile break si continue 25.9 Instrucjiunea switch . 2.5.10 Operatorul conditional 2.6 Meiode . 2... ce eeeee 26.1 Supraincirearea numelor la metode Referinte 31 Ce este oreferin . : 3.2 Fundamente despre obiecte si referinje 3.2.1 Operatorul punct (.) 3.2.2 Declararea obiectelor 3.2.3 Colectarea de gunoaie (garbage collection) 3.2.4 Semnificatia operatonutu 3.2.5 Transmiterea de parametsi 3.2.6 Semnificajia operatorului 3.2.7 Supraincdrcatea operatorilor pentru obiecte . 3.3. Siruri de caractere (stringuri) 3.3.1 Fundamentele utiliziii stringurilor 3.3.2 Concatenarea stringurilor 33.3 Compararea stringurilor 33.4 Alte metode pentru stringuri . . 3.3.5 Conversia de la string la tipusile primitive si invers 34. Sinai 34.1 Declarajie,atribuire si metode 34.2 Expansiunea dinamici a girurilor 34.3. $inuri cu mai multe dimensiuni 34.4 Argumente in linie de comand 42 4B aEEE 49 sl . SI 2 33 . 54 56 . 56 . ST 67 ao 68 a) 70 n n R 2 .B “ 18 9 BREE 4 Obiecte si clase 4.1. Ce este programarea orientata pe obiecte? 4.2 Unexemplu simplu 43° Metode zuale 4.3.1 Constructor Modificatori si accesori Afigare gi toString () Metoda equals () Metode statice Auribute statice . Metoda main () 44 cece Directiva import. Instructiunea package Variabila sistem CLASSPATH Reguli de vizibilitate package-friendly Compilarea separati 4.5 Alte operatiicu obiecte gi clase 4.5.1 Referinja this 4.5.2. Prescurtarea this pentru constructor: 4.53 Operatorul instanceof . 4.54 Inigializator statici S Mostenire SAL Ce este mostenirea? 5.2 Simaxa de bazii Java 5.2.1 Reguli de vizibilitate - : 5.22 Constructorsisuper ...... 5.23 Redefinirea metodelor, Polimorfis 5.24 Redefinirea parfiala a metodelor 5.25 Metode si clase final 5.26 Metode gi clase abstracte 5.3 Exemplu: Extinderea clasei Shape 54 Mostenine multipla 55. Interfeje 5.5.1 Definirea unei interfeye 5.5.2 Implementarea unei interfeje 5.53 _Interfeje multiple . 5.6 Implementarea de componente generice 37 BSSEss 98 -101 -101 102 103 103 105 106 106 106 108 = 108: 108: 1s 6 119 -120 -120 2122 128 128 130 133 138 139 139 139 1d sd 2145; 5.7.1 Clasificarea claselor interioare . 5.7.2 Clasele membre statice ale clase exterioare 5.7.3 Clasele membre nestatice ale clasei exterioare 5.7.4 Clase locale 5.7.5 Clase anonime . : 5.7.6 _Avantajele si dezavantajeleclaselorimerioare 5.8 Identificareatipurilor de date in faza de execusie 58.1 Identificarea standard a tipurilor de date 5.8.2. Mecanismul de reflectic 6 Tratarea exceptilor 6.1 Ce sunt excepfiile? 6.2 Tipuri deexceptii . 6.3 Definirea proprilor exceptii de cite programator 64 Prinderea si tratarea exceptilor 64.1 Blocul try 64.2 Blocul catch 643 Blocul finally 6.5 Anuncarea excepfiilor 65.1 Instructiunea throw 65.2 Clauza throws 6.46 Sugesti pentru uilizarea ficient a exceptilor | 6.7 Avantajele uilizirii excepyiilor. Coneluzii 7 Intrare si iesire (Jay 7.1 Preliminari 7.2 Operatii de baz pe Muxuri (stream-uri) 7.3 Obiectul StringTokenizer 74. Fisiere secventiale 75 Utilizarea coletilor de resurse (resource bundles) 75.1 Utilizarea fisierelor de proprietiti pentru citirea datelor vO) 8 Firede executie 8.1 Ce este un fir de executie? 8.2 Fire de execusie in Java 8.2.1 Crearea firelor de execusie 8.3 Accesul concurent la resurse 83.1 Sineronizare 83.2 Capcana metodelor nesincronizate 83.3 Instrucjiunea synchronized . -1St 151 153 153 156 159 160 163 165 178 178 = 180) 183 186 186 -187 191 195 195 2197 200 204 207 208, = 209 210 212 212 216 27 2218 2218, 222 229 233, 235 84 83.4 Competijie asupra monitoarelor . 8.35. Sincronizarea metodelor statice 8.3.6 Monitoare si atribute publice 8.3.7 Cind NU trebuie si folosim sineronizarea 8.38 Blocare circulari (deadlock) Coordonarea frelor de execujie. eee 84.1 De ce este necesar si coordonam firele de execusie? 842 wait() sinotity() 8.4.3 Exemplu de coordonate a firelor de execusie: problema consumator-producitor 8.44 Dejinerea monitoarelor 84.5 Utilizarea instru 8.4.6 Unalt exemplu: consumator si producitori multipli 84.7 Utilizarea lui InterruptedExcept ion A. Mediul Java gi uneltele ajutitoare Asl Bditarea codului sursi ALLL Editoare : A.L2. Meditintegeate IDE (Integrated Development Environ- ‘ments) A2 Instalarea mediului Java A2.1 Instalarea sub Windows A241 Instructiuni de instalare A.22Instalarea sub Linux A221 _Instrucjiuni de instalare A22.2 _Instalare cu autoextragere A223 Instalarea folosind RPM A3. Compilarea codului sursit ABA Ant AA Rularea unei aplicaii java Ad CLASSPATH AS Documentaii java . B_Conventii de notafiein Java. Utilitarul javadoc B.1Necesitatea conventiilor de scriere a programelor B.2 Tipuri de fisiere B.3 Organizarea fisierelor sursi java B3.1 Comentarile de inceput B3.2_ Instructiunile package gi import B.3.3._Declarapile clasi si interfejei 237 237 239 239 240 242 242 2244 24s 250 251 255 238 265 265 265 266 267 268 268. 270 :270 2 2m. 273 75 2 .277 2278 279 279 280 280 281 281 +282 Ba Indentarea..... . wee eee 9283 B4.1 Lungimeaunei linii de cod... oe 284 B42 "Ruperea' linilor 284 B43 Acoladele 284 B44 Spaierea 285 BS Comentarile 286 B.S.1 Comentarii de implementare 287 B52 Comentarile de documentajie 288 B6 Declariti . wees = 288) B61 Numirul de declariri pe linie . . . wee 2 288 B62 Inifilizarea variabilelor . 6. 289 B63. Loculdedeclararea variabilelor ... 289 B64 Declararea claselor sia interfojelor. ...... 289 BT Instrucyiuni 290 B.7.L _Insteucyiuni simple 290 B.7.2_ Instrucfiuni compuse 290 B73 Instrucfiunea return 291 B74 Instructiunea if-else 291 B75 Instructiunea for 292 B76 Instructiunea while 2. . 292, B77 Instrucjiuneado-while ....... 2.292 B78 Instrucjiunea switch ..... 2... 22.292 B79 Instrucjiunea try-catoh...... 2. 293 B8 Convengii de notatie . feet eee ees 2294 BO. Practici utile in programare 296 9.1 Referizea atributelor $i a metodelor statice 296 B92 Atibuirea de valori variabilelor 297 B.10 Exempla de figiersursi Java 297 BAI Utilitarul javadoc 299 B.IL1 Sintaxa javadoc 299 B.LI2 Deserierea wtilitarslui 300 B.L13 Btichete javadoc +. 303 B.114 Opjiunile comenzii javadoc»... . 25. 305 -307 C Definirea pachetelor Java, Arhive jar 310 CL Prezentare generaliia pachetelor Java predefinite 310 C2 Definirea de pachete de catre utlizator . . wee BIE C3. Athive jar (ava ARchives) 0 eee 322 C3. Utilizarea fisierelor . jar 2323) 3.2 Crearea unui figier jar... - duoapaooeys) 3.3. Vizualizarea conjinuiului unui fisier . jar oe 327 C34 Extragerea conjinutului unuifigier jar... .... 328 C35. Figioral manifest al unci arhive ar... 0... 329 €3.6 Modificarea figienului manifest al unciarhive jar. . . 331 €3.7 Modificarea conjinutului unui fier . jar 332 C38. Rularea aplicatilor Java "impachetate” int-o arhiva jar 333 D_Internafionalizarea aplicafiilor. Colecfii de resurse 335 Dal Timpul, numerele sidatele calendaristice. ss... 335 D2. Colectile de resurse in intemnajionalizarea aplicayiilor .. . . . . 341 2.1 Unexempluconcret.. . . cee 2 342, 22 Implementareacoleflorprin Li stResourceBundie344 D.2.3 Implementarea colecjilorprin Proper tyResourceBundle36 D.24 Utilizarea colectillorde resurse . ov ee 348 D3 Imternationalizarea mesajelor dinamice .. . «ss ss ss +» «351 E_ Resurse Java 356 ELL Site-ul Sun Microsystems . 356 E2_ Tutoriale despre limbajul Java disponibile pe Internet 337 3 Cagji despre limbajul Java disponibile pe Internet 357 Ed Reviste online de specialitate oe vee vv es 358 ES Liste de discufii despre limbajul Java... 6... vos ss ss 358 EG Alte resurse ava ee ee 389 viizessy Google Introducere Ce invitur pred Macstal?” seb un vziator ‘Nici una”, rispunse discipoll “Atunci de ce fine discursuri?” “Bl doar ne ara calea- nu ne vai nimi.” “Anthony de Mello, O clip de injlepciune icine a folosit cel pugin o data Internet sau acitito revisté de specalitate {n domeniu! informaticii, a auzitcu siguranga cuvantal Java. Java reprezintd un limbaj de programare, creat de compania Sun Microsystems in anul 1995. Initial Java a fost gndit petra a imbunatai continutul paginilor web prin adau- garea unui conginut dinamic: animaie, multimedia ete. In momentul lansérit sale, Java a revolujionat Internet, deoarece era prima tehnologic care oferea un astfel de conjinut. Ulterior au aparut gi alte tchnologii aseménatoare (cum ar fi Microsoft ActiveX sau Macromedia Shockwave!), dar Java gi-a pistrat importanja deosebité pe care a dobindit-o in rindul programatorior, in primul rind datortéfacilitilor pe care le oferea. incepand eu anul 1998, end a aparut versiunea 2a limbajului (engl. Java 2 Platform), Java a fost extins, acoperind gi ate diree{i de dezvoltare: programarea apical enterprise (aplicaii de tip server), precum gi a celor adresate dispo7i telefoane mobile, pager-e sau PDA-usi®. Toate acestea au reprezentat facili jelor eu resurse limitate, cum ar fi Goi cre wine mal des Itercal sunt probabil big cu contoale ActiveX sau ev ai ‘mai lash adel paginilor web. 2PDA = Personal Digital Assistant (mick dspotive de eau, de dimensiuni pun mal mas ect ale uni telefon mobi capable st ofee fit de agen, dar is uleze apical it-an od ea asemanitor cu celal unui PC)-La moment actual exist:mal mute pus de PDA. Plm-u, pockelPC-u n roi adiugate limbajului, care a pistrat insé si posiblitiile de a crea aplicait standard, de tipul aplicaiilor in linie de comands sau aplicaii bazate pe GUE. Lansarea versiunii 2 a limbajului Java a fost 0 dovada a succesului imens de care s-au bucurat versiunile anterioare ale limbajului, da sia dezvoltari limba- Jjului in sine, a evolufici sale ascendente din punct de vedere al fa care le ofera, cat si al performangelor pe care le realizeaza Cum este organizatit aceasta carte? Avand in vedere popularitatea extraordinari de care se bucuralimbajul Java in cadnul programatorilor din intreaga lume, am considerat util scrierea une lucrari in limba romana care si fie accesibila celor care dorese si fnveje sau sit aprofundeze acest limbaj. Ideea care a stat la baza realiztiiacestei cari a fost aceea de a prezenta nu numai limbajul Java in sine, ci si modul in eare se implementeaza algoritmii si structurile de date fundamentale in Java, elemente care sunt indispensable orietirui programator eu pretengii..Agadar, cartea nu este destinati numai celor care dorese si acumuleze nofiuni despre limbajul Java in sine, ci i celor care intenjioneaza si igi aprofundeze gi rafineze cunos- tinjele despre algoritmi si si igi dezvolte un stil de programare elegant. Ca 0 consecing, am structurat cartea in douti volume: prima volum (cel de fafa) este orientat spre prezentarea principalelor caracteristici ae limbajului Java, in timp ce volumul al doilea (disponibil separat) constituie oabordare a algoritmilor din perspectiva limbajului Java, Finalul primului volum cuprinde un grup de cinei ‘anexe, care prezint mai aminunjit anumite informatii cu caracter mai special, deosebit de utile pentru cei care ajung s& programeze in Java, Am ales aceasta strategie deoarece a doblndi cunostinje despre limbajul Java, fri a avea o ima- gine clara despre algoritmi, nu reprezint& un progres real pentru un programator, Iarscopul nostru este acela de a va oferi posibilitatea si deveniti un programator pentru care limbajul Java gi algoritmi si nu mai constituie © necunoscut Cele dou volume cuprind numeroase soluji Java complete ale problemelor prezentate, Mai este necesarl o remarci: deseori am optat, ait in redactarea co-

You might also like