Administratie | Alimentatie | Arta cultura | Asistenta sociala | Astronomie |
Biologie | Chimie | Comunicare | Constructii | Cosmetica |
Desen | Diverse | Drept | Economie | Engleza |
Filozofie | Fizica | Franceza | Geografie | Germana |
Informatica | Istorie | Latina | Management | Marketing |
Matematica | Mecanica | Medicina | Pedagogie | Psihologie |
Romana | Stiinte politice | Transporturi | Turism |
Tehnici de Programare
Ce este Java?
Java este un limbaj de programare orientat-obiect dezvoltat de JavaSoft, o companie din cadrul concernului Sun Microsistems. Proiectul inceput sub numele de "Green" in primavara anului 1991 avind ca scop dezvoltarea unui suport pentru comertul electronic avea sa duca la aparitia Java, care promite se fie cel mai robust, usor de utilizat si versatil limbaj de programare disponibil astazi. Aparut ca versiune Alpha in 1995, Java include cele mai importante caracteristici ale limbajelor de programare anterioare, cum ar fi C si C++, permitind creearea de aplicatii puternice, precum si particularitati cum ar fi suportul multimedia inclus, lasind totusi deoparte caracteristicile suparatoare din C/C++ cum ar fi mostenirea multipla, supraincarcarea operatorilor si pointerii.
Probabil cel mai important beneficiu adus de Java este totusi portabilitatea. Nu mai este necesara dezvoltarea de aplicatii separate pentru platforme diferite, o aplicatie creeata fiind folosibila pentru platforme multiple, cum ar fi Windows, Unix si Machintosh, prin intermediul conceptului de "masina virtuala".
2. Tranzitia de la C/C++ la Java
Desi Java este modelat dupa C/C++, exista totusi citeva diferente majore fata de acesta:
Cind sursele C/C++ sint compilate se obtine cod obiect, adica un format obiect specific platformei pentru care au fost compilate. Pe de alta parte, sursele Java, prin compilare, duc la un format numit bytecode care nu este nici cod obiect si nici sursa. Un beneficiu al acestui format este acela ca nu este dependent de nici o platforma, ceea ce duce la portabilitatea sa. El este executat prin intermediul uni interpretor care transleaza bytecode-ul in cod masina. Un alt beneficiu este acela ca este eliminat pasul de link-editare. Interpretorul este cel care apeleaza bibliotecile la cerere.
In C++ se pot folosi proceduri si apeluri ale functiilor de sistem prin intermediul apelurilor externe in sintaxa C, declarind o functie C in afara spatiului de nume C++. In Java nu exista o astfel de sintaxa, ca rezultat imediat fiind faptul ca nu este posibila folosirea directa a codului-sursa C/C++.
Totusi, Java incorporeaza o gama larga de functionalitati in interfata Java API, pentru grafica, multimedia, lucru in retea, interogarea sistemului, I/O cu fisiere, si multe altele.
Este de asemenea posibila folosirea surselor din C/C++, insa intr-o maniera complicata, si nu face obiectul laboratorul de fata. Totusi ar trebui reamintit ca aceasta folosire duca la limitarea drastica a portabilitatii.
Deseori in programarea orientata-obiect de nivel avansat este necesara creearii unui obiect care sa mosteneasca caracteristicile a mai mult de un alt obiect, caz in care apare mostenirea multipla. Cu cit aplicatia este mai complexa, cu atit creste necesitatea folosirii acestui tip de mostenire.
Java inlocuieste mostenirea multipla cu un nou concept, numit interfata despre care se va vorbi mai pe larg in laboratoarele urmatoare.
In C++ clasele, chiar daca fac parte din module separate ale proiectului, trebuie totusi sa respecte principiul unicitatii numelor. Asta inseamna ca nici o clasa din cadrul unui proiect nu trebuie sa aiba un nume care coincide cu o alta din cadrul acelui proiect. Java evita acest lucru prin creearea unui spatii de nume ierarhizat pe mai multe nivele de precedenta, incepind cu nivelul cel mai inalt corespunzator spatiului de nume al pachetului si terminind cu cel mai scazut, adica cel al spatiului de nume al blocului local. Astfel, fiecare nivel in spatiile de nume este folosit pentru a construi un nume identic pentru fiecare obiect, permitind ca doua clase cu acelasi nume sa existe in pachete diferite.
Sint probabil cunoscute deja problemele puse de manipularea memoriei prin intermediul pointerilor. In Java exista totusi pointeri, insa nu in sensul cunoscut pina acum. Fiecare instanta a unui obiect este referit prin intermediul unui pointer, insa la atit se reduce functionalitatea lor.
Fisierele header sint o parte importanta a programarii C++. O mare majoritate din programatori folosesc fisierele header ca fiind documentatie (chiar daca impropie) deoarece fisierele header pot specifica, dintr-o privire, ce face si cum trebuie folosita o anume clasa.
In java nu exista delimitarea intre declarare si definire, corpul functiiei fiind corp component al "declaratiei" clasei, nemaifiind o zona a sursei care sa asigure o "documentare implicita". Pentru a compensa aceasta deficienta, Java Developer's Kit contine doua instrumente pentru a usura munca: javap si javadoc.
Desasamblorul javap poate fi folosit pentru tiparirea semnaturilor claselor, in timp ce javadoc este un generator de documentatie in format .html, generata din comentariile continute in cadrul codului-sursa.
Java este in primul rind un limbaj de programare orientat pe obiecte, si de aceea s-a considerat necesar sa se renunte la functiile "stand-alone". Astfel, toate aplicatiile sunt obiecte si toate clasele Java sunt derivate dintr-un clasa primara, numita Object.
Unele programe Java, numite applet-uri nu au nevoie de o functie main (probabil v-ati intilnit deja cu aceasta notiune legata de World-Wide-Web). Totusi, fiecare clasa Java poate avea o metoda main() si toate aplicatiile Java au un echivalent al functiei main(), prin intermediul careia parametrii se transmit aplicatiei.
In C++ exista posibilitatea scrierii unor metode generice numite sabloane (templates), care permit scrierea unui bloc de cod pentru implementarea mai multor tipuri asemanatoare de argumente. De asemenea, acestea mai pot fi folosite si pentru generarea automata a claselor, ceea ce este un alt avantaj important.
Conditiile de eroare a caror aparitie este improbabila in conditii de utilizare normala, se numesc exceptii. De exemplu, o functie care calculeaza radacina patrata a unui numar ar trebui sa primeasca ca argumente doar numere pozitive, totusi este posibila transmiterea si a unui numar negativ. Acest gen de erori pot duce de la o functionare deficitara, pina la blocarea programului sau chiar la accesul in zone de memorii protejate ale sistemului, ceea ce duce fie la blocarea sa, fie la creearea unor brese de securitate.
Desi majoritatea versiunilor de C++ actuale include un mecanism de tratare a axceptiilor, acestea nu au reusit sa se impuna in masura suficient de mare. Pe de alta parte, Java obliga folosirea mecanismelor de tratare a eceptiilor atunci cind se incearca apelarea unei metode ce este o generatoare virtuala de exceptii.
Desi destructorii ofera o posibilitate buna de management a memoriei, acest mecanism nu este lipsit de posibilitatea aparitiei erorilor. Stergerea unei zone de memorie care se doreste inca a se folosi duce la blocarea programului. De asemenea, lasarea zonelor de memorie nefolosite inca active, duce la epuizarea spatiului de memorie disponibil.
Java are un mecanism propriu de recuperare a zonelor de memorie ce nu mai sint folosite (garbage). Cu ajutorul acestui mecanism se pastreaza evidenta zonelor de memorie care sint folosite si a celor care nu mai sint folosite, realizindu-se alocarea/dealocarea memoriei in mod automat.
3. Prezentarea mediului integrat (IDE) folosit in cadrul laboratorului
In cadrul laboratorului se va folosi mediul de dezlovtare J Builder 2.0 al firmei Borland.
Ca de obicei, prima aplicatie va fi una care va afisa mesajul "Hello, world". Pentru aceasta, vom crea un nou fisier, numit MyApp.java.
Programul va fi:
public class MyApp
}
Atentie! In Java este obligatoriu ca numele clasei sa coincida cu cel al fisierului si extensia trebuie sa fie .java !!!
Functia main() este, la fel ca in C++ punctul de intrare in program. Numai ca aici, functia main() trebuie sa fie membrul clasei care are acelasi nume ca al fisierului, in caz contrar ea nu va fi executata.
Obiectul System refera sistemul in care este executat programul, .out este iesirea standard, iar printnl afiseaza sirul dat ca parametru. In C, echivalentul acestui apel este printf, iar in C++ apelul cout <<.
Probabil ati observat ca mediul de dezvoltare inchide fereastra imadiat dupa executie. Sa incercam sa introducem o functie care sa astepte un caracter. Acesta este urmatorul:
System.in.read( care returneaza un int (de fapt urmatorul byte din stream).
Aceasta metoda insa poate genera execeptii, si ele trebuiesc preluate. O exceptie este un obiect (o clasa) in care sint stocate informatii cu privire la ceea ce a generat acea exceptie. Mecanismul este format din doua parti, una care "arunca" exceptia ( throw ) si una care o "prinde" ( catch ).
metoda
try
catch (ExceptionType1 e)
catch (ExceptionType2 e)
finally
In blocul try se apeleaza metoda respective, si se initializeaza mecanismul de prindere a exceptiei. Daca in metoda() apare o eroare, se "arunca" exceptia, urmind ca aceasta sa fie "prinsa" de catch-urile de la sfirsitul blocului try. ExceptionType1 si ExceptionType2 sunt clase derivate din Exception, restringind tipul de exceptie aparuta, si in consecinta, tratarea ei.
In concluzie, noul program va arata astfel:
public class MyApp
catch( Exception e)
}
}
Tema:
Acest document nu se poate descarca
E posibil sa te intereseze alte documente despre: |
Copyright © 2024 - Toate drepturile rezervate QReferat.com | Folositi documentele afisate ca sursa de inspiratie. Va recomandam sa nu copiati textul, ci sa compuneti propriul document pe baza informatiilor de pe site. { Home } { Contact } { Termeni si conditii } |
Documente similare:
|
ComentariiCaracterizari
|
Cauta document |