Sunteți pe pagina 1din 33

Curs 1 POO

Introducere in limbajul java

Limbajul de programare Java


Mediul de dezvoltare Netbeans
Parametrul metodei main: String[] args
Conversia de la tipul String la tipul numeric
Rezolvarea temelor din laboratorul 1

2019
Limbajul de programare Java

 Limbajul Java a fost dezvoltat de firma Sun Microsystems din USA, dupa un
proiect inceput in anul 1991, condus de James Gosling. Proiectul s-a finalizat
intr-un limbaj orientat-obiect, de tip C++, pe care compania Sun l-a numit Java.

 Un prim scop al lui Java este de a scrie programe ce pot fi executate pe o mare
varietate de calculatoare si echipamente ce contin calculatoare. Aceasta calitate
este denumita portabilitatea software-ului. Scrii programul odata si il poti
executa oriunde ("write once, run anywhere"). Totusi diferentele intre
compilatoare, masini virtuale Java si calculatoare, fac portabilitatea greu de
obtinut. Simpla utilizare a lui Java nu garanteaza portabilitatea.

 Sun Microsystems a fost cumparat de Oracle in 2009.

 Putem crea in programele noastre fiecare clasa de care avem nevoie. Totusi,
majoritatea dezvoltatorilor folosesc colectii de clase Javain asa numitele biblioteci
de clase Java, cunoscute ca API-uri Java (Application Programming Interfaces).

 
Limbajul de programare Java
(continuare)

 Procesul pentru dezvoltarea si executia unui program Java este:

 Pas 1. Crearea programului. Acest pas consta in editarea unui fisier cu un


editor de text. Fisierul este stocat pe un dispozitiv de stocare (hard disk), cu
extensia .java.

 Pas 2. Programul Java este compilat in bytecode. Compilatorul produce


fisiere cu extensia .class .
Limbajul de programare Java
(continuare)

Pas 3. Incarcarea programului in memorie. In acest pas, Masina virtuala Java


(JVM – Java Virtual Machine) incarca programul in memorie pentru a-l executa.
Incarcatorul de clase al lui JVM (class loader) ia fiserele .class, ce contin
bytecode-ul si le transfera in memoria RAM. Incarcatorul de clase incarca
deasemenea toate fisierele .class, furnizate de Java, necesare executiei
programului. Fisierele .class pot fi incarcate din calculatorul local sau din
Internet).
Limbajul de programare Java
(continuare)

Pas 4. Verificarea bytecode-ului. La acest pas, pe masura ce sunt incarcate


clasele, verificatorul de bytecode il examineaza pentru a se asigura ca este valid
si nu incalca restrictiile de securitate impuse de Java.
Limbajul de programare Java
(continuare)

Pas 5. Executia programului.

La acest pas, JVM executa bytecode-urile programului, efectuind astfel


actiunile specificate de catre program.

In versiunile initiale de Java, JVM era un simplu interpretor de bytecode-uri.

Aceasta facea ca majoritatea programelor Java sa se execute lent, deoarece JVM


interpreta si executa un singur bytecode la un moment dat.

Cu actualele arhitecturi de calculatoare, se pot executa instructiuni in paralel.

Actualele JVM-uri executa bytecode utilizand o combinatie de interpretare cu asa


numita compilare just-in-time (JIT) .
Limbajul de programare Java
(continuare)

 Un program Java foarte simplu:

public class P01 {


public static void main(String[] args) {
System.out.println("Hello world");
}
}

 Programul defineste clasa P01 ce contine doar o singura metoda, metoda


main. Fisierul .java trebuie sa aiba acelasi nume cu clasa publica, adica
P01.java.

 Fiecare program consta din cel putin o clasa ce trebuie definita. Cuvantul cheie
class incepe declaratia clasei si este imediat urmat de numele clasei (P01).

 Cuvintele cheie sunt rezervate limbajului Java si trebuiesc scrise doar cu litere
mici.
Limbajul de programare Java
(continuare)

 Prin conventie, numele claselor incep cu litera mare si utilizeaza litera mare
pentru fiecare cuvant ce compune numele clasei (ex. ComplexNumber).

 Numele clasei este un identificator – o secventa de caractere constand din


litere, cifre, underscore-uri si semnul dolarului, ce nu pot incepe cu o cifra.

 In mod normal, doar numele claselor incep cu litera mare.

 Java este case sensitive.

 Acolada deschisa { marcheaza inceputul definitiei corpului clasei. O acolada


inchisa corespondenta } incheie definitia clasei.

 Linia 2 reprezinta punctul de start al oricarei aplicatii Java.

 Parantezele rotunde plasate dupa numele identificatorului main, ne arata ca


avem o metoda.
Limbajul de programare Java
(continuare)

 In mod normal, o declaratie de clasa contine una sau mai multe metode. Intr-
o aplicatie Java, una din metode trebuie sa aiba numele main si trebuie
definita ca in exemplul anterior.

 Metodele efectueaza operatii ce pot returna informatie la sfarsitul acestor


operatii. Cuvantul cheie void specifica faptul ca acea metoda nu va returna
nici o informatie.

 Parametrul String [ ] args specificat intre paranteze rotunde, este obligatoriu


cand declaram metoda main. Acolada deschisa incepe descrierea corpului
metodei iar cea inchisa incheie descrierea corpului metodei.

 Linia 3 din programul de mai sus, comanda calculatorului sa efectueze o


actiune, si anume, sa afiseze sirul delimitat prin ghilimele. Obiectul
System.out este numit obiectul standard de iesire. El permite aplicatiilor Java
sa afiseze informatii in fereastra de afisaj.
Limbajul de programare Java
(continuare)

 Metoda System.out.println afiseaza o linie de text in fereastra de afisaj (la


momentul executiei). Sirul din paranteze este argumentul (sau parametrul)
metodei. Cand metoda System.out.println termina afisajul argumentului, ea
plaseaza cursorul la inceputul liniei urmatoare.
 
 Exista o metoda similara numita print, care lasa cursorul la sfarsitul textului
afisat.
 
 Metoda System.out.printf afiseaza date formatate. The instruction
 
System.out.printf( "%s\n%s\n","Welcome to ", "Java Programming!" );
 
Utilizeaza metoda pentru a afisa sirurile "Welcome to " si "Java Programming"

 Apelul metodei specifica trei argumente. Cand o metoda necesita mai multe
argumente, ele trebuiesc separate printr-o virgula.
Limbajul de programare Java
(continuare)

 
Executia programului este:

Primul argument al metodei printf este un sir formatat, ce poate contine


text fix si specificatori de format. Textul fix este afisat ca atare.

Fiecare specificator de format desemneaza o pozitie pentru o valoare,


specificand totodata tipul datei ce trebuie afisata. Specificatorii de format pot
contine informatie suplimentara necesara formatoarii.  
Limbajul de programare Java
(continuare)

  
Specificatorii de format incep prin semnul procent (%) urmat de un
caracter ce reprezinta tipul de date.

De exemplu, specificatorul %s este o pozitie pt. un sir de caractere.

Sirul formatat din exemplul anterior, specifica faptul ca printf trebuie sa


afiseze doua siruri de caractere, fiecare urmat de un caracter new line.

Fiecare pozitie desemnata de un specificator de format substituie valoarea


urmatorului argument. Astfel, substituie "Welcome to " pentru primul %s si
"Java Programming ! " pentru al doilea %s.
Mediul de dezvoltare Netbeans

  
Crearea unei noi aplicatii Java:

File => New Project


Mediul de dezvoltare Netbeans: crearea unei noi
aplicatii

Trebuie sa fie selectata categoria Java (implicita) => Next


Mediul de dezvoltare Netbeans: crearea unei noi
aplicatii (continuare)

Specificam Project Name si Project Location (utilizam Browse) => Finish


Mediul de dezvoltare Netbeans: crearea unei noi
aplicatii (continuare)

Daca stergem comentariile programul devine:


Mediul de dezvoltare Netbeans: crearea unei noi
aplicatii (continuare)

In fereastra din stanga ne apare structura aplicatiei:


Parametrul metodei main: String[] args

Parametrul args este un vector de string-uri pe care programul il poate accesa


in momentul executiei, pentru a-si lua, de exemplu, datele de intrare.
 
Atentie ! Datele de intrare din lista de argumente (chiar daca sunt numerice)
sunt in format string (sir de caractere).
 
Cum specificam aceste date ? Cu IDE-ul NetBeans, trebuie sa parcurgem
urmatorii pasi:
 
Click dreapta pe numele aplicatiei (in fereastra din stanga)
Selectam optiunea Properties
Selectam optiunea Run
Completam textBox-ul Arguments cu o lista de valori separate prin spatiu.
Apasam butonul ok
 
Parametrul metodei main: String[] args (continuare)

 Sa consideram urmatoarea completare a listei de valori: ion vasile elena

 Obs. Separatorul dintre valori este spatiul  


Parametrul metodei main: String[] args (continuare)

 Sa modificam programul, incat sa afiseze valoarea primului element din lista:

Obs. parametrul args, fiind vector, elementele sale sunt selectate printr-un index ce ia valori de
la 0 la n-1, unde n este numarul de valori din lista.

 
Parametrul metodei main: String[] args (continuare)

 Atributul length al vectorilor, ce furnizeaza numarul de elemente


 
Cum aflam numarul de elemente din lista ? Putem utiliza atributul length al vectorului:
args.length

 
Parametrul metodei main: String[] args (continuare)

 Daca vrem sa afisam lista datelor de intrare putem scrie:


 

 
Parametrul metodei main: String[] args (continuare)

 Daca vrem sa afisam pe o singura linie:  

 
Conversia de la tipul String la tipul numeric

 Sa presupunem ca in lista de valori avem date numerice: 10 20 30 40 50 


Modificam mai intai lista de argumente:
 

 
Conversia de la tipul String la tipul numeric
(continuare)

 Sa consideram un program care afiseaza lista datelor de intrare, calculeaza suma lor si
afiseaza aceasta suma.
 

 
Conversia de la tipul String la tipul numeric
(continuare)

 Conversia de la tipul String la tipul int se face prin metoda parseInt, avand ca parametru, string-ul ce reprezinta un numar intreg.
 
 Conversia de la String la float se face prin metoda Float.parseFloat(s)
iar conversia la double prin metoda Double.parseDouble(s), unde s este string-ul ce reprezinta un numar real.

 suma este o variabila de tip intreg, locala metodei main. Variabilele locale trebuiesc initializate inainte de a fi folosite.
 
Obs. Putem utiliza variabilele locale pentru a specifica datele de intrare.

In instructiunea System.out.println("Suma este " + suma);


operatorul + este operator de concatenare intre siruri de caractere.
Dar suma nu este de tip String.
In acest context compilatorul Java face automat conversie de la tipul numeric la tipul String.

 
Conversia de la tipul String la tipul numeric
(continuare)

 Considerand programul anterior si utilizand metoda printf() pentru afisarea


datelor, obtinem:

 
Conversia de la tipul String la tipul numeric
(continuare)

 Sa consideram un program care are ca date de intrare coeficientii a, b, c ai unei


ecuatii de gradul 2. Programul calculeaza solutiile ecuatiei.

 
Conversia de la tipul String la tipul numeric
(continuare)

Obs. Metoda statica Math.sqrt calculeaza radacina patrata a argmentului real specificat.

Clasa Math este predefinita si contine principalele functii matematice.


 
Daca lista de argumente este 1 5 6, executia programului va fi:

 
Rezolvarea temelor din laboratorul 1

1. Adaugati aplicatiei o metoda ce calculeaza factorialul unui numar dat ca parametru. Testati functionarea
metodei in cadrul metodei main.

Solutie:
static long factorial(int n){
long f=1;
for (int i=2; i<=n; i++ ) f *=i;
return f;
}

Testare in main:

int n=5;
System.out.printf("%d!=%d\n",n,factorial(n));

 
Rezolvarea temelor din laboratorul 1

2. Adaugati aplicatiei o metoda ce calculeaza suma primelor n numere naturale incepand de la 1, n fiind dat ca
parametru. Testati functionarea metodei in cadrul metodei main.

Solutie:
static int suma(int n){
int s=0;
for (int i=1; i<=n; i++ ) s +=i;
return s;
}

Testare in main:

int n=5;
System.out.printf("Suma primelor %d numere naturale nenule este %d\n",n,suma(n));

 
Rezolvarea temelor din laboratorul 1

3. Adaugati aplicatiei o metoda ce calculeaza numarul divizorilor proprii pt. un numar natural dat ca
parametru. Testati functionarea metodei in cadrul metodei main.
Solutie:
static int numarDivizoriProprii(int a){
int contor=0;
for (int d=2; d<=a/2; d++)
if (a % d ==0)
contor++;
return contor;
}

Testare in main:

System.out.printf("Numarul divizorilor proprii lui %d este %d\n",x,numarDivizoriProprii(x));

 
Rezolvarea temelor din laboratorul 1

4. Adaugati aplicatiei o metoda ce calculeaza numarul cifrelor pt. un numar natural dat ca parametru. Testati
functionarea metodei in cadrul metodei main.
Solutie:
static int numarCifre(int n) {
int contor = 0;
while (n !=0) {
contor++;
n = n / 10;
}
return contor;
}

Testare in main:

System.out.printf("Numarul cifrelor lui %d este %d\n",z,numarCifre(z));

S-ar putea să vă placă și