Transcript Document

Programare Orientata Obiect
Curs 2
Platforma Java
Clase si Obiecte
4/13/2015
Curs 2
1
Continutul cursului
1. Introducere
2. Platforma Java, Clase si Obiecte
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
2
Curs 2
1. Platforma Java
1.1 Masina Virtuala Java
1.2 Elemente de baza ale limbajului Java
2. Clase si Obiecte
2.1 Programare Procedurala si Programare Orientata Obiect
2.2 Conceptele de “Clasa” si “Obiect”
2.3 Membrii unei clase
2.3.1 Declararea membrilor unei clase
2.3.2 Initializarea campurilor
2.4 Metodele unei clase
2.4.1 Declararea metodelor
2.4.2 Invocarea metodelor
2.5 Metoda “main”
4/13/2015
Curs 2- Platforma Java, Clase si Obiecte
3
C2. Platforma Java
1.1 Masina Virtuala Java
• Garbage Collector
– Programatorul nu are control asupra alocarii memoriei (spre
deosebire de C/C++) .
– Mai simplu si mai robust (risc redus de probleme legate de
memorie)
– Ruleaza in background si elibereaza memoria (si) in timpul rularii
aplicatiei
• Just In Time compiler (JIT)
– Cunoscut si ca “Hot Spot”
– Optimizeaza codul in timpul rularii pentru cresterea performantei
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
4
C2. Platforma Java
1.1 Masina Virtuala Java
• Securitate
– Ofera control asupra drepturilor pe care le are aplicatia dezvoltate
– Exemple: operatii de citire/scriere din/in fisiere, deschiderea de
socket-uri, etc.
– Face ca Java sa fie un mediu sigur, o trasatura importanta pentru
sistemele distribuite
• Class Loading
– Incarcarea codului intermediar (bytecode) in masina virtuala pentru
executie
– Codul poate fi incarcat de pe discul local, din retea sau de pe
internet
– Permite descarcarea de aplicatii si applet-uri “on the fly”
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
5
C2. Platforma Java
1.2 Elemente de baza ale limbajului Java
• Tipuri de date
– 8 tipuri primitive:
• boolean, byte, short, int, long, float, double, char
– Clase
• String, Integer, Array, Frame, Object, Person, Animal, …
– Array
• Variabile
– dataType identifier [ = Expression]:
– Exemple de tipuri de date si de initializari:
int x;
x=5;
boolean b = true;
Frame win = new Frame();
String x = “Aplicatie Java”;
4/13/2015
int[] intArray;
intArray = new int[2];
intArray[0] = 12;
intArray[1] = 6;
Person pArray = new Person[10];
Curs 2 – Platforma Java, Clase si Obiecte
6
C2. Platforma Java
1.2 Elemente de baza ale limbajului Java
• Instructiuni
–
–
–
–
–
if, if-else, if-else if
switch
for, while, do-while
break
continue
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
7
C2. Clase si Obiecte
2.1 Programare Procedurala si Programare Orientata
Obiect
– Unitatea de baza in programarea procedura este functia,
in programarea orientata-obiect este clasa.
– Programarea procedurala se concentreaza pe construirea
de functii, pe cand POO porneste de la definirea claselor
si apoi defineste metode (functii) si membrii (variabile)
– Programarea procedurala separa datele de operatii, pe
cand POO se concentreaza pe ambele aspecte.
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
8
C2. Clase si Obiecte
2.2. Conceptele de “Clasa” si “Obiect”
– “Clasa” este un sablon. Defineste variabile si metode pe
care le suporta obiectul.
– “Object” este o instanta a clasei. Fiecare obiect are la
baza o clasa care defineste datele si comportamentul lor.
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
9
C2. Clase si Obiecte
2.2. Conceptele de “Clasa” si “Obiect”
• Declararea unei clase in Java:
[public][abstract][final]class NumeClasa
[extends NumeSuperclasa]
[implements Interfata1 [, Interfata2 ... ]]
{
// Corpul clasei – membrii clasei
}
• Crearea unui obiect (Instantiere)
NumeClasa numeObiect = new NumeClasa();
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
10
C2. Clase si Obiecte
2.3. Membrii unei clase
• O clasa are 3 tipuri de membrii:
– campuri: variabile care arata starea unei clase sau a
unui obiect
– metode: functii care permit schimbarea starii obiectului
sau accesul la valoarea unui camp
– clase si interfete imbricate
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
11
C2. Clase si Obiecte
2.3. Membrii unei clase
• Exemplu de clasa
class Pencil {
public String color = “red”;
public int length;
public float diameter;
public static long nextID = 0;
public void setColor (String newColor) {
color = newColor;
}
}
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
12
C2. Clase si Obiecte
2.3.1 Declarea membrilor unei clase
• tip_data numeMembru; sau
• tip_data numeMembru = val_initiala;
– Tipuri de data
• boolean, char, byte, short, int, long, float, double
– Modificatori optionali
• modificatori de acces (public, private, protected)
• static
• final
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
13
C2. Clase si Obiecte
2.3.2 Initializarea membrilor
– Nu neaparat cu constante
– Daca nu sunt initializati, se considera valoarea implicita
in functie de tip
Tip
Valoare initiala
boolean
char
byte, short, int, long
float
double
object reference
false
‘\u0000’
0
+0.0f
+0.0
null
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
14
C2. Clase si Obiecte
2.4 Metodele unei clase
2.4.1 Declararea metodelor
•
O metoda are 2 parti
1.
•
Header
• Costa din: modificatori (optionali), tip de data returnat,
numele metodei, lista de parametrii si clauza throws (optional)
2. Corp
Exemplu:
public class MyClass{
int day,month,year;
String getDate()
{
return " " + day + "/" + month + "/" + year;
}
}
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
15
C2. Clase si Obiecte
2.4.1 Declararea metodelor
• O clasa poate avea mai mult de o metoda cu acelasi nume
atat timp cat au lista de parametrii diferita.
public class Pencil {
. . .
public void setPrice (float newPrice) {
price = newPrice;
}
}
}
public void setPrice (Pencil p) {
price = p.getPrice();
• Cum stie compilatorul ce metoda sa apeleze?
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
16
C2. Clase si Obiecte
2.4.2 Invocarea (apelarea) metodelor
– Metodele sunt apelate ca operatii ale claselor sau
obiectelor prin folosirea operatorului punct (.)
referinta.metoda(argumente)
– Metode statice:
• In afara clasei: “referinta” poate fi sau un nume de clasa sau
un obiect instantiat din clasa
• In cadrul unei clase: “referinta” poate fi omis
– Metode nestatice:
• “referinta” trebuie sa fie un obiect instantiat
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
17
C2. Clase si Obiecte
2.4.2 Invocarea (apelarea) metodelor
– Parametrii sunt trimisi prin valoare
public void method1 (int a) {
a = 6;
}
public void method2 ( ) {
int b = 3;
method1(b);
// now b = ?
// b = 3
}
– Cand parametrul este un obiect, se trimite referinta la
obiectul respectiv, dar prin valoare (!!)
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
18
C2. Clase si Obiecte
2.4.2 Invocarea (apelarea) metodelor
class PassRef{
public static void main(String[] args) {
Pencil plainPencil = new Pencil("PLAIN");
System.out.println("original color: " + plainPencil.color);
paintRed(plainPencil);
System.out.println("new color: " + plainPencil.color);
}
public static void paintRed(Pencil p) {
p.color = "RED";
p = null;
}
}
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
19
C2. Clase si Obiecte
2.5 Metoda “main”
– Este punctul de intrare in program
– Masina virtuala localizeaza clasa in care se gaseste metoda
main si incepe executia programului
– Alte metode sunt apelate din main implicit sau explicit
– Trebuie sa fie public, static si void
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
20
C2. Clase si Obiecte
2.5 Metoda “main”
• Cand un program Java este lansat in linia de comanda pot fi adaugate
argumente ce sunt citite in program prin parametrul args[index]:
class Greetings {
public static void main (String args[]){
String name1 = args[0];
String name2 = args[1];
System.out.println("Hello " + name1 + “&“ +name2);
}
}
 Java Jacky Mary
Hello Jacky & Mary
• Important: Valorile introduse sunt de tip string! Pentru a fi analizate ca
valori numerice trebuie convertite.
4/13/2015
Curs 2 – Platforma Java, Clase si Obiecte
21