Sunteți pe pagina 1din 19

10/14/2014

Home

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare
Despre noi

Imagini

Tarife

Support

Contact

Inscrieri Online
Pentru cursurile Telecom Academy va puteti inscrie si online prin simpla
completare a acestui formular. Inainte de inscriere asigurati-va ca ati citit
materialul cursului dorit, pentru a avea o cat mai buna intelegere a
materiei si a modului de predare.

Materialul de cursclose

Contul
cursantului
Java
1 Modul Deconectare
3
Regulament

in curs
3.1Clase
Clase

Clase finalizate
Profil personal

ClaseIn in
programarea
curs orientata pe obiecte, spre deorebire de programarea procedurala vom defini obiecte, le vom crea mai apoi (sau instantia) si instantele create vor interactiona pentru a defini programul. Clasa are unul dintre cele mai importante roluri. O
clasa reprezinta o matrita (schita) care defineste un prototip. Aceasta descrie modul in care vor arata instantele create. Un obiect este definit de o clasa prin atribute si comportamente. Atributele reprezinta ceea ce cunoaste obiectul, iar
comportamentele
ceea ce2014
stie obiectul sa faca.
Java 1 - 7 Octombrie
Definirea unei clase se face cu ajutorul cuvantului cheie class:

Java 1 - 7 Octombrie 2014


class Nume{
}

Informatii clasa
Standard numele unei clase incepe cu litera capitala. Fiind identificator, numele clasei se scrie si respecta aceleasi reguli ca in cazul scrierii numelor de variabile.
Nume clasa:
Java 1 - 7 Octombrie 2014
Curs:
Java 1
Inaintea
cuvantului cheie class2014-10-07
se pot pune modificatori. Despre modificatori vom discuta in acest curs in lectiile urmatoare.
Data
incepere:
Data
finalizare:
public
class Program{
}
Instructor:

2015-02-14
Laurentiu Spilca

Acoladele (in engleza braces) incadreaza blocul de cod al unei clase. In clasa se pot defini si initializa zone de memorie, se pot defini metode si chiar putem crea alte clase. Alte instructiuni nu pot fi facute direct intre acoladele ce incadreaza blocul de
cod al unei clase.

Materiale

O clasa precedata la definitie de modificatorul de acces public trebuie scrisa intr-un fisier care sa aiba numele acestei clase (va aminesc faptul ca limbajul face diferenta intre litere mari si litere mici) si extensia .java; Intr-un fisier cu extensia .java nu
potManual
exista mai
multe clase
definite
public.SCJP
Clase care nu sunt precedate de acest modificator pot fi puse mai multe in acelas fisier .java; Un fisier cu extensia .java trebuie sa contina macar o clasa publica;
recomandat
pentru
certificarea
Materiale scrise
Videoconferinte
Examene teoretice
Rezultate obtinute

Clase finalizate
Pentru a intra in clasa, selecteaza clasa dorita cu click pe numele clasei din partea stanga.

Cuprins

Inchidere

Profil personal
Email:

daniela.cosmeleata@gmail.com

Nume:

Cosmeleata

Prenume:

Daniela Beatrice

Telefon:

0722252539

Adresa:

Aleea Campul cu Flori nr. 2

Actualizare

Modificare parola:
Parola veche:
Parola noua:
Confirmare parola:

Modifica

Regulament
Like You and 2,695 others like this.

Laborator-Videoconferinta. Packet Tracer. Cisco Aspire. Mai multe detalii...


Nu puteau fi definite ambele clase public. Observati in imaginile de mai sus ca numele fisierului este dat de numele clasei public.
Marti, 16 Aprilie 2013 la ora 18:30 a fost prezentat seminarul cu tema "Comunicarea intre aplicatii pe dispozitive mobile si aplicatii enterprise prin servicii web". Puteti revedea inregistrarea aici.

http://www.telacad.ro/cursant/main

1/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

Joi, 16 Mai 2013 la ora 18:30 a fost prezentat seminarul cu tema "Implementarea serviciilor web folosind arhitecturi REST". Puteti revedea inregistrarea aici.

Regulile prezentate mai jos sunt obligatorii in vederea bunei desfasurari a unui curs (prin care intelegem cea mai eficienta maniera de lucru in urma careia cursantul sa ajunga la finalul cursului ales sa cunoasca cat mai
bine elementele teoretice predate si sa dobandeasca cat mai eficient abilitatile practice exemplificate. Aceste reguli nu au rolul de a va pune in dificultate, ci de a eficientiza modul de lucru si a va ajuta in indeplinirea
obiectivelor cursurilor.)
Acest cont reprezinta identitatea dumneavoastra la Telecom Academy. Contul poate fi folosit doar pentru studiu iar informatia prezentata in cursurile Telecom Academy nu poate fi folosita in scopuri daunatoare sau care sa aiba drept
consecinta incarcalea vreunei legi.
Materialele de studiu puse la dispozitie cursantilor pe cont sunt disponibile incepand cu inceperea cursului (din momentul inscrierii in clasa)si vor putea fi accesate oricand dupa. Examenele aferente unui curs sunt disponibile incepand
cu inceperea cursului efectiv - in cazul claselor cu predare - si din momentul inscrierii in clasa - in cazul claselor la distanta. Examenele sunt accesibile numai pana la data de finalizare a clasei stabilita inainte de inceperea cursului. Data
de finalizare a clasei se poate vedea pe contul cursantului pentru fiecare clasa in parte.
Rezultatele obtinuite de cursant pentru fiecare curs atat pentru examenele teoretice cat si pentru examenele practice pot fi vazute pe cont pentru fiecare curs in parte.
Un curs este considerat promovat in momentul in care cursantul a obtinut la toate examenele o nota mai mare sau egala cu punctajul minim de pomovare. Punctajul minim de promovare pentru un examen este de 70 de puncte din 100.
In cazul in care un cursant nu reuseste sa promoveze toate examenele pana la data de finalizare a clasei cursul este considerat nepromovat. Promovarea ulterioara a cursului se poate face numai cu inscrierea intr-o noua clasa. In cazul in
care un cursant este reinscris acesta va pastra rezultatele obtinute la cursul anterior dar va putea resustine oricare din examene.
In cazul examenelor care au si proba practica nota finala reprezinta media aritmetica a celor doua note obtinute. Cu toate acestea cursantul trebuie sa obtina punctajul minim de 70 de puncte din 100 pentru fiecare din cele doua parti ale
examenului - proba teoretica si proba practica.
Proba teoretica a unui examen consta intr-un set de intrebari grila (cu alegere simpla sau multipla). Acestea sunt corectate pe loc de catre sistem in momentul in care cursantul alege finalizarea examenului. Rezultatul este stocat si
ulterior afisat cursantului in clasa la sectiunea "Rezultate obtinute". Un examen poate fi sustinut de maximum 3 ori. In cazul in care un cursant sustine de mai multe ori un examen rezultatul care va fi pastrat este intotdeauna ultimul
obtinut (NU cel mai mare dintre acestea).

3.2 Obiecte si definirea atributelor


Un obiect este definit de o clasa. Un program orientat pe obiecte se foloseste de instante de obiecte si interactiuni intre acestea la executie. Clasa defineste modul in care va arata si se va comporta un obiect; Prin urmare obiectul are doua
caracteristici importante: Atributele si Comportamentul (in engleza attributes and behaviour);
Atributele pot fi zone de memorie primitive sau alte instante de obiecte; Acesta este primul mod in care doua instante de obiecte pot interactiona (De exemplu: obiectul masina are patru instante ale obiectului roata).
Comportamentul unui obiect este reprezentat de metode numite metode de instanta;
Descrierea unui obiect prin atributele sale:
Standard atributele unui obiect sunt primele scrise in clasa; De exemplu sa presupunem ca vrem sa programam o minge; Iata cateva atribute care ar putea descrie acest obiect:
String culoare
double greutate
double presiuneInterna
Pentru a defini acest obiect trebuie sa construim clasa Minge care sa contina aceste zone de memorie.

public class Minge{


String culoare;
double greutate;
double presiuneInterna;
}

3.3 Comportamente
Metodele reprezinta blocuri de instructiuni care sunt definite si pot fi apelate ulterior de oricate ori este nevoie. Aceste blocuri de instructiuni sunt identificate printr-un nume si pot primi informatii pentru executie (numite parametrii sau argumente)
avand si posibilitate de a oferi informatii utile la finalizare (informatiile oferite la finalul executiei unei metode se numeste date returnate). Iata cum se poate defini o metoda:

http://www.telacad.ro/cursant/main

2/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

Se numeste semnatura metodei tipul acesteia impreuna cu numele si parametrii. Modificatorii nu sunt obligatorii in scrierea unei metode, insa orice metoda trebuie sa aiba macar un tip, un nume si parantezele parametrilor chiar daca nu primeste
niciun parametru. Tipul metodei reprezinta exact tipul informatiei pe care o returneaza. Daca metoda nu returneaza nicio data atunci tipul acesteia este void. In exemplul de mai sus aveti definirea unei metode care nu primeste parametri si nu
returneaza nimic.
In exemplul de mai jos, este definita clasa Numere in care metoda afisare() primeste ca parametru o valoare numerica intreaga si afisaza toate numerele intre 0 si valoarea primita prin parametru.

Observati ca la scrierea unei metode parametrii sunt considrati valori cunoscute. Acestea vor fi date in momentul in care se face apelul metodei. Parametrii scrisi la definirea unei metode se numesc parametri formali, in timp ce parametrii dati la apel
se vor numi parametri efectivi. Metoda de mai jos primeste doua numere reale prin parametrii si returneaza suma lor.

http://www.telacad.ro/cursant/main

3/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

Instructiunea return este responsabila de returnarea valorii. In cazul acesta valoarea este suma celor doua numere date prin parametri. Intotdeauna tipul datei returnate trebuie sa corespunda cu tipul metodei. In exemplul de mai sus este definit corect,
deoarece suma a doua numere reale nu poate fi decat un numar tot real. Un aspect imporant este faptul ca o metoda nu poate returna decat o vaoare. Odata apelata instructiunea return metoda isi incheie activitatea. Chiar daca ar mai exista alte
instructiuni dupa return acestea nu ar fi executate.

3.4 Constructorul si crearea instantelor


Dupa ce am descris obiectul prin atributele si comportamentele sale este timpul sa cream instante ale acestuia. Instantele reprezinta entitatile care pot interactiona intre ele pentru a da un scop programului nostru. Daca in interiorul clasei obiectul era
descris prin atributele sale, diferenta intre prototipul definit de clasa si o instanta construita cu ajutorul acestuia este ca atributele nu mai sunt formale ci devin efective; De exemplu pentru obiectul Pisica:

Am sa creez o clasa cu numele Program in care voi defini o instanta de Pisica.

Din sintaxa de mai sus Pisica p1 = new Pisica();


Pisica - tipul zonei de memorie
p1 - numele instantei
= - operatorul de aribuire
new - operatorul de instantiere (folosit pentru crearea instantelor impreuna cu un constructor. reprezinta de asemenea si un cuvant cheie)
Pisica() - constructor implicit
As fi putut face definirea si in urmatorul fel:

http://www.telacad.ro/cursant/main

4/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

Constructorul poate fi considerat o metoda mai speciala. Aceasta nu are tip la definire. Constuctorul este folosit in primul rand pentru a defini o instanta a clasei in care este scris si de asemenea ca instructiuni ale constructorului putem scrie linii de
cod care sa se execute la creare instantei. De exemplu am putea da valori atributelor instantei in momentul crearii lor. Constructorul are intotdeauna acelasi nume cu al clasei in care se afla si poate primi parametri care sunt considetati pentru
instructiuni valori cunoscute. Orice clasa are un constructor denumit constructor implicit, care nu primeste parametri si nu executa nimic, dar cu ajutorul caruia se pot crea instante ale clasei. Odata definit un alt constructor in clasa, constuctorul
implicit nu mai exista.

Constuctorul implicit nu mai exista:

dar poate fi folosit:

http://www.telacad.ro/cursant/main

5/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

Valorile date la creare instantei puse in zona de memorie p1 se numesc valori efecive. La apelul constructorului se vor executa si instructiunile acestuia care vor face ca numele insantei sa fie "Tom" si greutatea 3.5; Constructorul se scrie standard
dupa definirea atributelor clasei.
O instanta poate fi creata si fara a o stoca intr-o zona de memorie:

3.5 Accesul la atribute si apelul comportamentelor


Accesul la atribute se poate face folosind operatorul . (punct); Operatorul . (punct) se numeste si operator de dereferentiere. Cu ajutorul lui se poate face referirea la un atribut al unei instante sau la un comportament al unei instante.

http://www.telacad.ro/cursant/main

6/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

Apelul comportamentelor:

Un comportament nu poate fi apelat fara existenta unei instante.

Poate fi creata o instanta provizorie pentru a apela un comportament:

http://www.telacad.ro/cursant/main

7/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

Un atribut este o valoare individuala a unei instante. Asta inseamna ca doua instante ale clasei Pisica pot avea sau nu aceeasi culoare. Spunem ca doua instante sunt egale daca valorile atributelor lor sunt egale.

3.6 Zone de memorie de clasa


Zonele de memorie de clasa se mai numesc si zone de memorie statice, deoarece se creaza folosind modificaorul static. O zona de memorie de clasa nu reprezinta un atribut. Valoarea acesteia este comuna in toate instantele definite de clasa.
Deoarece valoarea ei este unica, o variabila statica poate fi dereferentiata direct din clasa.

http://www.telacad.ro/cursant/main

8/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

Rezulatul va fi ultima valoare atribuita lui z, deoarece z este acelasi si pentru p1 si pentru p2 si poate fi accesat prin dereferentiere din clasa.

3.7 Metode de clasa

http://www.telacad.ro/cursant/main

9/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

Pana acum metodele definite reprezentau comportamente ale instantelor definite cu clasa in care acestea erau create. Exista totusi posibilitatea de a defini metode care nu reprezinta comportamente. Acestea se numesc metode statice sau de clasa, se
creaza folosind modificatorul static si nu pot folosi decat alte sintaxe tot statice. Cu alte cuvinte o metoda de clasa nu poate accesa atributele clasei sau comportamentele definite in clasa. Cea mai importanta dintre metodele de clasa este metoda
principala a programului main(). Deoarece metodele statice nu reprezinta comportamente acesta pot fi dereferentiate, similar variabilelor statice, folosind numele clasei in care se afla.

Nu pot fi accesate entitati non-statice:

http://www.telacad.ro/cursant/main

10/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

3.8 Domeniul de vizibilitate al variabilelor


O variabila poate fi definita:
global (in interiorul clasei)
local (in interiorul unei metode sau structuri)
Daca variabila este definita direct in interiorul clasei ea este accesibila de catre toate metodele din clasa. Daca este definita intr-o metoda sau o structura atunci variabila este vizibila numai local, in structura care o defineste. Daca exista o variabila
globala si una locala cu acelasi nume atunci cea accesata este intotdeauna cea mai locala. Prin urmare exista posibilitatea de a defini variabile cu acelasi nume doar daca sunt in domenii de vizibilitate diferite.

In cazul de mai sus este exemplificat modul de definire global si local al variabilelor. In structura while, variabila x folosita este cea definita in interiorul structurii. Acea variabila este vizibila numai in structura while, fiind inaccesibila in afara
acesteia.
O variabila definita local nu are valoare implicita. Folosirea acesteia in operatii fara a-i atibui o valoare duce la aparitia unei erori de sintaxa.
Variabilele definite global (precum atributele) au valori implicite in functie de tipul de data:
Pentru:
int, long, short, byte valoarea implicita este 0
float si double valoare implicita este 0.0
char valoarea implicita este '/u0000'
boolean valoarea implicita este false
orice tip de obiect valoarea implicita este null

3.9 Supraincarcare (overloading)


Supraincarcarea reprezinta posibilitatea de a defini mai multe metode in aceeasi clasa care au acelasi identificator dar difera prin parametri. Daca doua metode diferite au parametrii diferiti atunci ele pot avea acelasi nume. Parametrii pot fi diferiti fie
prin tipul fie prin numarul fie prin ordinea lor. Mai jos aveti exemplul de supraincarcare a metodei suma();

Compilatorul va sti ce metoda se apeleze in functie de parametrii dati.


Un exemplu gresit de supraincarare este:

http://www.telacad.ro/cursant/main

11/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

Supraincarcarea este un procedeu care se poate aplica si constructorilor. Constructorii oricum sunt fortati sa aiba acelasi nume cu al clasei. Asadar folosind supraincarcarea in cazul constructorilor sinugurul lucru care trebuie avut in vedere este
definirea folosind parametrii diferiti ca in cazul metodelor.

Clasa de mai sus defineste un constructor si redefineste constructorul implicit. Constructorul implicit nu mai exista in cazul definirii unui alt constructor asa cum am vazut deja, insa prin supraincarcare poate fi redefinit si constructorul implicit.

3.10 Tablouri
Un tablou reprezinta o colectie de variabile de acelasi tip. Exista pozibilitatea de a defini o structura de un numar definit de variabile de un anumit tip. Aceste tipuri de structui de date se numesc tablouri (in engleza arrays).
Clasificam tablourile dupa numarul lor de dimensiuni:
unidimensionale - vectori
bidimensionale - matrice
pluridimensionale
Tablouri unidimensionale:

http://www.telacad.ro/cursant/main

12/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

In exemplul de mai sus este definit un vector (tablou cu o singura dimensiune) cu dimensiunea de lungime 100 de tipul int si cu identificatorul a. Fiecare element al acestei structuri este identificat pintr-un index de tip int. Indecsii incep de la valoarea
0 si sunt crescatori, astfel ca ultimul index al unui tablou va avea intotdeauna valoarea lungimii tabloului minus unu. Cum putem folosi o variabila a unui vector:

Parcurgerea unui vector se poate face folosind o structura repetitva for, deoarece indecsii se gasesc intotdeauna intr-un interval continuu de numere.

Cum variabila i ia valori intre 0 si 99 aceasta ia pe rand toate valorile indecsilor. Astfel ca fiecare variabila a tabloului in cazul de mai sus este instantiata cu exact valoare indexului care o reprezinta. Exemplul de mai sus demonstreaza modul in care
se poate folosi o variabila ca valoare dinamica a indexului.

http://www.telacad.ro/cursant/main

13/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

Tablouri bidimensionale:
pot fi considerate vectori de vectori
au doua dimensiuni cu lungime proprie
fiecare dimensiune este indexata incepand cu valoare 0
intervalul indecsilor este intre 0 si lungimea - 1

Deoarece o matrice are doua dimensiuni parcurgerea se poate face folosind doua structuri de control for imbricate.

Tablouri pluridimensionale:

http://www.telacad.ro/cursant/main

14/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

3.11 Instanta this


Instanta this reprezinta intr-o clasa instanta curenta. Practic, folosita intr-un comportament aceasta este instanta care se comporta (cea al carei comportament este apelat). Folosita intr-un constructor this reprezinta instanta care este construita. In
exemplul de mai jos este exemplificata folosirea instantei this:

In exemplul de mai sus parametrii poarta acelasi nume cu atributele. Deoarece parametrii sunt variabile locale iar atribuele clasei sunt varibile globale, in functie prin x si y vor fi apelati numai parametrii. Pentru a putea accesa insa aributele clasei ne
putem referi la acestea prin this.x respectiv this.y; In felul acesta se face dereferentiere din instanta care este construita (this);
In cazul de mai jos, deoarece se face referire la this dintr-un comportament this reprezinta instanta care isi executa comportamentul. Nu uitati ca this nu poate fi accesat din metode statice sau contexte statice.

http://www.telacad.ro/cursant/main

15/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

3.12 Constructorul this()


this() reprezinta consructorul clasei curente. Pentru a intelege mai bine utilitatea lui this() sa analizam exemplul de mai jos:

http://www.telacad.ro/cursant/main

16/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

Practic la apelul constructorului fara parametri se va crea o instanta de punct cu x=0 si y=1, deoarece constructorul fara parametri apeleaza pe cel cu doi parametri care atribuie valorile atributelor clasei.

3.13 Tipul enum


O enumerare reprezinta un tip de data care poate lua numai anumite valori precizate prin sintaxa la definirea enumerarii. Cel mai comun exemplu pentru o enumerare este prezentat in imaginea de mai jos:

Enumerarea arata in BlueJ:

Odata definita enumerarea Zi exista tipul de data Zi care poate lua valorile: luni, marti, miercuri, joi, vineri, sambata, duminica

http://www.telacad.ro/cursant/main

17/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

Afisarea valorii in consola:

Metoda values() si parcurgerea valorilor unei enumerari:

http://www.telacad.ro/cursant/main

18/19

10/14/2014

Cursuri CCNA, Cursuri JAVA, Cursuri LINUX, Cursuri PHP/MySQL, Cursuri baze de date, Cursuri progamare

In cazul de mai sus, in variabila ziua1 de tip Zi se pune folosind metoda values() fiecare valoare a enumerarii. In blocul de instructiuni a structurii de control for se poate face ceva mai apoi cu valoarea preluata in variabila. In cazul exemplului de mai
sus aceasta este afisata pe o linie noua in consola. Astfel sunt afisate pe linii separate fiecare valoare din enumerare.
Folosirea in structura switch:

http://www.telacad.ro/cursant/main

19/19