Programare Multiparadigma-Java 01 PDF
Programare Multiparadigma-Java 01 PDF
• James Gosling, et. al, The Java Language Specification, 11th Edition, ORACLE, 2018,
https://docs.oracle.com/javase/specs/jls/se11/html/index.html
• Java Platform, Standard Edition & Java Development Kit v11 API Specification
https://docs.oracle.com/en/java/javase/11/docs/api/index.html
• Raymond Gallardo, et.al., The Java Tutorial, ORACLE, 2014
https://docs.oracle.com/javase/tutorial/tutorialLearningPaths.html
Evaluare și resurse
• Notare:
• 70% - examen
• 30% - seminar
• Resurse:
• http://online.ase.ro (parola arhiva cărți: biblio4java)
• http://ase.softmentor.ro
• http://acs.ase.ro
Java – caracteristici generale
• Limbaj de uz general
• Limbaj OO imperativ cu elemente funcționale
• Ierarhie aproape unică cu moștenire simplă pentru clase și
multiplă pentru interfețe
JavaFX
Java – Componentele platformei
• Java Virtual Machine (JVM)
• Mașina virtuală care rulează codul Java JDK
compilat în format Java bytecode
• Java Runtime Environment (JRE)
• Conține instrumentele necesare pentru javac
JRE
rularea aplicațiilor Java: mașina
virtuală (JVM) și biblioteca standard
Java (Java Class Library)
java / javaw
• javap (disassembler)
Anatomia unui program Java
• Un program Java este compus dintr-o serie de declarații de tipuri (clase,
interfețe, ...)
class Program {
public static void main(String[] args){
System.out.println("Buna Java!");
}
}
Alte instrumente:
jar – construire biblioteci (fișiere .jar)
javap – afișare detalii fișiere .class (metadate, dezasamblare)
Intrări / ieșiri la consolă
• Accesibile prin intermediul unor câmpuri statice ale clasei System:
• System.in – fluxul de intrare pentru citire date (de tip java.io.InputStream)
• System.out – fluxul de ieșire pentru afișare (de tip java.io.PrintStream)
• Afișare la consolă – se utilizează metodele clasei PrintStream:
• println(valoare) – valoarea poate fi un tip de bază (int, char, double, ...) sau un obiect
(caz în care se utilizează metoda toString)
• printf(stringFormatare, valori) – similar cu funcția printf din C
• Documentația completă pentru formatare:
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Fo
rmatter.html
• Exemplu:
System.out.println(“Salut!"); // afișează Salut!
System.out.println(111); // afișează 111
System.out.printf("%d + %d = %d", 11, 22, 33); // afișează 11 + 22 = 33
Citire de la consolă
• Pentru citire de la consolă se utilizează clasa java.util.Scanner care conține:
• Constructor care primește ca parametru un obiect de tip InputStream (System.in pentru
consolă)
• Metode de forma tip nextTip() și boolean hasNextTip() pentru citire și determinare
existență, unde tip este un tip de bază (int, boolean, ...)
• Metodă String nextLine() pentru citire șiruri de caractere până la sfârșitul liniei
(inclusiv spații)
• Metodă String next () pentru citire șiruri de caractere până la următorul separator
• Metodă setDelimiter(String) pentru setarea delimitatorului (implicit spații)
Exemplu:
var scanner = new Scanner(System.in);
scanner.useDelimiter("[\\s,\\,]+"); // acceptăm spații sau virgulă ca delimitatori
int cod = scanner.nextInt(); // introducem 3, Maria
String nume = scanner.next();
System.out.printf("#%d - %s", cod, nume); // afișează #3 - Maria
Variabile și Tipuri de date
• Declarare variabile
• Similar cu declarațiile din C:
int i = 11;
double k;
• Declarare constante
• Folosesc cuvântul cheie final:
final int NUMAR_MAXIM_ELEMENTE = 10;
• Metode de transformare:
• String toUpperCase() – transformare litere mici în litere mari
• String toLowerCase() – transformare litere mari în litere mici
• String trim() – eliminare spații de la începutul și sfârșitul șirului
Masive unidimensionale - Declarare
• Masivele unidimensionale (vector) sunt obiecte care:
• Conțin elemente de același tip (primitive sau
referințe)
• Au o dimensiune fixă specificată la inițializare
• Declarare și inițializare:
Student[] vStudenti; // declarare fără inițializare
int[] vector1 = new int[3]; // declarare și inițializare cu valori default
int[] vector2 = {1, 2, 4}; // declarare și inițializare cu literal
int[][][] cub = {
{{1, 2}, {3, 4}, {5, 6}},
{{1, 2}, {3, 4}, {5, 6}}
};
// o dimensiune a cubului este o matrice
int[][] m = cub[0]; // {{1, 2}, {3, 4}, {5, 6}}
int n = cub.length; // 2
// parcurgere cub
for (int[][] matrice : cub) {
for (int[] vector : matrice) {
for (int element : vector) {
System.out.println(element);
}
}
}