Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Primele programe Java

java


 Primele programe Java 

  • Un program simplu 
  • Cum ajung de la sursa la executie 
  • Ce este Java API 
  • Alte informatii
  • Tema

Un program simplu



// fisier PrimulProgram.java

import java.io.*; 

public class PrimulProgram 

Programul prezentat nu face altceva decat sa afiseze o secventa de caractere pe ecran, dar poate servi la evidentierea unor elemente de baza care apar in orice program Java. 

In primul rand trebuie spus ca programele Java sunt constituite ca seturi de clase. In particular, programul prezentat mai sus este constituit dintr-o singura clasa. 

  • NU EXISTA ceea ce in limbajele procedurale (C, Pascal, Basic) numim date globale
  • De asemenea, NU EXISTA functii de sine statatoare: avem DOAR functii (metode) incluse in clase. 

Pentru descrierea unei clase se foloseste o constructie sintactica de forma: 

class nume_clasa

Aproape orice program, indiferent ca este scris intr-un limbaj procedural sau obiectual, are o radacina sau un punct de plecare. Astfel, in programele Pascal avem ceea ce se numeste program principal, iar in C avem functia main

In programele Java vom avea o clasa radacina care se caracterizeaza prin faptul ca include o functie al carei antet este

public static void main(String[ ] arg)

Elementele desemnate prin cuvintele public si static vor fi lamurite putin mai tarziu. Deocamdata le folosim asa cum le vedem. Numele clasei radacina este un identificator dat de programator. 

Parametrul functiei main este de tip tablou de elemente String (tablou de siruri de caractere). Prin intermediul acestui parametru putem referi si utiliza in program eventualele argumente specificate la lansarea in executie a programului. 
In ceea ce priveste clauza import plasata chiar la inceput, ea se refera la faptul ca programul utilizeaza operatii ale unor clase aflate in pachetul numit java.io. Despre pachete si importarea claselor vom discuta mai detaliat in paragraful dedicat documentatiei API. 

Actiunile executate de programul de mai sus presupun 2 operatii de afisare: print si println. Observam modul putin mai ciudat de apel al acestor operatii. Prefixul System.out care insoteste numele celor 2 operatii reprezinta numele unui obiect: este vorba despre un obiect predefinit care se utilizeaza atunci cand destinatia unei operatii de scriere este ecranul monitorului. 

Asa dupa cum vom vedea si in modulele urmatoare, deoarece metodele sunt incluse in obiecte, apelul presupune precizarea numelui obiectului "posesor". Exista si situatii in care apelul unei metode presupune precizarea numelui clasei in loc de numele unui obiect: este vorba despre metodele statice, despre care vom invata in saptamana urmatoare. Cu alte cuvinte, in Java, apelul unei operatii se realizeaza folosind una din notatiile: 

nume_obiect.nume_metoda(parametri_actuali)

sau

nume_clasa.nume_metoda(parametri_actuali)

Metodele print/println pot primi ca parametru un sir de caractere dat fie sub forma de constanta, asa ca in exemplul prezentat, fie sub forma de expresii al caror rezultat este de tip String
Metodele print/println mai pot primi ca parametru si valori ale tipurilor primitive sau obiecte, dar acestea sunt convertite tot la tipul String inainte de afisare.

Despre tipul String vom vorbi in detaliu putin mai tarziu. Deocamdata stim despre el ca modeleaza lucrul cu siruri de caractere. 
Diferenta dintre print si println este aceea ca println realizeaza, dupa afisarea textului dat ca parametru, un salt la linie noua. Se precizeaza ca println poate fi apelata si fara parametri, caz in care executa doar un salt la linie noua: 
System.out.println(

Cum ajung de la sursa la executie 

Pana acum am fost obisnuiti ca programele pe care le scriam sa parcurga pana la executie clasicul traseu: editare -> compilare -> linkeditare -> executie. Prin compilare se obtinea cod masina chiar pentru masina pe care se executa compilarea. 
In cazul programelor Java traseul amintit este in esenta acelasi, dar produsele obtinute sunt diferite, iar faza de linkeditare practic dispare din punct de vedere al utilizatorului. 

Vom descrie in continuare care sunt pasii pe care trebuie sa-i parcurgem pentru a ajunge sa executam un program scris in Java. Pentru aceasta ne vom referi la exemplul dat in paragraful anterior si consideram ca utilizam ca mediu de dezvoltare produsul SDK. 

  • Programul se EDITEAZA cu un editor de text ASCII simplu. Exemple de asemenea editoare sunt: 
    • pentru sistemul de operare Unix: emacs, pico, joe, editorul programului MidnightCommander; 
    • pentru Windows: Notepad, editorul programului NortonCommander sau chiar editoarele unor medii integrate de dezvoltare cum sunt cele din gama Borland; 

Atentie: editoarele de genul MSWord sau WordPad NU sunt editoare de text ASCII simplu, deci NU le vom folosi pentru editare de programe sursa !!!

Sursa se salveaza intr-un fisier care va avea OBLIGATORIU extensia .java. si numele clasei public. In exemplu: PrimulProgram.java
 

  • Dupa editare programul se COMPILEAZA cu comanda: 

javac nume_fisier_sursa.java

de exemplu: 

javac PrimulProgram.java

Atentie: prezenta extensiei .java in comanda de compilare este OBLIGATORIE.

In urma compilarii vor rezulta un numar de fisiere egal cu numarul claselor continute de sursa. Fiecare dintre fisierele rezultate are extensia .class si numele identic cu numele clasei careia ii corespunde. 
Prin urmare, pentru exemplul nostru va rezulta un fisier cu numele PrimulProgram.class
Un fisier .class contine cod masina virtual numit si Java Byte Code
 

Codul virtual este codul masina al unui calculator imaginar.


 Pentru a putea fi executat pe o masina reala, este necesar un interpreter (sau executiv) care sa execute fiecare instructiune a codului virtual in termenii operatiilor masina ai calculatorului real. 

Avantajul utilizarii codului virtual este urmatorul: dupa compilare, programul in cod virtual obtinut poate fi transportat pe orice masina pentru care exista interpreterul corespunzator, iar scrierea unui interpreter este mult mai usoara decat a unui compilator intreg. 
In concluzie, dupa compilare, urmatorul pas in prelucrarea unui program Java este executia prin intermediul interpreterului. 
 

  • LANSAREA IN EXECUTIE a interpreterului se face cu comanda: 

java nume_clasa_radacina

Argumentul dat interpreterului Java la lansarea in executie este de fapt numele unui fisier .class, si anume acela corespunzator clasei radacina (adica cea care contine metoda main). 

Pentru exemplul nostru comanda de executie va fi deci: 

java PrimulProgram

Recomandare: pentru a putea lucra mai comod la dezvoltarea unui program Java, se recomanda deschiderea pe ecran a 2 ferestre de lucru: una pentru editarea sursei si celalta pentru compilarea si executia programului. 

Am afirmat in paragraful anterior ca parametrul metodei main din clasa radacina serveste la accesarea eventualelor argumente date in linia de comanda la lansarea in executie a programului. Pentru a ilustra acest aspect, vom considera un program care afiseaza o formula de salut, urmata de numele si prenumele utilizatorului, date ca argumente: 
 

// fisier Salutare.java

import java.io.*; 

public class Salutare 

Dupa ce compilam acest program, il putem lansa in executie de exemplu cu comanda: 

java Salutare mai Popescule

Observatii:

  • Programului i se dau 2 argumente (mai si Popescule). Acestea sunt interpretate ca primele 2 elemente ale tabloului arg ce figureaza ca parametru formal al metodei main (se poate spune ca arg este un omolog al lui _argv din programele C). In Java elementele unui tablou se indexeaza incepand cu 0. 
  • Daca programului nu i se furnizeaza cele 2 argumente, rezultatul este oprirea executiei cu un mesaj prin care se reclama depasirea indicelui de tablou (IndexOutOfBoundsException). Este vorba de tabloul arg care are dimensiunea 0 in cazul lipsei argumentelor. 


De aceea, daca dorim sa fim mai rigurosi, e bine sa prevedem secvente de verificare in program, prin care sa testam daca utilizatorul a furnizat numarul necesar de parametri: 

// fisier Salutare1.java

import java.io.*; 

class Salutare1 

Expresia arg.length utilizata in secventa de mai sus ne da numarul de elemente ale tabloului arg. Posibilitatea de a folosi aceasta expresie (despre care vom afla mai multe in capitolul despre tablouri) explica de ce metoda main nu are nevoie de un al 2-lea parametru, omolog al lui _argc din programele C. 
 

  • O alta observatie care trebuie facuta in contextul acestui exemplu priveste parametrul functiei println. De data acesta am folosit o expresie construita prin aplicarea operatorului + asupra unor operanzi de tip String, al carei rezultat este un sir de caractere obtinut prin concatenarea operanzilor. 


Ceea ce trebuie sa retinem de aici este faptul ca, spre deosebire de functiile printf din C, care acceptau un numar variabil de parametri, functiile print/println din Java accepta UN SINGUR parametru. Ca urmare, atunci cand dorim sa scriem printr-o singura instructiune mai multe valori trebuie sa le concatenam, spre a forma un singur sir. 

In scrierea programelor Java se tine seama de recomandarile de la Code Conventions for the JavaTM Programming Language https://java.sun.com/docs/codeconv/index.html, cele mai importante fiind urmatoarele:

  • numele de clase incep cu majuscule - OClasa, ale variabilelor si metodelor cu litere mici - oVariabila, oMetoda, constantele se scriu cu majuscule - static final int MIN = 4;
  • majuscula este prima litera a tuturor cuvintelor ce formeaza un identificator
  • numele fisierului .java este cel al clasei publice pe care o contine - doar o singura clasa poate fi publica intr-un fisier sursa.

Ce este Java API

Intr-un program Java vom lucra in principiu cu 2 tipuri de clase: 

  • clase definite de programator (adica de noi) si 
  • clase predefinite, furnizate impreuna cu mediul de dezvoltare Java. Un exemplu de asemenea clasa este String. Clasele predefinite formeaza o biblioteca numita API (Application Programming Interface) - adica interfata pentru programarea aplicatiilor. 


Pentru a putea scrie un program Java este foarte important sa avem acces la o documentatie a API, ca sa stim la ce si cum sa folosim clasele respective. In mod normal, mediul de dezvoltare trebuie sa includa documentatia API. De obicei ea apare sub forma de colectie de pagini web. 

Documentatii API se gasesc in numar mare si pe Internet. Pe situl Sun: API Documentation.

Clasele predefinite sunt grupate in asa-numite pachete. Un pachet contine clasele care rezolva o anumita problema. De exemplu, pachetul java.io contine clase care se ocupa de operatiile de intrare/iesire. 
Numele pachetelor sunt formate din 2 sau mai multe cuvinte separate intre ele prin caracterul "." (punct). Pentru a putea folosi o clasa predefinita ar trebui sa-i specificam numele complet, adica: 

nume_pachet.nume_clasa

Intrucat acest lucru ar fi incomod, avem la dispozitie clauza import prin care putem specifica faptul ca dorim sa utilizam clase dintr-un anumit pachet. Clauza import poate avea una din urmatoarele forme: 

import nume_pachet.nume_clasa;

daca dorim sa utilizam doar o anumita clasa din pachet, sau: 

import nume_pachet.*;

daca dorim sa utilizam toate clasele din pachetul respectiv. Aceasta din urma forma este cel mai des utilizata, fiind mai comoda (daca am utiliza prima forma, pentru fiecare clasa predefinita necesara in program ar trebui sa avem cate o clauza import separata). 

In biblioteca Java exista un pachet special, numit java.lang care grupeaza clase fundamentale, fara de care practic nu am putea scrie vreo aplicatie. Pentru a folosi clasele din acest pachet NU avem nevoie de clauza import, ea fiind subinteleasa implicit. Clasa String este un exemplu de clasa aflata in pachetul java.lang

Trebuie sa spunem ca o documentatie API ne da informatii despre: pachetele din biblioteca, clasele din fiecare pachet si componenta fiecarei clase. 

Alte informatii

  • The Java(tm) Language: An Overview
  • James Gosling, Henry McGilton: The Java Language Environment - A White Paper - vezi 8.2.The Java Language Compared
  • Tutorial Java Sun
  • Code Conventions for the JavaTM Programming Language
  • API Documentation.

Tema

1. Rulati exemplele din modul. Vizitati resursele propuse la Alte informatii. 

Pentru neclaritati si comentarii sau probleme in "punerea in functiune" a mediului Java, intrati in conferinta Software Consulting.

2. Folosind exemplele din acest material, incercati sa scrieti programe Java care sa realizeze: afisarea numelui vostru, a varstei si a adresei. O prima varianta de program va presupune ca aceste informatii sa fie date direct in instructiunea de afisare, apoi incercati sa scrieti variante in care informatiile se dau ca argumente in linia de comanda, la lansarea in executie. 

Observatie: daca un argument din linia de comanda trebuie sa contina si spatii (de exemplu in cazul adresei), argumentul respectiv se va incadra intre ghilimele ("). In caz contrar, el va fi interpretat ca fiind mai multe argumente. 

Programele din acest material, impreuna cu cele scrise de voi se vor compila si executa folosind mediul de dezvoltare SDK. In pagina Desfasurare vi se indica legaturi spre site-urile de unde se poate descarca acest mediu. 


Document Info


Accesari: 3312
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )