Sunteți pe pagina 1din 8

FMI - TAP, Laborator - verman@fmi.unibuc.

ro

+ Bibliografie
+ Scurt introducere
+ Descarcare JDK. Medii de dezvoltare
+ Crearea unei aplicaii simple
+ Folosirea argumentelor de la linia de comand
+ Exerciii
+ Clase. Exerciiu

-1-

FMI - TAP, Laborator - verman@fmi.unibuc.ro

Bibliografie
1.

http://www.oracle.com/technetwork/java/javase/documentation/index.html

2. Horia Georgescu. Introducere n universul Java. Editura Tehnic Bucureti


2002
3. Ivor Horton Beginning Java 2, Java 7 Edition, Wiley Pub., 2011
4. tefan Tanas, Cristian Olaru, tefan Andrei, Java de la 0 la expert, ediia a II-a,
Polirom 2007
5. M. Naftalin, P. Wadler - Java Generics and Collections, OReilly, 2007

Scurt introducere
Java este un limbaj de programare de nivel nalt, dezvoltat de JavaSoft, companie
n cadrul firmei Sun Microsystems.
Limbajul de programare Java a fost folosit la dezvoltarea unor tehnologii dedicate
rezolvrii unor probleme din cele mai diverse domenii. Aceste tehnologii au fost grupate
n aa numitele platforme de lucru, ce reprezint seturi de librrii scrise n limbajul Java,
precum i diverse programe utilitare, folosite pentru dezvoltarea de aplicaii sau
componente destinate unei anume categorii de utilizatori. Printre acestea sunt
J2SE (Standard Edition) platforma standard de lucru ce ofer suport pentru
crearea de aplicaii independente i appleturi
J2ME (Micro Edition) pentru programarea dispozitivelor mobile
J2EE (Enterprise Edition) ofer API-ul necesar dezvoltrii de aplicaii
complexe, formate din componente ce trebuie s ruleze n sisteme eterogene, cu
informaiile memorate n baze de date distribuite, etc, precum i suportul necesar
pentru crearea de aplicaii i servicii Web, bazate pe componente cum ar fi
servleturi, pagini JSP, etc.

Descarcare JDK. Medii de dezvoltare


Toate distribuiile Java sunt oferite gratuit i pot fi descrcate de la adresa
http://www.oracle.com/technetwork/java/javase/downloads/index.html
(vechea adres era http://java.sun.com).
Menionm c exist ns mai multe medii de programare Java, ca de exemplu
NetBeans - http://www.oracle.com/technetwork/java/javase/downloads/jdk-7netbeans-download-432126.html
Eclipse
JCreator

-2-

FMI - TAP, Laborator - verman@fmi.unibuc.ro

Crearea unei aplicaii simple

1. Scrierea codului surs


Vom prezenta un exemplu clasic afiarea argumentelor
class Unu{
public static void main(String args[]){
System.out.println("Sunt "+args.length+" argumente:");
for(int i=0; i<args.length; i++)
System.out.println(args[i]);
}
}

Toate aplicaiile Java conin o clas principal n care trebuie s se gseasc


metoda main. La executarea programului sistemul detecteaz i execut metoda main a
clasei al crei nume coincide cu numele fiierului bytecode rezultat n urma compilrii
clasei care conine metoda principal.

Observaii
1. n Java operatorul de concatenare + este foarte flexibil, n sensul c permite
concatenarea irurilor de caractere cu obiecte de orice tip care au o reprezentare de tip ir
de caractere (este apelat metoda toString() asupra creia vom reveni).
2. n Java exist o serie de convenii de scriere a numelor claselor, metodelor, cmpurilor
(http://www.oracle.com/technetwork/java/codeconventions-135099.html) pe care v
recomand s le respectai i n programele scrise la laborator
NumeClasaInitialeMari
numeMetodaPrimaLiteraMica
numeCampPrimaLiteraMica
NUME_CONSTANTA

-3-

FMI - TAP, Laborator - verman@fmi.unibuc.ro


Clasele aplicaiei se pot gsi fie ntr-un singur fiier (unitate de compilare), fie n
mai multe. Un fiier poate conin cel mult o clas public (cu modificatorul public).
Dac un fiier conine o clas public, atunci numele fiierului trebuie s coincid cu
cel al clasei publice.
Scrierea programului poate fi realizat cu orice editor text.
2. Salvarea fiierelor surs
Se va face n fiiere cu extensia java. Pentru exemplul considerat s presupunem
c numele fiierului este PrimaAplicatie.java
Este indicat, dar nu obligatoriu (aa cum se vede din exemplul prezentat), ca
numele unitii de compilare s coincid cu numele clasei ce conine metoda principal.

Observaie: Java face distincie ntre literele mari i mici.


n primul laborator compilarea i rularea aplicaiei se vor face din linia de
comand. Dup cum am amintit, exist medii de programare Java care faciliteaz
compilarea i executarea programelor care vor putea fi utilizate n urmtoarele
laboratoare.
Pentru a putea compila din linia de comand trebuie ca:
1. directorul curent s fie cel n care am salvat fiierul surs PrimaAplicatie.java
2. calea ctre fiierul javac.exe s se gseasc n variabila sistem path
(Computer -> Properties -> Advanced system settings -> Advanced ->
butonul Environment Variables)
3. Compilarea aplicaiei
Se folosete compilatorul Java, javac.
Apelul compilatorului se face pentru fiierul ce conine clasa principal a
aplicaiei. Compilatorul creeaz cte un fiier separat pentru fiecare clas a programului;
acestea au extensia class si sunt plasate implicit n acelai director cu fiierele sursa.
javac PrimaAplicatie.java

n cazul unei compilri reuite va fi generat fiierul Unu.class.


4. Rularea aplicaiei
Se face cu interpretorul java, apelat pentru unitatea de compilare
corespunztoare clasei principale, fiind ns omis extensia class asociat acesteia.
java nume_clasa lista_de_argumente

-4-

FMI - TAP, Laborator - verman@fmi.unibuc.ro


unde nume_clasa este numele clasei principale, iar lista_de_argumente reprezint
argumentele aplicaiei, primite de aplicaie ca parametru al metodei main (sub
forma unui vector de iruri de caractere). lista_de_argumente poate lipsi dac aplicaia
nu are nevoie de argumente.
Pentru exemplul prezentat, apelul poate fi de forma
java Unu primul ultimul

sau
java Unu

(NU java PrimaAplicatie primul ultimul)


Deoarece interpretorul are ca prim argument numele clasei principale i NU
numele unui fiier, ne vom poziiona n directorul ce conine fiierul Unu.class nainte
de a apela interpretorul. Nu este corect un apel de genul
java c:\laboratoare\Unu primul ultimul

Folosirea argumentelor de la linia de comand


O aplicaie Java poate primi oricte argumente de la linia de comand n
momentul lansrii ei. Aceste argumente se specific dup numele aplicaiei i sunt
separate prin spaiu.
n cazul n care unul din argumente conine spaii, atunci el trebuie pus ntre
ghilimele.
O aplicaie poate s nu primeasc nici un argument sau poate s ignore
argumentele primite. n momentul lansrii unei aplicaii interpretorul parcurge linia de
comand cu care a fost lansat aplicaia i, n cazul n care exist argumente, trimite
aplicaiei aceste argumente sub forma unui vector de iruri. Acesta este primit de aplicaie
ca parametru al metodei main.
java Unu primul al doilea 3
java Unu primul "al doilea" 3

Observaie: Argumentele sunt primite sub forma unui vector de iruri de caractere (de
obiecte de tip String). n cazul n care unele din acestea reprezint valori numerice,
vor trebui convertite din iruri n numere. Acest lucru se realizeaz cu metode de tipul
parseTipNumeric aflate n clasa corespunztoare tipului n care vrem s facem
conversia. Vom reveni asupra acestor metode n cele ce urmeaz.

-5-

FMI - TAP, Laborator - verman@fmi.unibuc.ro

Exerciii
1. S se scrie o aplicaie Java care primete ca argumente numere i calculeaz suma
radicalilor argumentelor primite. Programul va afia un mesaj corespunztor dac
argumentele nu sunt numere pozitive.
Pentru a calcula radicalul unui numr exist metoda sqrt a clasei Math, care se
apeleaz astfel:
double x = Math.sqrt(25);

2.

a) Consultai documentaia pentru a vedea cmpurile i metodele clasei Math din


pachetul java.lang (http://download.oracle.com/javase/7/docs/api/ )
b) Consultai documentaia pentru a nelege cum se pot utiliza metodele
parseInt, toBinaryString din clasa Integer pentru a transforma un numr din
baza 2 n baza 10 i invers, i scriei un program n care s folosii aceste metode,
precum i metode i cmpuri din clasa Math
(http://download.oracle.com/javase/7/docs/api/ )

3. Scriei o aplicaie Java care s verifice conjectura lui Goldbach: Orice numr
ntreg par mai mare dect 3 poate fi scris ca suma a dou numere prime pentru
numerele pare din intervalul [m, n], unde m i n sunt valori primite din linia de
comand.
4*. Scriei o metod care verific dac un caracter primit ca parametru este liter mare
sau liter mic i afieaz un mesaj corespunztor, folosind instruciuni de tip ifelse. Utilizai aceast metod pentru un caracter generat aleator (Math.random()) i
pentru un caracter citit de la tastatur. Modificai metoda s testeze tipul literei
folosind metodele isLowerCase i isUpperCase din clasa Character.
char litera;
litera = (char)(128*Math.random()); //caracter generat aleator
//litera citita de la tastatura
try{
System.out.println("Introduceti un caracter");
litera = (char)System.in.read();
//apel metoda
}
catch(Exception ioe){
}

-6-

FMI - TAP, Laborator - verman@fmi.unibuc.ro

-7-

Clase
Exemplu
Vom scrie o clas Dreptunghi ce are dou cmpuri, repezentnd lungimea i limea
dreptunghiului i doi constructori: un constructor fr parametrii n care se
iniializeaz lungimea i limea dreptunghiului cu 1 i un constructor cu doi
parametrii, reprezentnd lungimea i limea dreptunghiului.
Clasa va avea urmtoarele metode:
-

o metod de calcul al ariei dreptunghiului

o metod ce primete ca parametru un obiect de tip Dreptunghi i verific dac


aria acestuia este mai mare dect aria dreptunghiului curent

o metod de afiare a dimensiunilor dreptunghiului

class Dreptunghi{
double lung,lat;

//campuri

Dreptunghi(){
lung=1;
lat=1;
}

//constructori

Dreptunghi(double lung1,double lat1){


lung=lung1;
lat=lat1;
}
double arie(){
return lung*lat;
}

//metode

boolean maiMare(Dreptunghi d){


return arie()<d.arie();
}
void afisare(){
System.out.println("lungime "+lung+",latime "+lat);
}
}

Pentru a folosi clasa Dreptunghi putem aduga n aceast clas metoda main sau putem
crea o nou clas care sa aib doar metoda main (clas principal). Vom alege n
continuare cea de a doua variant.
class DreptunghiMain{
public static void main(String arg[]){
double a;
//cream un dreptunghi
Dreptunghi d;
d=new Dreptunghi(3,5);

FMI - TAP, Laborator - verman@fmi.unibuc.ro


System.out.print("Dreptunghi initial: ");
d.afisare();
a=d.arie();
System.out.println("arie="+a);
//cream un nou dreptunghi, de dimensiuni primite ca argumente
int x = Integer.parseInt(arg[0]);
int y = Integer.parseInt(arg[1]);
Dreptunghi d2=new Dreptunghi(x,y);
System.out.print("Noul dreptunghi: ");
d2.afisare();
System.out.println("arie="+d2.arie());
if (d.maiMare(d2))
System.out.println("Noul dreptunghi este mai mare");
else
System.out.println("Dreptunghiul initial este mai mare");
d2=new Dreptunghi(); //se va apela constructorul fara argumente
System.out.print("Dreptunghi unitate: ");
d2.afisare();
}
}

Exerciiu
S se scrie o clas Complex pentru lucru cu numere complexe. Clasa va avea dou
cmpuri, reprezentnd partea real i partea imaginar a numrului complex, trei
constructori:
- un constructor fr parametrii, care las partea real i cea imaginar zero
- un constructor cu un parametru, reprezentnd partea real a numrului complex,
partea imaginar fiind iniializat cu zero (pentru crearea de numere reale)
- un constructor cu doi parametrii, reprezentnd partea real i partea imaginar a
numrului complex.
De asemenea, clasa va avea urmtoarele metode:
- o metod care returneaz modulul numrului complex curent
- o metod care returneaz conjugatul numrului complex curent
- o metod care adun la numrul complex curent un numr complex primit ca
parametru (plus o metod similar pentru mprire)
- o metod de afiare a numrului complex
- S se scrie apoi clasa principal care, n metoda main creeaz dou obiecte de tip
Complex, le afieaz, afieaz modulul i conjugatul acestora, precum i
numerele obinute adunnd primul numr complex la cel de al doilea, apoi
mprind cele dou numere. Creai i afiai apoi trei numere complexe, apelnd
fiecare din cei trei constructori ai clasei

-8-

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