Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programarea orientată pe obiecte (POO) Limbajul JAVA

Similar presentations


Presentation on theme: "Programarea orientată pe obiecte (POO) Limbajul JAVA"— Presentation transcript:

1 Programarea orientată pe obiecte (POO) Limbajul JAVA
Capitolul 3 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

2 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni
POO: Cuprins pe scurt 1. PROGRAMAREA ORIENTATĂ PE OBIECTE 2. LIMBAJUL JAVA – prezentare generală 3. LIMBAJUL JAVA – instrucțiuni 4. LIMBAJUL JAVA – POO 5. LIMBAJUL JAVA – mecanismul Client-Server 6. LIMBAJUL JAVA – accesarea bazelor de date 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

3 3. LIMBAJUL JAVA – instrucțiuni
3.2. Exemple JAVA 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

4 3. LIMBAJUL JAVA – instrucțiuni
Instrucţiunea vidă Este formată din ”;”. Instrucţiuni de decizie Instrucţiunea if–else are forma: if (ExpresieLogică) instrucţiuni1 else instrucţiuni2 instrucţiuni Semnatica: Dacă ExpresieLogică are valoarea true atunci se execută instrucţiuni1, altfel se execută instrucţiuni2. ExpresieLogică este obligatoriu să fie cuprinsă între paranteze. Dacă pe una din ramuri sunt mai multe instrucţiuni ele trebuie să fie cuprinse între acolade {…}. Ramura else adica instrucţiuni2 poate să lipsească. 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

5 3. LIMBAJUL JAVA – instrucțiuni
Exemplu: Să se calculeze maximul a două numere. public class Maxim { public static void main(String args[]) {int a=12, b=5,m; if (a>b) m=a; else m=b; System.out.println("Maximul dintre "+a+" si "+b+" este: "+m); } 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

6 3. LIMBAJUL JAVA – instrucțiuni
Instrucţiunea switch are forma: switch (ExpresieSelectare){ case val_1: instrucţiune_1; break; case val_2: instrucţiune_2; break; . . . case val_i: instrucţiune_i; break; case val_n: instrucţiune_n; break; default: instrucţiune; } Semantica: Instrucţiunea switch selectează dintre mai multe secvenţe de cod una care va fi executată. Se evaluează ExpresieSelectare; rezultatul obţinut se compară pe rând cu val_1, val_2, ..., val_n. Dacă avem că (ExpresieSelectare = val_i ) se execută instrucţiunile instrucţiune_i. Altfel, (dacă nu are loc nici o egalitate) se execută instrucţiunile de pe ramura default. Instrucţiunea break întâlnită pe fiecare ramură are rolul de a întrerupe execuţia instrucţiunii switch după ce au fost executate instrucţiunile aferente ramurii alese. Dacă instrucţiunea break lipseşte atunci se execută şi instrucţiunile de pe următoarele ramuri până la întâlnirea primului break. 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

7 3. LIMBAJUL JAVA – instrucțiuni
Exemplu public class Operatii{ public static void main(String args[]){ double a=12, b=5, r=0; char oper=' '; try{ System.out.println("Introduceti operatorul"); oper=(char)System.in.read(); } catch(Exception e){} switch (oper) { case '+': r=a+b; break; case '-': r=a-b; break; case '*': r=a*b; break; case '/': r=a/b; break; default: System.out.println("Operator invalid"); System.exit(1); System.out.println(a+" "+oper+" "+b+" = "+r); 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

8 3. LIMBAJUL JAVA – instrucțiuni
Instrucţiunea for (repetitivă) repetă un bloc de instrucţiuni cât timp o condiţie este adevărată. În general, se cunoaşte de la început de câte ori urmează să se execute blocul de instrucţiuni. Are forma generală: for (iniţializare; test; incrementare) instrucţiuni unde: iniţializare este o expresie care iniţializează variabila de control a instrucţiunii for test este o expresie booleană evaluată înaintea fiecărei reluări a buclei; cât timp valoarea ei este true blocul de instrucţiuni se execută. Când valoarea ei este false, se părăseşte instrucţiunea for. incrementare este o expresie care modifică variabila de control a instrucţiunii for. Oricare dintre cele trei părţi constituente ale instrucţiunii for poate să lipsească. for ( ; ; ) În acest caz se obţine o buclă infinită. Pentru a evita acest lucru este necesar ca în cadrul blocului de instrucţiuni să existe o condiţie de oprire. De asemenea, blocul de instrucţiuni poate să lipsească, el fiind înlocuit de instrucţiunea vidă. Exemplul următor ilustrează această situaţie. 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

9 3. LIMBAJUL JAVA – instrucțiuni
//Se calculeza n! unde n este initializat in program. public class Factorial{ public static void main(String args[]){ long f=1; int n=15; for(int i=2; i<=n; i++) f*=i; //f=f*i; System.out.println(n+"!="+f); } for(int i=2; i<=n; f*=i, i++) ; //corp vid 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

10 3. LIMBAJUL JAVA – instrucțiuni
Instrucţiunea while are forma: while (conditie) instructiuni; Instrucţiunea while este folosită pentru a repeta execuţia unui grup de instrucţiuni atâta timp cât condiţie are valoarea true. //Se calculeaza suma cifrelor unui numar. public class SumCifNr{ public static void main(String args[]){ long x=12345,xInit=x; int s=0; while(x>0){ s+=x%10; x/=10; } System.out.println("Suma cifrelor numarului "+xInit+" este: "+s); //linia 9 Instrucţiunea while se mai numeşte şi instrucţiune cu test iniţial. Dacă la prima evaluarea a condiţiei aceasta are valoarea false instrucţiunile din corpul while-ului nu se execută niciodată. În exemplul precedent, dacă iniţializăm x cu 0, condiţia x>0 este falsă şi se continuă cu instrucţiunea din linia 9. 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

11 3. LIMBAJUL JAVA – instrucțiuni
Instrucţiunea do-while are forma: do{ instructiuni }while (conditie); Semantica: Ca şi while, instrucţiunea do-while este folosită pentru a repeta execuţia unui grup de instrucţiuni atâta timp cât conditie are valoare true. Diferenţa dintre cele două instrucţiuni este că, dacă la while se executau instrucţiunile doar dacă condiţie era adevărată, în cazul lui do-while blocul de instrucţiuni se execută cel puţin o dată după care se verifică valoarea condiţiei. Instrucţiunea do-while se mai numeşte şi instrucţiune cu test final. 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

12 3. LIMBAJUL JAVA – instrucțiuni
//Să se calculeze cel mai mare divizor comun a două numere a şi b. public class Cmmdc{ public static void main(String args[]){ long a=54,b=68,r; System.out.print("Cmmdc-ul numerelor "+a+" si "+b+" este: "); do{ r=a%b; a=b; b=r; }while(r>0); System.out.println(a); } 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

13 3. LIMBAJUL JAVA – instrucțiuni
Break Este folosită pentru părăsirea forţată a corpurilor instrucţiunilor repetitive (for, while, do-while). //Se verifica daca un numar este cuprins in intervalul [a,b]. public class ExBreak{ public static void main(String args[]){ int a=10, b=20, x; while(true){ x=(int)(Math.random()*b); // linia 5 if ( (a<=x) && (x<=b) ) break; } System.out.println(x); În linia 5 se generează aleator un număr întreg mai mic decât b. Dacă numărul este cuprins în intervalul [a,b] se părăseşte instrucţiunea while. 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

14 3. LIMBAJUL JAVA – instrucțiuni
Dacă instrucţiunea break este plasată în cadrul mai multor instrucţiuni repetitive imbricate, ea are ca efect părăsirea doar a instrucţiunii care o conţine. for(...){ ... for(...){ //linia 3 break; } //linia 8 Efectul instrucţiunii break este părăsirea for-ului din linia 3, execuţia continuându-se cu instrucţiunile de pe linia 8. 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

15 3. LIMBAJUL JAVA – instrucțiuni
Instrucţiunea continue Are ca efect întreruperea execuţiei iteraţiei curente şi trecerea la iteraţia următoare. //Următorul cod afişează toate caracterele citite cu excepţia cifrelor de la 0 la 9. public class ExContinue{ public static void main(String args[]){ for(int i=0; i<=10; i++){ //linia 3 char c=' '; try{ c=(char)System.in.read(); } catch(Exception e){} if ( ('0'<=c) && (c<='9') ) continue; //linia 10 System.out.print(c+" "); //linia 11 În cazul în care se citeşte o cifră, se execută instrucţiunea continue de pe linia 10, nu se mai execută linia 11 şi se sare direct la linia 3. Observaţie: Instrucţiunile break şi continue pot să apară doar în cadrul unor instrucţiuni repetitive. Excepţie face instrucţiunea break care poate să apară şi în cadrul instrucţiunii switch. 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

16 3. LIMBAJUL JAVA – instrucțiuni
3.1. Instrucțiuni - Excepţii O excepţie este un eveniment ce se produce în timpul execuţiei unui program şi care provoacă întreruperea cursului normal al execuţiei. - o împărţire la 0; - utilizarea unui indice care depăşeşte o dimensiune declarată a unui tablou, etc Când apare o astfel de eroare în timpul execuţiei programului sistemul generează automat un obiect de tip excepţie ce conţine: - informaţii despre excepţia respectivă; - starea programului în momentul producerii excepţiei Exemplu: public class Exceptii { public static void main(String args[]) { int v[] = new int[10]; v[10] = 0; //exceptie, vectorul are elementele v[0]...v[9] System.out.println("Aici nu se mai ajunge..."); } La rularea programului va fi generată o excepţie şi se va afişa mesajul : Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException :10 at Exceptii.main (Exceptii.java:4)   12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

17 3. LIMBAJUL JAVA – instrucțiuni
3.1. Instrucțiuni - Excepţii Java dispune de un mecanism care permite programatorului să preia controlul programului în momentul în care apare o excepţie şi să o trateze. Crearea unui obiect de tip excepţie se numeşte aruncarea unei excepţii ("throwing an exception"). În momentul în care o metodă generează o excepţie (aruncă o excepţie) sistemul de execuţie este responsabil cu găsirea unei secvenţe de cod dintr-o metodă care să trateze acea excepţie. Excepţiile sunt propagate înapoi prin secvenţa de metode apelate până când o anumită metodă prinde excepţia. Secvenţa de cod dintr-o metodă care tratează o anumită excepţie se numeşte analizor de exceptie ("exception handler") iar interceptarea şi tratarea excepţiei se numeşte prinderea excepţiei ("catch the exception"). Cu alte cuvinte la apariţia unei erori este "aruncată" o excepţie iar cineva trebuie să o "prindă" pentru a o trata. Dacă sistemul nu găseşte nici un analizor pentru o anumita excepţie atunci programul Java se opreşte cu un mesaj de eroare. Ierarhia claselor ce conţin excepţii este: 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

18 3. LIMBAJUL JAVA – instrucțiuni
3.1. Instrucțiuni - Excepţii 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

19 3. LIMBAJUL JAVA – instrucțiuni
3.1. Instrucțiuni - Excepţii Instrucţiunea try try{ instrucţiuni ce pot declanşa excepţii } [catch(ClasaExceptie obiectExceptie){ instrucţiuni de tratare a excepţiei de clasă ClasaExceptie ]* [finally{ instrucţiuni care se execută necondiţionat în final ] Instrucţiunea try conţine un bloc de instrucţiuni ce trebuie executate. Punerea unor instrucţiuni în cadrul lui try înseamnă că există posibilitatea apariţiei unor excepţii sau terminării anormale a unei instrucţiuni. O instrucţiune try poate avea oricâte clauze catch (opţionale) în care sunt tratate excepţiile. De asemenea, instrucţiunea try poate avea o clauză finally a cărui bloc se execută întotdeauna înaintea părăsirii instrucţiunii try. Instrucţiunea try trebuie să aibă fie o clauză catch, fie una finnaly. 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

20 3. LIMBAJUL JAVA – instrucțiuni
3.1. Instrucțiuni - Excepţii Formele generale ale instrucţiunii try. 1. try{ ... } catch(ClasaExceptie obiectExceptie){ 2. catch(ClasaExceptie obiectExceptie){... } 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

21 3. LIMBAJUL JAVA – instrucțiuni
3.1. Instrucțiuni - Excepţii 3.  try{ ... } finnaly{... } 4. catch(ClasaExceptie obiectExceptie){... } 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

22 3. LIMBAJUL JAVA – instrucțiuni
3.1. Instrucțiuni - Excepţii În cazul în care este declanşată o excepţie şi există mai multe clauze catch, este căutată, în ordine, acea clauză care poate trata excepţia. Adică este găsită o clauză a cărui parametru are un tip care se potriveşte cu tipul excepţiei. Ordinea în care clauzele catch apar este importantă: clauzele catch mai specifice trebuie să apară înaintea celor mai generale. Dacă nu există o clauză care să trateze excepţia, aceasta este propagată în sus, la instrucţiunile imediat următoare. Excepţii uzuale: ArithmeticException Depăşire limită tip sau împărţire la 0 NumberFormatException Conversia nepermisă a unui String la un tip numeric IndexOutOfBoundsException Indice ilegal într-un şir NegativeArraySizeException Crearea unui şir cu număr negativ de elemente NullPointerException Tentativă de a folosi o referinţă care are valoarea null SecurityException Încălcarea normelor de securitate în timpul execuţiei 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

23 3. LIMBAJUL JAVA – instrucțiuni
3.1. Instrucțiuni – Excepţii Crearea unei excepţii Adeseori poate apărea necesitatea creării unor excepţii proprii pentru a pune în evidenţă cazuri speciale de erori provocate de clasele unei librării, cazuri care nu au fost prevăzute în ierarhia excepţiilor standard Java. O excepţie proprie trebuie să se încadreze în ierarhia excepţiilor Java, cu alte cuvinte clasa care o implementează trebuie să fie subclasă a clasei Exception. public class ExceptieNoua extends Exception{ ... } Exemplu: public class Exc extends Exception{ public Exc(){ super(); //apeleaza constructorul clasei Exception ... } 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

24 3. LIMBAJUL JAVA – instrucțiuni
3.1. Instrucțiuni – Excepţii Într-o clasă în care se doreşte folosirea unei excepţii există o metodă care creează excepţia (obiect al clasei de excepţii), mai multe metode care aruncă excepţia primită şi, eventual o metodă care o prinde, adică o tratează. Dacă într-o metodă apare o excepţie – creată în metoda respectivă sau ca urmare a apelării unei metode care a aruncat o excepţie, atunci ea trebuie fie să fie tratată, fie să fie aruncată mai departe. În ambele cazuri codul care ar putea genera excepţia trebuie pus în cadrul unei instrucţiuni try care să aibă o clauză catch cu parametru care să coincidă cu clasa excepţiei. Dacă excepţia se doreşte să fie tratată, atunci în clauza catch se pune un cod corespunzător. Dacă se doreşte ca excepţia să nu fie tratată atunci ea trebuie aruncată mai departe (metodei care a făcut apelul) şi acest lucru se realizează prin adăugarea clauzei throws ClasaExceptie în antetul metodei. 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

25 3. LIMBAJUL JAVA – instrucțiuni
3.1. Instrucțiuni – Excepţii Exemplu 1: În clasa RationalIred se verifică dacă numitorul fracţiei este 0. Dacă da atunci se creează o excepţie – linia 53. public class Exc extends Exception{ public Exc(){ super(); System.out.println("Numitor 0"); } public class Rational{ private long m,n; public Rational(){ this(1,0); public Rational(long m,long n){ setm(m); setn(n); 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

26 3. LIMBAJUL JAVA – instrucțiuni
3.1. Instrucțiuni – Excepţii public Rational(long m){ this(m,1); } public void setm(long m){ this.m=m; public long getm(){ return m; public void setn(long n){ this.n=n; public long getn(){ return n; public Rational produs(Rational r){ return new Rational(m*r.m,n*r.n); public String toString(){ return m+"/"+n; 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

27 3. LIMBAJUL JAVA – instrucțiuni
3.1. Instrucțiuni – Excepţii public class RationalIred extends Rational { public RationalIred(){ super(); } public RationalIred(long m,long n) throws Exc{ setm(m); try{ setIn(n); catch(Exc e){throw e;} public void setIn(long n) throws Exc{ if (n!=0) super.setn(n); else throw new Exc(); 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

28 3. LIMBAJUL JAVA – instrucțiuni
3.1. Instrucțiuni – Excepţii private void simplifica(){ long x=getm(), y=getn(); while(x!=y){ if(x>y) x-=y; else y-=x; } setm(getm()/x); setn(getn()/x); public RationalIred produs(RationalIred r){ RationalIred p=new RationalIred(); p.setm(getm()*r.getm()); p.setn(getn()*r.getn()); p.simplifica(); return p; 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

29 3. LIMBAJUL JAVA – instrucțiuni
3.2 Exemple import java.io.*; import java.util.Scanner; import java.lang.Math.*; public class cmmdc1 { public static int CitLong (String sir){ Scanner scn = new Scanner(System.in); System.out.print(sir); return scn.nextInt(); } public static void main(String args[]) { long a,b,r; a=CitLong("da primul numar:"); b=CitLong("da inca un numar:"); System.out.print("Cmmdc-ul numerelor "+Math.abs(a)+" si "+Math.abs(b)+" este: "); do { r=Math.abs(a) % Math.abs(b); a=Math.abs(b); b=r; } while(r>0); System.out.println(a); 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

30 3. LIMBAJUL JAVA – instrucțiuni
3.2 Exemple import java.io.*; import java.lang.Math.*; import java.util.Scanner; public class cmmdcDif{ public static int CitLong (String sir){ Scanner scn = new Scanner(System.in); System.out.print(sir); return scn.nextInt(); } public static long cmmdcD(long a, long b){ while (a!=b) if (a>b) a=a-b; else b=b-a; return a; public static void main(String args[]){ long a,b; a=CitLong("da primul numar:"); b=CitLong("da inca un numar:"); System.out.print("Cmmdc-ul numerelor "+a+" si "+b+" este: "); System.out.println(cmmdcD(Math.abs(a),Math.abs(b))); 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni

31 3. LIMBAJUL JAVA – instrucțiuni
3.2 Exemple public class Arg1{ public static void main(String args[]){ System.out.println(args[0]); } După compilare se execută cu instrucţiunea D:\>java Arg1 Vasile Va afisa: Vasile 12/3/2018 POO - Cap. 3. LIMBAJUL JAVA – instrucțiuni


Download ppt "Programarea orientată pe obiecte (POO) Limbajul JAVA"

Similar presentations


Ads by Google