L|mba[u| IAVA s| concepte|e programar|| pe ob|ecte
rogramarea orlenLaLa pe oblecLe prlnclpala lnovaLle adusa de C++ esLe concepLul de clasa Clasa esLe un nou Llp de daLe care exLlnde Llpul sLrucLurll dln C sl care permlLe gruparea dupa anumlLe crlLerll a unul numar de varlablle sl de funcLll LsLe creaL asLfe un sablon de daLe care poaLe fl mulLlpllcaL lnLrun program ln orlcaLe exemplare ln funcLle de resursele dlsponlblle llecare cople a clasel se numesLe ob|ect de t|pu| c|ase| respect|ve sau |nstanta c|ase| Var|ba|||e|e declaraLe lnLro clasa se numesc varlablle membru sau aLrlbuLe Iunct|||e declaraLe lnLro clasa se numesc funLll membru sau meLode rocesul de grupare al aLrlbuLelor sl meLodelor lnLro clasa se numesLe lncapsulare SemnlflcaLla aLrlbuLelor clasel sl acLlunlle execuLaLe prln meLodele clasel esLe ceea ce Lrebule sa sLlm SLllnd acesLe lucrurl o clasa poaLe fl uLlllzaLa ln orlce program asLfel reallzanduse refoloslrea codurllor enLru a apela un aLrlbuL sau o meLoda dlnLrun oblecL Lrebule sa LrlmlLem un mesa[ oblecL Mesa[ul Lrebule sa conLlna numele oblecLulul sl numele aLrlbuLulul sau a meLodel separaLe prln " ln cazul meLodel mesa[ul va conLlne sl o llsLa de parameLrl oblecLaLrlbuL oblecLmeLode (parameLrl) LlemenLul de baza al llmba[ulul !AvA esLe clasa Clasele poL fl grupaLe la randul lor dupa anumlLe crlLerll ln blblloLecl de clase ln llmba[ul !AvA blblloLeclle se numesc pacheLe C clasa poaLe fl comparaLa cu un program scrls ln C varlabllele programulul sunL aLrlbuLe funcLllle sunL meLode lar funcLla maln de la lansarea ln execuLle a programulul esLe lnloculLa cu o meLoda speclala numlLa consLrucLor ConsLrucLorll nu au Llp reLurnaL declaraL expllclL lar numele lor Lrebule sa colnclda cu cel al clasel prln urmare un consLrucLor lnlLlallzeaza oblecLul clasel enLru a folosl un oblecL dlnLro clasa lnLrun program acesLa Lrebule declaraL sl lnlLlallzaL prlnLrun consLrucLor C clasa poaLe conLlne mal mulLl consLrucLorl cu condlLla ca acesLla sa alba llsLe dlferlLe de parameLrl AcesL lucru se numesLe supralncarcarea consLrucLorllor llecare consLrucLor va da un alL Llp de lnlLlallzare penLru oblecLele clasel un program !AvA poaLe fl comparaL cu un slsLem formaL dln mal mulLe programe care ruleaza slmulLan oblecLele foloslLe ln program sl care comunlca lnLre ele La fel ca sl consLrucLorll meLodele unel clase poaLe fl supralncarcaLe C clasa poaLe conLlne mal mulLe meLode cu acelasl nume cu condlLla sa alba llsLe dlferlLe de parameLrl rogramarea orlenLaLa pe oblecLe permlLe exLlnderea funcLlonallLaLll unel clase daLe prln creearea de nol clase care sa mosLeneasca LoaLe caracLerlsLlclle clasel lnlLlale Clasa lnlLlala se numesLe superclasa dlrecLa sau clasa parlnLe penLru noua clasa Clasa nou creaLa se numesLe subclasa dlrecLa sau clasa derlvaLa sau clasa copll a clasel parlnLe Clasa nou creaLa va mosLenl LoaLe aLrlbuLele sl meLodele dln clasa parlnLe ln sensul ca acesLea poL fl lnvocaLe fara nlclo resLrlcLle ln plus clasa nou creaLa poaLe avea aLrlbuLe sl meLode nol ue asemenea aLrlbuLele sl meLodele mosLenlLe poL fl suprascrlse (redlflnLe) ln noua clasa Llmba[ul C++ folosesLe mosLenlrea mulLlpla AceasLa lnseamna ca o clasa poaLe avea mal mulLe superclase dlrecLe acesLea poL avea la randul lor superclase dlrecLe 1oaLe acesLe clase se numesc superclase penLru clasa nou creaLa Clasa nou creaLa va mosLenl LoaLe superclasele el MosLenlrea mulLlpla consLlLule o alLa problema a llmba[ulul C++ lnLrucaL aceasLa poaLe creea confuzle sl poaLe duce la erorl de compllare ue exemplu Sa presupunem ca avem o clasa A are are doua subclase dlrecLe 8 sl C AcesLea sunL la randul lor superclase dlrecLe penLru clasa u Crearea unul oblecL de Llpul d va duce lmpllclL la creearea oblecLelor de Llpul b aparLlne lul 8 sl c aparLlne lul C
d oblecL de Llpul clasel u de unde rezulLa ca b aparLlne lul 8 sl c aparLlne lul C rezulLa ca a1 aparLlne lul A sl a2 aparLlne lul A Sa presupunem ca ln d esLe apelaLa o meLoda mosLenlLa dln clasa A Medlul de execuLle o va cauLa mal lnLal ln clasa u apol ln clasa 8 sl clasa C sl lar nu o gasesLe sl gasesLe medoLa ln a1 sl a2 de unde rezulLa eroare (nu sLle pe care sa o execuLe) Llmba[ul !AvA folosesLe mosLenlrea slmpla flecare clasa !AvA are o slngura superclasa dlrecLa Slngura excepLle o face c|asa [ava|ongCb[ect care nu are superclasa dlrecLa Clasa [avalongCb[ecL esLe varful lerarhlel de clasa ln llmba[ul !ava sl esLe superclasa penLru orlce clasa !AvA uaca o clasa nu are declaraLa ln mod expllclL superclasa dlecLa superclasa dlrecLa vl fl clasa Cb[ecL ln programarea orlenLaLa pe oblecLe accesul la aLrlbuLe sl meLode esLe conLrolaL prln modlflcaLorll de acces ln !AvA avem Lrel Llpurl de aces prlvaL poslbll numal ln clasa respecLlva proLe[aL ln clasa respecLlva sl subclasele el publlc ln orlce clasa S1LvL !C8S ,ed|u| de programare IAVA Medlul de programare !AvA se numesLe !uk adlca !AvA developmenL klL Se gasesLe compllaLorul penLru ma[orlLaLea plaLformelor sl poaLe fl descarcaL graLulL de pe slLeul www[avasuncom/verslunea 16 Llmba[ul !AvA a fosL lansaL oflclal ln mal 1993 sub denumlrea de !AvA Alfa lar pana la sfarslLul lul 1993 au mal fosL lansaLe 2 verslunl !ava 8eLa sl !uk 10 ue aLuncl llmba[ul sa dezvolLaL conLlnuu a[ungand la verslunea 16 AceasLa dezvolaLere sa manlfesLaL mal ales prln dezvolLarea lnLerfeLel !AvA Al (ALlCA1lCn 8CC8AMlnC ln1L8lACL) cu pasLrarea compaLlblllLaLll programelor de[a scrlse ln !AvA sl care rulau pe alLe verslunl ale lnLerfeLelor asLfel lnLerfaLa Al sa dezvolLaL prln adaugarea de nol clase sl pacheLe sau prln modlflcarea claselor exlsLenLe resupunand ca o anumlLa meLoda dlnLro clasa a suferlLL lmbunaLaLlrl sa deflnlL o alLa meLoda cu acelasl nume sau alL nume penLru noa varlnaLa a meLodel vechea varlablla a fosL sl ea pasLraLa C modlflcare semnlflcaLlva a aduso verslunea !AvA 8L1A prln poslblllLaLea lncarcarll claselor dln arhlve zlp ulLerlor arhlvele foloslLe sunL !A8 (!AvA A8CPlvL) AlgorlLmul de compresle penLru o arhlva !A8 esLe LoL Zl dlfera doar exLensla oL fl foloslLe ambele exLensll lncepand cu verslunea !AvA 8eLa lnLreaga lnLerfaLa Al a fosL comprlmaLa lnLrun flsler CLASSLSZl llslerul CLASSLSZl avea la !uk 10 dlmenslunea de 1 M8 la verslunea 13 lnLerfaLa Al e conLlnuLa ln flslerul 81!A8 sl are aproxlmaLlv 14 M8 (conLlne aproxlmaLlv 3000 de clase sl lnLerfeLe) lar !uk 13 are 24 M8 ln urma lnsLalarll !uk se obLlne urmaLoarea sLrucLura !uk/ 8ln uLMC lnCLuuL lnCLuuL_CLu !8L /8ln /Ll8 Ll8 S8C!A8 !uk/8ln conLlne programe execuLablle dezansamblor depanaLor generaLor de documenLe compllaoLrul lnLerpereLorul program de vlzuallzare a appleLurllor uLMC esLe opLlonal sl conLlne o serle de exemple apllcaLll sl mlnlapllcaLll !AvA lnCLuuL sl lnCLuuL_CLu conLln o serle de flslere anLeL penLru lnLeracLlunea dlnLre !AvA sl C++ !8L!AvA 8un1lML Lnvl8CnMLn1 !8L/8ln sl /Ll8 conLln suporLul penLru medlul de execuLle !AvA ulrecLorul 8ln conLlne lnLerpreLorul !AvA ln 2 varlanLe [avaexe cu consola sl [avaexe fara consola Mal conLlne o serle de blblloLecl cu legaLura dldacLlca necesara lnLeracLlunll dlnLre maslna vlrLuala !AvA sl maslna reala uLMC esLe opLlonal sl conLlne o serle de exemple de apllcaLll sl mlnlapllcaLll !AvA ue exemplu awLdll ofera suporLul penLru elemenLele graflce de lnLerfaLa 8lblloLeca neLdll furnlzeaza suporLul penLru operarea ln reLea !pegdll eLc ulrecLorul Ll8 conLlne flslere rL[ar ce sLocheaza lnLerfaLa !AvA Al ulreLorul lonLs conLlne fondurl foloslLe de maslna vlrLuala ulrecLorul Audlo conLlne o serle de fondurl muzlcale uLlllzaLe ln !AvA Arhlva src[ar conLlne flslerul sursa ale claselor dln lnLerfaLa !AvA Al LsLe opLlonala AcesL flsler esLe uLlllzaL ln procesul de depanare a programelor !AvA de oblcel dar sl ca documenLaLle 1oaLe meLodele dln acesLe surse sunL comenLaLe sl sunL ln formaL P1ML 9rograme|e executab||e a|e med|u|u| de programare IAVA Comp||atoru| Codul sursa al unul program !AvA esLe conLlnuL ln flslerul sursa AcesLea sunL flslere de Llp LexL care au exLensla [ava un flsler sursa poaLe conLlne o slngura declaraLle de clasa sau mal mulLe declaraLll de clasa cu blocurl de cod dlferlLe ln prlmul caz flslerul sursa va avea numele ldenLlc cu cel al clasel declaraLe Llmba[ul !AvA face dlsLlncLle lnLre llLerele mlcl sl cele marl uaca un flsler sursa conLlne mal mulLe declaraLll de clasa obllgaLorlu doar una slngura Lrebule sa fle publlca aLuncl flslerul sursa va avea numele ldenLlc cu cel al clasel publlce ln !AvA poL fl scrlse 2 Llpurl de programe apllcaLllle sl mlnlapllcaLllle !AvA (sau appleLurlle) ApllcaLllle !AvA sunL lansaLe ln execuLle prln lnLemedlul lnLerpreLorulul furnlzaL de pacheLul !uk lar appleLurlle sunL sunL execuLaLe prln lnLermedlul unel maslnl vlrLuale daLa de un browser(AppleLurl programe !AvA ce ruleaza pe paglnlle WL8) un program !AvA esLe lansaL ln execuLle prln lnLermedlul unel clase speclale numlLa clasa prlmara La apllcaLll clasa prlmara esLe clasa ce conLlnme meLoda publlc sLaLlc vold maln(SLrlngargs)" lar clasa prlmara la appleLurl esLe clasa ce exLlnde clasa [avaappleLAppleL Compllarea unul program !AvA se lanseaza de oblcel lncepand cu clasa prlmara AcesL lucru va deLermlna compllarea LuLuror claselor dln program 1oLusl poL fl compllaLe sl clasele lndlvlduale CompllaLorul !AvA se numesLe [avacexe Se lanseaza dln llnla de comanda prlmlnd ca parameLrl numele clasel prlmare cu LoL cu exLensla !AvA SlnLaxa llnlel de comanda esLe !AvACopLlunlnumeClasarlmara!AvAparameLrl ln urma execuLlel acesLel comenzl compllaLorul parcurge codul sursa al flecarel clase lnLerpreLeaza lnsLrucLlunlle sl le Lransforma ln cod de oLeLl Se obLlne caLe un flsler compllaL penLru flecare clasa declaraLa ln codul sursa AcesL flsler se numesLe flsler class un flsler class are numele ldenLlc cu nemele clasel sl exLensla class ln mod presLablllL flslerele class vor fl scrlse alaLurl de flslerele sursa enLru a schlmba acesL lucru foloslm opLlunea u" Lxemplu [avac u_CCLASL_numeClasarlmara[ava va scrle un flsler class ln dlrecLorul respecLlv uaca programaLorul folosesLe alLe clase sl pacheLe decaL cele dln lnLerfaLa !AvA Al acesL lucru Lrebule speclflcaL compllaLorul penLru ca acesLa sa le poaLa gasl se face foloslnd comanda classpaLh" Lxemplu [avac classpaLhCClaseCalLeclasezlpualLeclase[ar numeleClasel[ava Spune compllaLorulul ca ln program poL fl foloslLe clase dlrecLorulul resplecLlv CpLlunea C" produce o opLlmlzare a codull de ocLeLl obLlnuL AceasLa opLlune esLe penLru clasele marl sl foarLe marl CpLlmlzarea consLa lnLro rearan[are a lnLrarllor dln Labela consLanLelor clasel respecLlve de unde rezulLa o lncarcare raplda a claselor ln memorle CpLlunea vL88CSL" deLermlna compllaLorul sa furnlzeze lnformaLll despre acLlvlLaLea sa AcesLe lnformaLll conLln cand sl de unde esLe lncarcaLa o clasa anume caL a duraL compllarea el sl a lnLregulul program lnformaLllle sunL aflsaLe ln consola compllaLorull lar daca vrem sa le pasLram lnLrun flsler puLem sa le redlrecLlonam asLfel !avacverbosenumeClasa[avalnfoLxL CpLlunea nCWA8n" deLermlna compllaLorul sa nu mal aflseze mesa[e de averLlsemnL Mesa[ele nu reprezlnLa erorl de compllare un mesa[ foarLe frecvenL esLe cel de depreclere al meLodelor (nu e eroare) CompllaLorul ne spune ca am foloslL meLode depreclaLe care au varlanLe mal nol ln mod presLablllL ln urma compllarll compllaLorul lnclude ln codul de ocLeLl al meLodelor aLrlbuLul LlnLnuM8L81A8LL" AcesLa reallzeaza o corespondenLa bl[ecLlva lnLre lnsLrucLlunea codulul de ocLeLl al meLodelor sl lnsLrucLlune codulul sursa al meLodelor AcesL aLrlbuL nu are nlcl un rol ln Llmpul execuLlel cl folosesLe doar penLru depanarea clasel sl aLaL loloslnd opLlunea g" compllaLorul mal lnsereaza sl aLrlbuLul Localvarlable1able" Ll furnlzeaza lnformaLll despre flecare varlablla locala a meLodelor ln parLe (cum ar fl locul de declalare denumlre semnaLura sl domenlul de vlzlblllLaLe) AcesLe lnformaLll nu au rol ln Llmpul execuLleLl ln plus cele 2 aLrlbuLe furnlzeaza lnformaLll decompllaLoarelor !AvA care poL obLlne cu a[uLorul lor un cod sursa caL mal aproplaL de cel orlglnal uln acesL moLlv esLe lndlcaL sa ellmln cele 2 aLrlbuLe la compllare Se face cu gnone Se obLln clase de dlmenslunl mal mlcl