Laborator 1

Descărcați ca pdf sau txt
Descărcați ca pdf sau txt
Sunteți pe pagina 1din 10

Laborator Nr.1.

POO – Java

L1. La început de… Java


Cuprins
1.1. Ce reprezintă Java?
1.2. Structura unui program în Java
1.3. Tipuri de date, operatori și variabile în Java
1.4. Structuri de control
1.5. Tratarea excepțiilor
1.6. Probleme

Obiective:
- cunoașterea caracteristicilor limbajului orientat-obiect Java;
- cunoașterea structurii unui program în Java;
- prezentarea tipurilor de date în Java;
- prezentarea operatorilor utilizați în Java;
- cunoașterea modului de definire și declararea a variabilelor în Java;
- prezentarea structurilor de control.
La sfârșitul acestui laborator, studenții vor fi capabili să:
- definească limbajul Java, precizând elementele caracteristice acestui limbaj de
programare;
- identifice secțiunile principale ale unui program Java;
- scrie un program simplu în Java și să-l execute;
- utilizeze tipuri de date primitive în Java;
- utilizeze operatori într-un program Java;
- testeze structurile de control în cadrul unor probleme propuse.

1.1. Ce reprezintă Java?


Pentru a putea prezenta limbajul Java, trebuie să punctăm elementele fundamentale ale
paradigmei programării orientate pe obiecte. Astfel, programarea orientată pe obiecte impune
un nou mod de gândire și de modelare a lunii reale prin intermediul claselor și obiectelor.
Un obiect reprezintă acea entitate care înglobează date și operații (comportament)
simultan. Unui obiect din lumea reală îi corespunde un obiect în lumea programării orientate
pe obiecte, căruia i se asociază o structură de date (atribute) și funcționalități (operații). Unui
student identificat prin nume, prenume, număr matricol etc. i se poate asocia un obiect software
studentNou cu aceste atribute menționate anterior, iar operații pot fi: calculeazăMedia(),
înscriereExamen(), susțineInterviu() etc. Oricărui obiect din clasa Student i se pot transmite
mesaje cu ajutorul operațiilor ce constituie de fapt interfața cu utilizatorul. Programatorul are
posibilitatea extinderii codului sursă și creării de noi clase (prin moștenire), precum
studentBursier, studentVoluntar. De asemenea, plecând de la o clasă generică Student,
programatorul poate crea o ierarhie de clase, iar o funcție se poate comporta diferit
(polimorfism) în clase derivate diferite.
Noile concepte introduse de programarea orientă pe obiecte sunt: obiect, clasă, mesaje,
abstractizare, moștenire, polimorfism.
Laborator Nr.1. POO – Java

O colecție de obiecte care au aceeași structură și același comportament formează o clasă.


Obiectele interacționează între ele prin intermediul mesajelor (care sunt funcții).
Orice obiect real își are corespondentul într-un obiect “programat” (software) în
abordarea orientată pe obiecte. Astfel, un programator poate abstractiza un obiect de tip carte
identificându-i un titlul, un autor, anul apariției și îi poate trasa un comportament precum:
afișare_preț_carte, modifică_preț_carte etc. Un obiect are anumite caracteristici și un anumit
comportament. Mai multe obiecte similare formează o clasă. Prin abstractizare se pune la
dispoziția utilizatorului doar o interfață prin care să acționeze asupra obiectelor unei clase,
ascunzându-se modalitatea de proiectare a acestora. Utilizatorul “nu vede” ci doar folosește.
Capacitatea de a dezvolta noi clase pe baza unor clase existente reprezintă un concept important
în abordarea orientată-obiect și este cunoscută ca fiind moștenirea. Pentru a permite mai multe
comportamente diferite ale acelorași funcții situate în clase diferite, a apărut polimorfismul, un
alt concept fundamental în POO.
Java este un limbaj nou orientat pe obiecte care primește o atenție largă atât din partea
specialiștilor din domeniul industriei, cât și a celor din mediul academic. Java a fost dezvoltat
de James Gosling și echipa sa de la Sun Microsystems în California. Limbaj bazat pe C și C++,
Java a fost inițial destinat pentru scrierea de programe care controlează aparatele de consum,
cum ar fi prăjitoare de pâine, cuptoarele cu microunde etc. Prima denumire a fost Oak (Stejar),
ca apoi limbajul să fie denumit Java.
Java este adesea descris ca un limbaj de programare Web din cauza utilizării sale în
programe de scriere numite applet-uri care rulează în cadrul unui browser Web. Adică, ai nevoie
de un browser Web pentru a executa applet-uri Java. Aplicațiile permit o difuzare mai dinamică
și mai flexibilă a informațiilor de pe Internet și această caracteristică face ca Java să devină un
limbaj atractiv de învățat. Cu toate acestea, Java nu se limitează la scrierea de applet-uri, ci se
pot scrie și aplicații în Java.
O aplicație Java este un program de sine stătător, cu autonomie completă care nu
necesită un browser Web. O aplicație Java este analogă cu un program pe care îl scriem în alte
limbaje de programare (ex. în limbajul C, C++).

1.2. Structura unui program în Java


Un exemplu de program scris în Java este următorul:

Fig.1. Primul program în Java


După cum se poate observa, programul este alcătuit dintr-o clasă denumită Laborator1
și o funcție denumită main. Asemănător programelor din alte limbaje de programare, un
Laborator Nr.1. POO – Java

program în Java are un punct de plecare iar acesta este clasa rădăcină caracterizată de faptul că
include o funcție cu prototipul:
public static void main (String [] args)
De asemenea, un program Java este constituit dintr-o colecție de clase, aflate într-o
anumită relație. În cazul prezentat există o singură clasă, identificată prin cuvântul cheie class.
Dacă ne referim în general la modalitatea de descriere a unei clase, atunci trebuie să
avem în vedere următoarea structură:
class NumeClasa {
// conținutul clasei
}
Funcția principală (main) conține un apel de funcție (println) cu rol de afișare pe a unui
mesaj dat ca argument. Prefixul System.out care însoţeşte numele funcției de afișare reprezintă
numele unui obiect predefinit care se utilizează în situația în care destinaţia unei operaţii de
scriere este ecranul monitorului.
Parametrul funcţiei main() este de tip tablou de elemente String (şiruri de caractere), prin
intermediul căruia putem referi şi utiliza în program posibile argumente specificate la momentul
lansării în execuție a programului.
De reținut modalitatea de apel a funcției de afișare:
System.out.println("La inceput de Java!");

1.3. Tipuri de date, operatori și variabile în Java


Java preia de la C și C++ aproape toate tipurile aritmetice (short, int, long, float, double)
și tipul void, dar impune o aceeași lungime și reprezentare a tipurilor numerice pentru toate
implementările limbajului. Toate tipurile aritmetice din Java reprezintă numere cu semn și astfel
nu mai există cuvântul unsigned pentru declararea de variabile aritmetice fără semn.
Tipul boolean din Java ocupă un singur bit, iar constantele de tip boolean sunt true și false.
În Java, tipurile simple de date se numesc tipuri primitive. Există 8 tipuri primitive: byte,
short, int, long, float, double, char, boolean. De asemenea, în Java întâlnim tipul referință care
este singura modalitate de accesare a obiectelor.
Exemple:
int x,y;
float a, b, c;
char ch=’m’;
Un caz special îl reprezintă tipul String care nu este un tip primitiv și care permite lucrul
cu șiruri de caractere. Vom reveni asupra acestuia la secțiunea dedicată claselor și obiectelor.
Exemplu:
String sir=”Examen promovat”;
Laborator Nr.1. POO – Java

Fig.2. Tipuri primitive

Operatori în Java
Similar celorlalte limbaje de programare și Java utilizează operatori aritmetici în
formarea unor expresii care combină constante și variabile. O descriere a operatorilor întâlniți
în programarea sub Java este dată în tabelul 1.
Tabel 1. Operatori în Java

Operatori
Operatori aritmetici +, -, *, /, % (modulo)
Operatori de incrementare/decrementare ++, --
Operatori logici && (și), || (sau) și operatorul ! (negație)
Operatori pe biți & (și), | (sau), ^ (sau exclusiv) care sunt binari
și ~ (negație) care este unar.
Alți operatori pe biți sunt și >> (deplasare
dreapta), << (deplasare stânga), >>> (deplasare
dreapta fără extensie de semn). Au operanzi
întregi.
Operatori relaționali >, >=, <, <=, == (egalitate), != (diferit)
Operatori de atribuire combinați +=, -=, *=, /=, &=, |=, ^=, %=, <<=, >>=, >>>=

Operatorul de decizie (?:)

Declararea unei variabile


Forma generală de declarare a unei variabile este:
<Modificator_acces> tip_date nume_variabila;

Înainte de utilizarea unei variabile aceasta trebuie declarată, acțiune care informează
compilatorul asupra tipului de dată care va fi stocat în variabilă. Modificatorii de acces pentru
variabile sunt: private, protected, public și modificatorul de acces implicit. Modificatorul
private indică faptul că variabila este vizibilă local în cadrul clasei. Modificatorul protected
indică faptul că acea variabilă poate fi văzută din toate clasele, subclasele şi celelalte clase din
Laborator Nr.1. POO – Java

acelaşi pachet (package). În schimb, modificatorul de acces public indică accesul de oriunde
asupra variabilei respective, altfel spus variabila este vizibilă tuturor. Modificatorul de acces
implicit, nu are cuvânt cheie și este:
- public pentru ceilalți membrii din același pachet;
- private pentru oricine din afara pachetului.
Această modalitate de acces este numită şi acces în pachet.

Tipuri de variabile
În Java sunt prevăzute trei categorii de variabile și anume:
- variabile locale;
- variabile de instanță;
- variabile de clasă/statice.
Variabilele locale sunt declarate în interiorul unei metode, constructor sau bloc și nu sunt
vizibile în afara metodei. Variabilele instanță sunt declarate într-o clasă, dar în afara unei
metode. Ele mai sunt numite şi variabile membru sau variabile câmp. Când un obiect este
alocat în zona heap, se creează câte o înregistrare pentru fiecare valoare a variabilelor
instanţă, fapt ce implică distrugerea variabilei instanță odată cu obiectul căruia îi aparţine.
Variabila instanţă este vizibilă în toate metodele şi în toţi constructorii care aparţin clasei
care o definesc. În general trebuie declarată private. Variabile de clasă/statice sunt declarate
precizând cuvântul cheie static în interiorul unei clase, dar în afara unei metode. Există o
singură copie pentru clasă, indiferent câte obiecte au fost create din ea. Ele sunt memorate
în zona de memorie statică. În mod uzual, variabilele statice se introduc în declarații final
şi se utilizează pe post de constante publice sau private.

1.4. Structuri de control în Java


Java preia structurile de control din C/C++ pentru controlul fluxului execuției. Astfel
în programe Java putem utiliza: selecția (if, switch) și instrucțiuni de ciclare (repetitive)
(while, do, for).
Instrucțiunea IF
a. Cu o ramură
if (expresie){
bloc_instructiuni;
}
// se execută bloc_instuctiuni dacă expresia este
evaluată ca fiind adevărată
b. Cu două ramuri
if (expresie){
bloc1_instructiuni;
}
else
{
bloc2_instructiuni;
}
Laborator Nr.1. POO – Java

// se execută bloc1_instuctiuni dacă expresia este


evaluată ca fiind adevărată, în caz contrar se execută
bloc2_instructiuni

c. Instrucțiuni imbricate (înlănțuite)

if (expresie1){
bloc1_instructiuni;
}
else if(expresie2)
{
bloc2_instructiuni;
}
else if(expresie3)
{
bloc3_instructiuni;
}

else
{
blocN+1_instructiuni;
}
Instrucțiunea SWITCH
switch (expresie) {
case c1:
instrucţiuni // execută aceste instrucţiuni dacă
expresia are valoarea etichetei c1
break;
case c2:
instrucţiuni // execută aceste instrucţiuni dacă
expresia are valoarea etichetei c2
break;
case c3:
instrucţiuni // execută aceste instrucţiuni dacă
expresia are valoarea etichetei c3

case c4:
instrucţiuni // execută aceste instrucţiuni dacă
expresiea are valoarea etichetei c4
break;
. . .
default:
instrucţiuni // execută aceste instrucţiuni dacă
expresie diferă de oricare dintre cele de mai sus
}

Instrucțiunea WHILE
while (expresie){
Laborator Nr.1. POO – Java

bloc_instructiuni;
}
// se execută blocul de instrucțiuni cât timp expresia
este evaluată ca fiind adevărată
// dacă expresia este evaluată ca fiind falsă, corpul
ciclului nu se execută și se continuă cu instrucțiunea
ce urmează structurii while, în programul Java
Instrucțiunea DO
do {
bloc_instructiuni;
}
while (expresie);
// se execută blocul de instrucțiuni și apoi se evaluează
expresia. Se reia execuția instrucțiunilor din corpul
ciclului când timp expresia este adevărată.
Instrucțiunea FOR
for (initializare;conditie;actualizare)
{
bloc_instructiuni;
}
// se execută blocul de instrucțiuni de un număr cunoscut
de pași (instrucțiunea se mai numește și instrucțiune cu
contor). Variabila contor se inițializează, se verifică
apoi condiția și se incrementează la fiecare ciclu.

1.5. Tratarea excepțiilor în Java


Excepțiile reprezintă semnale prin care se indică faptul că a apărut o situație
excepțională pe parcursul execuției unui program și care necesită o deviere de la cursul normal
de execuție al programului.
Iată câteva exemple de excepții: IOException, EOFException,
ArrayIndexOutOfBoundsException, FileNotFoundException, InterruptedException.
Moduri de tratare a excepțiilor: ignorare; tartare direct în codul în care apar sau
transmiterea lor codului ce a apelat metoda care a generat excepția, pentru a fi tratate de acesta.
Excepțiile sunt tratate ca fiind obiecte, iar codul asociat tratării excepțiilor se află în pachetul
java.lang. Instrucțiunile utilizate în tratarea excepțiilor sunt: try, catch și finally.
try {
instructiuni care pot genera o excepție
}
catch (TipExceptie1 E1) {
prelucrarea excepției de tipul 1
// Obiectul E1 este generat de către această excepție și
este utilizat pentru tratarea situației.
}
catch (TipExceptie2 E2) {
prelucrarea excepției de tipul 2
}
Laborator Nr.1. POO – Java

finally {
prelucrarea tuturor celorlalte tipuri de excepții
}

Exemplu:
try
{
// se încearcă o conversie a unui șir la tipul int
number = Integer.parseInt(sir);
}
catch (Exception E)
{
System.out.println("S-a produs evenimentul: "
+ E.getMessage());
}

1.6. Probleme
Afișarea unor mesaje, utilizând funcțiile: print(), println(), printf().
Exemplu:
public class NumeClasa {
public static void main(String[] args) {
System.out.print("Primul ");
System.out.print("meu ");
System.out.print("program in ");
System.out.println("Java");
}
}
Afișarea unor valori numerice utilizând printf(). Forma generală este prezentată în
continuare:
System.out.printf(format, arguments);
System.out.printf(locale, format, arguments);
Regulile de formatare sunt precizate de parametrul format și conțin simbolul %.
Specificatorii de format includ:
%[flags][width][.precision]conversion-character
Caracterele de conversie sunt specific fiecărui tip de dată, cele uzuale fiind:
• s pentru șiruri de caractere;
• d pentru numere întregi;
• f pentru numere reale;
• t pentru numere de tip dată/timp.
[width]indică minimul de caractere pe care se afișează ieșirea, iar
[.precision]reprezintă precizia de afișare (câte caractere sunt după punctul zecimal, iar în
cazul șirurilor se poate utiliza pentru a extrage un subșir).
Laborator Nr.1. POO – Java

Exemplu:

Fig.3. Cod sursă – utilizare funcție printf()


Aplicații:
1. Scrieți un program Java care afișează datele de identificare ale unui student: nume,
prenume, specializare, an.
2. Scrieți un program Java care inițializează două variabile întregi cu două valori
constante oarecare. Să se identifice variabila care are valoarea cea mai mare și să se
afișeze media aritmetică a celor două variabile din program.
3. Cunoscând valorile a două variabile a și b numere întregi, să se stabilească care
dintre numere are cifra de control cea mai mare.
4. Afișați toate numerele prime din intervalul [10, 100].
5. Care sunt numerele perfecte mai mici decât 1000?
Observație: Se creează un nou proiect (File - New Project -Java- Java Application).

Fig. 4. Crearea unui nou proiect în Java


Laborator Nr.1. POO – Java

Se denumește proiectul cu numele Laborator 1.

Fig. 5. Crearea proiectului denumit Laborator 1


În lista cu proiectele Java va fi vizibil și proiectul nou creat (Laborator1.java).

Fig. 6. Proiectul Laborator 1


Codul sursă rezultat la crearea proiectului este cel prezentat în figura 7, urmând ca în
zona corpului funcției main() să se completeze cu instrucțiunile corespunzătoare problemelor
propuse.

Fig. 7. Codul sursă - Laborator 1.java

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