Documente Academic
Documente Profesional
Documente Cultură
2011 Curs 1
Obiective
Introducere in analiza si proiectarea sistemelor soft folosind paradigma orientata obiect. Aprofundarea programarii orientata obiect (limbajul Java). Interfete grafice Sabloane de proiectare Spring
Bibliografie
Bruce Eckel, Thinking in Java, Ed. Prentice Hall, 4th edition, 2006. E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns Elements of Reusable Object Oriented Software, Ed. Addison Wesley, 1994. Kent Beck, Test Driven Development: By Example, Ed. Addison-Wesley Professional, 2002. Craig Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, Ed. Addison Wesley, 2004. Tutoriale Java http://download.oracle.com/javase/tutorial/
Nota finala
Nota laborator, L, 40%. Nota examen scris, S, 25%. Nota examen practic, P, 35%. Nota finala, NF=(40*L+25*S+35*P)/100. Conditii: L>=5, P>=5.
Continut curs 1
Introducere in analiza si proiectarea orientata obiect. Introducere in Java. Elemente de baza
Observatie: Specificarea poate sa contina diagrame aditionale, o schita a interfetei grafice, etc.
Preconditii:
Angajatul trebuie sa fie autentificat pentru a putea folosi sistemul.
Postconditii:
Daca rezervarea s-a efectuat cu succes, o noua inregistrare a fost creata in baza de date pentru rezervare, si numarul de locuri disponibile pentru cursa aleasa a fost actualizat. Daca rezervarea a esuat, baza de date ramane nemodificata.
Cerinte speciale:
O rezervare nu ar trebui sa dureze mai mult de 1 minut.
Introducere
Variabile
Declararea variabilelor:
tip nume_var1[=expresie1][, nume_var2[=expresie2]];
Introducere
Exemple
boolean gasit=true; int numar=34, suma; float eroare=0.45; char litera=c; litera=f; litera=litera+1;
Introducere - Comentarii
3 moduri:
1. // toata linia 2. /* mai multe
linii */
3. /**
Introducere
Constante:
Declararea:
final tip nume_constanta[=valoare];
int MAX;
MAX=150; //eroare
Tablouri
Unidimensionale: definirea unui tablou se face in 2 pasi
Declararea:
tip[] nume_ tablou; tip nume_ tablou[];
Crearea:
nume_tablou=new tip[dim]; //se aloca spatiul in memorie //indexarea 0 dim-1
Exemple:
float[] vec; vec=new float[10]; int[] sir=new int[3]; float tmp[]; tmp=vec; //vec si tmp refera acelasi tablou
Tablouri unidimensionale
Variabila length: returneaza dimensiunea tabloului.
int[] sir=new int[5]; int lung_sir=sir.length; sir[0]=sir.length; sir.length=2; int[] y; int lung_y=y.length; //eroare, y nu a fost inca creat //eroare //lung=5;
Creare si initializare
int[] dx={-1,0, 1};
Crearea:
nume_tablou=new tip[dim1][dim2][dimn];
Exemple:
int[][] a; a=new int[5][5]; a[0][0]=2; int x=a[2][2]; //x=?
Declarare+creare+initializare:
char[][] lit={{a},{b}}; int[][] b={{1,2}, {2,5,8}, {1}}; double[][] mat=new double[][]{{1.3, 0.5}, {2.3, 4.5}};
Siruri de caractere
char[] sir={a,n,a}; //compararea si tiparirea se //fac caracter cu caracter sir[0]=A;
Clasa String:
String s=abc; s=s+123; t+=12; //concatenarea a 2 siruri //t=?, s=? String t=s; //t=abc123
Egalitatea a doua siruri de caractere, metoda equals(): t.equals(s) Compararea a doua siruri, metoda
compareTo(): int rez=t.compareTo(s)
Operatori
aritmetici:
+, -, *, /, % >=, <, <=, !=, == ++, --
relationali: >,
prefixat: postfixat:
incrementare/decrementare:
int a=2;
int b=++a; //a=?, b=? int a=2; int b=a++; //a=?, b=? =, +=, -=, *=, /= &&, ||, ! >>, <<, >>>, &, |, ~ (not), ^ (sau exclusiv)
atribuirea: pe biti:
-
conditionali:
shift
ex: expresie_logica ? expresie1 : expresie2 Daca expresie_logica este adevarata atunci expresie1 altfel expresie2
Prioritatea operatorilor
Prioritatea 1. Postfix 2. Unari 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Operatori expr++ expr-++expr --expr +expr -expr ~ ! * / % + << >> >>> < > <= >= instanceof == != & ^ | && || ? : = += -= *= /= %= &= ^= |= <<= >>= >>>=
Instructiuni
Instructiunea compusa:
{ instructiune1; instructiune2; }
Daca:
if (expresie_logica) instructiune; if (expresie_logica) instructiune1; else instructiune2;
false.
Nu se
Instructiuni
Instructiunea while:
while(expresie_booleana) instructiune
Instructiunea do-while:
do instructiune while(expresie_booleana);
Instructiuni
Instructiunea for:
for(initializari; expresie_booleana; pas) instructiune
expresie_booleana, pas
Instructiuni
Sintaxa foreach (JSE >=5):
for(Tip numeElem : numeTablou) instructiune; int[] x={1, 4, 6, 9, 10}; for(int el:x) System.out.println(el); for(int i=0;i<x.length;i++) System.out.println(x[i]);
//?
Instructiuni
Instructiunea return:
return; return valoare;
Instructiunea
break:
int[] x= { 2, 8, 3, 5, 12, 8, 62}; int elem = 8; boolean gasit = false; for (int i = 0; i < x.length; i++) { if (x[i] == elem) { gasit = true; break; } }
Instructiuni
Instructiunea
continue:
sare peste iteratia curenta din interiorul unui ciclu (for, while, dowhile) . opreste executia instructiunilor din interiorul unui ciclu si determina reevaluarea expresiei booleene.
int[] x= { 2, 8, 3, 5, 12, 8, 62}; int elem = 8; int nrApar=0; for (int i = 0; i < x.length; i++) { if (x[i] != elem) continue; nrApar++; }
Instructiuni
Instructiunea
switch:
[break;] [break;] [break;] [break;] [break;] switch(integral-selector) { case integral-value1 : statement; case integral-value2 : statement; case integral-value3 : statement; case integral-value4 : statement; case integral-value5 : statement; // ... default: statement; }
Instructiuni
Instructiunea
switch:
1: 3: 5: 7: 8: 10: 12: nrZile = 31; break; 4: 6: 9: 11: nrZile = 30; break; 2: if ( anBisect(an) ) nrZile = 29; else nrZile = 28; break; default: System.out.println(Luna invalida"); switch (luna) { case case case case case case case case case case case case
Compilare:
javac Test.java
Rulare:
java Test java Test ana 1 2 3