C02
C02
Octombrie 2024
1/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Agenda
4 Clase s, i Obiecte
2/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
3/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
4/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
5/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
6/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Clase ı̂nvelitoare
Boxing s, i unboxing
7/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Clase ı̂nvelitoare
Boxing şi Unboxing automat
class WrapperDemo{
WrapperDemo(){}
void takeNumber(Integer i){System.out.println("i este " + i);}
int giveNumber(){ Integer a = 20; return a; }
}
public class WrapperExamples{
public static void main(String args[]){
WrapperDemo w = new WrapperDemo();
//argumente pentru metode
w.takeNumber(12);
//valori returnate
int x = w.giveNumber();
System.out.println("x " + x);
Boolean b = true;
if (b) {System.out.println("true");} //Expresii boolean
Integer a = 23;
a++; // Operatii cu numere
System.out.println("a este " + a);
Double j = 1098.2;
Double k = j + 2; //Atribuiri
System.out.println("k este "+ k);
} 8/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
9/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Clasa String
Nu există un tip primitiv pentru şiruri ı̂n Java; Clasa String este o
clasă Java predefinită folosită la stocarea şi prelucrarea şirurilor de
caractere
Obiectele de tipul String sunt compuse din şiruri de caractere scrise
ı̂ntre ghilimele; Orice şir scris ı̂ntre ghilimele este de clasă String:
”Curs de POO”
Metode de creare a unui String ı̂n Java:
String s1 = "CursJAVA";
String s2 = new String ("Curs");
11/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Clasa String
Metode pentru a compara String-uri
Clasa String
Metode ale clasei String
Seturi de caractere
14/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Toate obiectele sunt create ı̂n memorie (pe heap – zona de memorie
unde se face alocarea dinamică)
Pentru a accesa datele dintr-un obiect sau a lucra cu un obiect, este
nevoie de o variabilă pe stivă, variabilă care poate stoca o referinţă la
adresa obiectului
Despre variabilele care stochează referinţe la adrese de obiecte se
spune că păstrează tipul de date referinţă
Exemplu: Dog t = new Dog(”Patrocle”);
ı̂n Java nu exista variabile obiecte, exista variabile referint, ă la obiecte
O variabila referinta stocheaza biti care reprezinta modalitatea de a
accesa un obiect.
Nu stocheaza obiectul in sine, ci stocheaza o adresa.
15/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
16/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Compararea obiectelor
17/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Exerict, iu
Formular de Înregistrare cu Validare ı̂n Java
Exercitiu
exemplu metode
import java.util.Scanner;
...
public static Boolean containsOnlyDigits(String str){
for (char c : str.toCharArray()) {
System.out.print(c);
if (!Character.isDigit(c)) return false;
}
return true;
}
public static void main(String[] args) {
String nume;
//citire de la tastatura - user input
Scanner reader = new Scanner(System.in);
System.out.println("Dati numele: ");
nume = reader.nextLine();
...
}
19/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Exercitiu
Validare adresa email: java.util.regex.*
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Demo {
public static boolean validEmail(String email) {
String emailRegex = "ˆ[a-zA-Z0-9_+&*-]+(?:\\."+
"[a-zA-Z0-9_+&*-]+)*@" +
"(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
Pattern pat = Pattern.compile(emailRegex);
if (email == null) return false;
return pat.matcher(email).matches();
}
20/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
21/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Operatori in JAVA
Vedet, i lucrarea de laborator
22/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Precedent, a operatorilor
23/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Instructiunea if
if (<expresie booleană>)
<then> Instr1
else
<else> Instr 2
Sau:
(<expresie booleană>)? Instr1 : Instr2
ex: int max = (a>b)? a:b;
24/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Sugestii pentru if
Începeţi testul cu cazul cel mai relevant
Face codul mai uşor de citit
Nu uitaţi de clauza else!
Evitaţi condiţiile complicate
Divizaţi condiţiile ı̂n variabile/funcţii booleene
Încercaţi să folosiţi condiţii pozitive
Exemplu – se preferă a doua variantă
//varianta 1
if (!node.isFirst() && node.value() != null)
instr1
else
instr2
//varianta 2
if (node.isFirst() || node.value() == null)
instr2
else
instr1
25/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Instructiunea switch
Sintaxa s, i exemplu
switch(expresie) {
case x: // code block
break;
case y: // code block
break;
default: // code block
}
Tipul de dată al < expresie >s trebuie să fie char, byte, short, int
int month = 8; String monthString;
switch (month) {
case 1: monthString = "January";
break;
case 2: monthString = "February";
break;
//. . .
case 12: monthString = "December";
break;
default: monthString = "Invalid month";
break;
}
System.out.println(monthString); 26/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
27/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
28/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
29/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Exemplu: for
30/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Exemplu:
for pentru iteraţii peste colecţii şi tablouri
31/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
32/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Numirea constantelor
33/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Comentarii:
Comentariu de o linie: ı̂ncepe cu simbolurile // şi provoacă ignorarea
a ceea ce urmează până la sfârşitul liniei
Comentariul bloc: La fel ca ı̂n C (perechea /*, */); Furnizează
documentaţie utilizatorilor programului
Documentarea programului:
Java include programul javadoc care extrage automat documentaţia
din comentariile bloc din clasele definite, dacă ı̂nceputul
comentariului are un asterisc suplimentar (/**)
Un program bine scris este autodocumentat: structura sa se clarifică
prin alegerea numelor de identificatori şi modelul de indentare
34/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Clase s, i Obiecte
35/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
//CONSTRUCTOR:
//construct a Taxi copying in the data into the instance
variables
public Taxi(String initDriver, int initKm){
driver = initDriver;
km = initKm;
}
// METODE
public void print() {
System.out.println("Taxi Driver: " + driver);
System.out.println("Total Killometers: " + km);
}
public int getKm(){
return km;
}
public void drive(int kms){
this.km += kms;
}
36/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Constructorii
Cod:
public Taxi() ...
37/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Constructori multipli
O operaţie ”new” ı̂ncununată
public class Taxi de succes creează un obiect
{ // VARIABILE INSTANTA pe heap şi execută
private String driver;
private int km; constructorul al cărui listă de
parametri ”corespunde” listei
//CONSTRUCTORI MULTIPLI:
public Taxi(){
sale de argumente (ca număr,
km = 0; tip, ordine).
driver = "Unknown";
}
public Taxi(String initDriver, int
initKm){
driver = initDriver;
km = initKm;
}
public static void main(String[] args
){
Taxi t = new Taxi();
}
}
38/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
39/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Factory method
40/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Metode
Scop:
Execută comportamentul obiectului
Cod:
public void turnLeft() ...
41/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
42/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
43/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
44/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
46/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Clase:
Clasa Taxi:
Câmpuri: taxiID, model, numărDeÎnmatriculare, status (disponibil,
ı̂nCursă, ı̂nMentenant, ă)
Metode: getters/setters, displayTaxiDetails(), updateStatus()
Clasa S, ofer:
Câmpuri: driverID, nume, numărPermis, taxiAtribuit
Metode: getters/setters, displayDriverDetails()
Clasa Client:
Câmpuri: clientID, nume,
Metode: getters/setters, displayCientDetails()
Clasa Adresa:
Câmpuri: strada, numar, oras, tara
Metode: getters/setters, displayAddressDetails()
47/ 48
Tipuri de date ı̂n Java Operatori s, i structuri de control Constante, comentarii, documentat, ie ı̂n JAVA Clase s, i Obiecte
Concluzii s, i discut, ii
48/ 48