Jim Keogh face parte din personalul didactic al Universitãþii Columbia, unde predã cursuridespre dezvoltarea aplicaþiilor Java. De asemenea, este membru al programului JavaCommunity Process Program. A creat primul comitet de urmãrire a site-urilor de comerþelectronic din Universitatea Columbia ºi a devenit primul preºedinte al acestuia. Timp demai mult de un deceniu a dezvoltat sisteme avansate pentru firme importante din domeniulfinanciar ºi este autorul mai multor cãrþi de calculatoare foarte bine vândute.
DESPRE AUTOR
v
CUPRINS PE SCURT
CAPITOLUL 1 În interiorul limbajului Java 1
CAPITOLUL 2 Tipuri de date ºi variabile 17
CAPITOLUL 3 Expresii ºi instrucþiuni 41
CAPITOLUL 4 Structuri de control 65
CAPITOLUL 5 Matrice 91
CAPITOLUL 6 Metode ºi polimorfism 109
CAPITOLUL 7 Clase 125
CAPITOLUL 8 Moºtenirea 145
CAPITOLUL 9 Tratarea excepþiilor 165
CAPITOLUL 10 Execuþia multifilarã (multithreading) 181
CAPITOLUL 11 Fiºiere ºi fluxuri 209
CAPITOLUL 12 Interfaþa graficã cu utilizatorul 223
CAPITOLUL 13 JDBC ºi obiecte Java pentru date 255
CAPITOLUL 14 Miniaplicaþii Java 289
Examenul final 303
Rãspunsuri la întrebãrile recapitulative ºiexamenul final 309
Index 325
vii
CUPRINS
Introducere xv
CAPITOLUL 1 În interiorul limbajului Java 1Programe pentru calculatoare 2
Date 2Limbaje de programare 3La începuturi 5
Cum devine standard un limbaj de programare 7Apoi Java 7În interiorul limbajului Java 9
Scrierea unui program Java pornind de la zero 10Compilarea unui program Java 11Rularea unui program Java 12
Analiza pe componente a unui program Java 13Definiþia clasei 13Definiþia metodei 14Instrucþiuni 15
Întrebãri recapitulative 16
CAPITOLUL 2 Tipuri de date ºi variabile 17Date ºi numere 17
Sã ne jucãm cu sistemele de numeraþie 20Numere ºi caractere 20Cãutarea valorilor Unicode 22
viiiJava fãrã mistere
Valori literale 22Literale întregi 23Literale în virgulã mobilã 24Literale booleene 25Literale de tip caracter 26ªiruri de caractere literale 28
Tipuri de date 28Tipuri de date întregi 29Tipuri de date în virgulã mobilã 31Tipuri de date pentru caractere 31Tipul de date boolean 32Conversia tipurilor de date 32
Variabile 33Declararea unei variabile 34Declararea variabilelor multiple 36Iniþializarea unei variabile 36Domeniul de valabilitate al unei variabile 38Durata de viaþã a unei variabile 39
Întrebãri recapitulative 40
CAPITOLUL 3 Expresii ºi instrucþiuni 41Expresii 41Tipuri de expresii 43Operatori 45
Operatori aritmetici 46Operatori relaþionali 50Operatori logici 52Operatori pe biþi 56
Instrucþiuni 63Întrebãri recapitulative 63
CAPITOLUL 4 Structuri de control 65Fluxul programului 65Instrucþiuni de control 66
ixCUPRINS
Instrucþiuni de selecþie 67Instrucþiunea if 67Instrucþiunea switch 76
Instrucþiuni iterative 80Ciclul for 80Ciclul while 85Ciclul do while 87
Instrucþiuni de salt 88Instrucþiunea break 88Instrucþiunea continue 89Instrucþiunea return 90
Întrebãri recapitulative 90
CAPITOLUL 5 Matrice 91În interiorul unei matrice 91Alocarea memoriei pentru o matrice 93Iniþializarea matricelor 94Matrice multidimensionale 94
Crearea unei matrice multidimensionale 95Atribuirea valorilor cãtre elementele matricei 96Membrul de date length 96Transmiterea unei matrice ca argument al
unei metode 98Returnarea unei matrice dintr-o metodã 100Moduri alternative de creare a unei matrice 101Clasa Arrays 102
Metoda equals() 102Metoda fill() 104Metoda sort() 106Metoda binarySearch() 106
Întrebãri recapitulative 107
CAPITOLUL 6 Metode ºi polimorfism 109În interiorul metodelor 110Tipuri de metode 110
xJava fãrã mistere
Definiþia unei metode 111Antetul metodei 111Corpul metodei 112Valoarea returnatã de metodã 113
Lista de argumente 114Elemente ale listei de argumente 115Cum funcþioneazã o listã de argumente 115
Argumente în linia de comandã 117Transmiterea argumentelor din linia de
comandã 118Apelarea unei metode 119Polimorfism 121
Semnãtura unei metode 122Întrebãri recapitulative 123
CAPITOLUL 7 Clase 125Definiþia unei clase 125Definirea unei metode membre 127
Specificatori de acces 127Declararea variabilelor de instanþã 129Constructorul clasei 130
Declararea unei instanþe a unei clase 131Accesul la membrii unei clase 132Supraîncãrcarea metodelor membre 133
Supraîncãrcarea constructorilor 134Cuvântul cheie this 135Colectarea gunoiului 136Metoda finalize() 137Clase interne 138Iniþializatori statici 139Pachete 140
Utilizarea unui pachet 141Variabila CLASSPATH 142Pachete ºi protejarea accesului 143
Întrebãri recapitulative 143
xiCUPRINS
CAPITOLUL 8 Moºtenirea 145Ce este moºtenirea? 145Când sã folosiþi moºtenirea 146În interiorul moºtenirii 147Accesul la membrii unei clase moºtenite 147Superclasa poate fi instanþiatã 148Moºtenirea unidirecþionalã 149Apelarea constructorilor 149Folosirea cuvântului cheie super 150Moºtenirea pe mai multe niveluri 152Suprascrierea metodelor membre folosind
moºtenirea 154Livrarea dinamicã a metodelor 156
Clase abstracte 158Cuvântul cheie final ºi moºtenirea 161Clasa Object ºi subclasele 162Întrebãri recapitulative 163
CAPITOLUL 9 Tratarea excepþiilor 165Ce este o excepþie? 166Proceduri de tratare a excepþiilor 166Tratarea de bazã a excepþiilor 167Blocuri catch multiple 168Blocul finally 169Lucrul cu excepþii neinterceptate 170Instrucþiuni try imbricate 171Lansarea unei excepþii 172
Metode care nu trateazã excepþiile 174Excepþii verificate ºi neverificate 175Crearea unei subclase de excepþii 176Întrebãri recapitulative 179
CAPITOLUL 10 Execuþia multifilarã (multithreading) 181Multitasking 181Suprasarcina 182Fire de execuþie 183Sincronizarea 184
xiiJava fãrã mistere
Clasa Thread ºi interfaþa Runnable 185Firul de execuþie principal 185Crearea unui fir de execuþie propriu 187Crearea unui fir de execuþie folosind cuvântul
cheie extends 189Folosirea firelor multiple de execuþie
într-un program 190Folosirea metodelor isAlive() ºi join() 192Stabilirea prioritãþilor pentru firele de execuþie 195Sincronizarea firelor de execuþie 197
Metode sincronizate 198Utilizarea instrucþiunilor sincronizate 201
Comunicarea între firele de execuþie 202Suspendarea ºi reluarea unui fir de execuþie 206Întrebãri recapitulative 208
CAPITOLUL 11 Fiºiere ºi fluxuri 209Fiºiere ºi sisteme de fiºiere 209Clasa File 210Afiºarea listei de fiºiere dintr-un director 213Fluxuri 214
Scrierea într-un fiºier 214Citirea dintr-un fiºier 216Adãugarea datelor într-un fiºier 217Citirea ºi scrierea unui obiect într-un fiºier 219
Întrebãri recapitulative 222
CAPITOLUL 12 Interfaþa graficã cu utilizatorul 223Ce este o interfaþã cu utilizatorul? 223Ce este o interfaþã graficã cu utilizatorul? 225O interfaþã graficã simplã 226Clasele swing 228
Containerul pentru conþinutul ferestrei 230Gestionarii de machete din Java 232Butoane de apãsare 236Etichete ºi casete de text 237Butoane radio ºi casete de validare 238
xiiiCUPRINS
Casete combinate 240Zone de text 242Panouri de derulare 243
Obþinerea datelor de la componentele GUI 245Citirea unui buton 247Citirea butoanelor radio ºi a casetelor de validare 249Citirea unei casete combinate 251Activarea ºi dezactivarea elementelor GUI 253
Întrebãri recapitulative 253
CAPITOLUL 13 JDBC ºi obiecte Java pentru date 255Elemente fundamentale despre baze de date 255Conceptul JDBC 256
Tipuri de drivere JDBC 257Pachete JDBC API 258
Procesul JDBC 258Încãrcarea driverului JDBC 258Conectarea la sistemul DBMS 259Crearea ºi executarea unei interogãri SQL 260Terminarea conexiunii cu sistemul DBMS 263
Interceptarea excepþiilor 264Evitarea depãºirii timpului de aºteptare 265
Mai multe despre obiectele Statement 265Obiectul Statement 266Obiectul PreparedStatement 268Obiectul CallableStatement 270
Obiectul ResultSet 272Citirea setului de rezultate 273Poziþionarea cursorului virtual 275Aducerea rândurilor din baza de date 278Seturi de rezultate actualizabile 280
Metadate 284Tipuri de date 285Excepþii 287Întrebãri recapitulative 287
xivJava fãrã mistere
CAPITOLUL 14 Miniaplicaþii Java 289Elemente fundamentale despre miniaplicaþiile Java 289Scrierea unei miniaplicaþii Java 291
Structura unei miniaplicaþii Java 291Apelarea unei miniaplicaþii Java 293Rularea unei miniaplicaþii Java 294Alte atribute 294
Adãugarea elementelor grafice în fereastraminiaplicaþiei 295
Transmiterea parametrilor 297Restricþii 298Folosirea casetelor de dialog într-o miniaplicaþie 299Fereastra de stare 301Întrebãri recapitulative 302
Examenul final 303
Rãspunsuri la întrebãrile recapitulative ºiexamenul final 309
Capitolul 1 309Capitolul 2 310Capitolul 3 311Capitolul 4 311Capitolul 5 312Capitolul 6 313Capitolul 7 313Capitolul 8 314Capitolul 9 315Capitolul 10 315Capitolul 11 316Capitolul 12 317Capitolul 13 317Capitolul 14 318Examenul final 319
Index 325
xv
INTRODUCERE
Aceastã carte este destinatã tuturor celor care vor sã înveþe elementele de bazã ale limbajuluiJava fãrã sã participe la un curs oficial. De asemenea, cartea poate fi folositã ca bibliografiesuplimentarã pentru un curs. Pentru obþinerea celor mai bune rezultate, ar trebui sã porniþide la începutul cãrþii ºi sã o parcurgeþi pânã la sfârºit.
Dacã sunteþi familiarizat cu elementele de bazã ale programãrii, sãriþi peste primelecapitole, dar nu ºi peste întrebãrile recapitulative de la sfârºitul capitolelor, pentru a fisigur cã sunteþi pregãtit sã faceþi primii paºi în Java.
Dacã rãspundeþi corect la 90% din rãspunsuri, sunteþi pregãtit pentru Java. Dacã aveþiîntre 75% ºi 89% rãspunsuri corecte, rãsfoiþi capitolele 1 ºi 2. Dacã aveþi mai puþin de75% rãspunsuri corecte, gãsiþi-vã un loc liniºtit ºi începeþi sã citiþi capitolul 1. Astfel, vãasiguraþi cã acumulaþi suficiente cunoºtinþe pentru a aborda restul capitolelor despre Java.
Pentru a învãþa Java, trebuie sã aveþi un anumit nivel de experienþã în utilizareacalculatorului. Dacã v-am spune altceva, am încerca sã vã pãcãlim. Dar nu vã lãsaþiintimidat. Nici una din cunoºtinþele necesare nu depãºesc aspecte elementare legate deutilizarea sistemului de operare ºi introducerea textului într-un editor.
Cartea include un set practic de întrebãri recapitulative la sfârºitul fiecãrui capitol.Aceste seturi conþin întrebãri asemãnãtoare celor pe care le-aþi putea întâlni într-un cursde Java. În timp ce rãspundeþi la întrebãri puteþi sã reveniþi asupra textului din capitolulrespectiv (ºi chiar ar trebui sã o faceþi). Când consideraþi cã sunteþi pregãtit, rezolvaþitestul, scrieþi rãspunsurile pe hârtie, apoi daþi unui prieten hârtia cu rãspunsurile. Rugaþi-lsã vã spunã punctajul, dar nu ºi întrebãrile la care aþi rãspuns greºit. Veþi gãsi rãspunsurilecorecte la sfârºitul cãrþii. Nu treceþi la urmãtorul capitolul decât dupã ce aþi obþinut unpunctaj satisfãcãtor la testul recapitulativ.
xviJava fãrã mistere
De asemenea, la sfârºitul cãrþii veþi gãsi un examen final. Întrebãrile cuprinse în acestasunt practice ºi sunt extrase din toate capitolele cãrþii. Încercaþi acest examen dupã ce aþiparcurs toate capitolele ºi aþi trecut de toate testele recapitulative. Un rezultat satisfãcãtorînseamnã cel puþin 75% din rãspunsuri corecte. Rugaþi un prieten sã vã spunã punctajul,fãrã sã vã indice întrebãrile la care aþi greºit.
Vã recomandãm sã vã rezervaþi în fiecare zi una sau douã ore pentru aceastã carte. Artrebui sã parcurgeþi astfel un capitol pe sãptãmânã. Abordaþi cartea într-un ritm constant.Lãsaþi-vã timp pentru asimilarea informaþiilor. Nu vã grãbiþi. Veþi termina cursul în câtevaluni, apoi puteþi folosi cartea ca material de referinþã.