Programare Orientata Obiect

21
06/10/22 Curs 2 1 Programare Orientata Obiect Curs 2 Platforma Java Clase si Obiecte

description

Programare Orientata Obiect. Curs 2 Platforma Java Clase si Obiecte. Continutul cursului. Introducere Platforma Java, Clase si Obiecte. Curs 2. Platforma Java 1.1 Masina Virtuala Java 1.2 Elemente de baza ale limbajului Java 2. Clase si Obiecte - PowerPoint PPT Presentation

Transcript of Programare Orientata Obiect

Page 1: Programare Orientata Obiect

04/20/23 Curs 2 1

Programare Orientata Obiect

Curs 2Platforma Java

Clase si Obiecte

Page 2: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 2

Continutul cursului1. Introducere2. Platforma Java, Clase si Obiecte

Page 3: Programare Orientata Obiect

04/20/23 Curs 2- Platforma Java, Clase si Obiecte 3

Curs 2

1. Platforma Java1.1 Masina Virtuala Java1.2 Elemente de baza ale limbajului Java

2. Clase si Obiecte2.1 Programare Procedurala si Programare Orientata Obiect2.2 Conceptele de “Clasa” si “Obiect”2.3 Membrii unei clase

2.3.1 Declararea membrilor unei clase2.3.2 Initializarea campurilor

2.4 Metodele unei clase2.4.1 Declararea metodelor2.4.2 Invocarea metodelor

2.5 Metoda “main”

Page 4: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 4

C2. Platforma Java1.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

Page 5: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 5

C2. Platforma Java1.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”

Page 6: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 6

C2. Platforma Java1.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”;

int[] intArray;intArray = new int[2];intArray[0] = 12;intArray[1] = 6;Person pArray = new Person[10];

Page 7: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 7

C2. Platforma Java1.2 Elemente de baza ale limbajului Java

• Instructiuni– if, if-else, if-else if– switch– for, while, do-while– break– continue

Page 8: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 8

C2. Clase si Obiecte2.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.

Page 9: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 9

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.

Page 10: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 10

C2. Clase si Obiecte2.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();

Page 11: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 11

C2. Clase si Obiecte2.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

Page 12: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 12

C2. Clase si Obiecte2.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;

}

}

Page 13: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 13

C2. Clase si Obiecte2.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

Page 14: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 14

C2. Clase si Obiecte2.3.2 Initializarea membrilor

– Nu neaparat cu constante– Daca nu sunt initializati, se considera valoarea

implicita in functie de tipTip Valoare initialaboolean falsechar ‘\u0000’byte, short, int, long 0float +0.0fdouble +0.0object reference null

Page 15: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 15

C2. Clase si Obiecte2.4 Metodele unei clase2.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; }

}

Page 16: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 16

C2. Clase si Obiecte2.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?

Page 17: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 17

C2. Clase si Obiecte2.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

Page 18: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 18

C2. Clase si Obiecte2.4.2 Invocarea (apelarea) metodelor

– Parametrii sunt trimisi prin valoarepublic 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 (!!)

Page 19: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 19

C2. Clase si Obiecte2.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;

}

}

Page 20: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 20

C2. Clase si Obiecte2.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

Page 21: Programare Orientata Obiect

04/20/23 Curs 2 – Platforma Java, Clase si Obiecte 21

C2. Clase si Obiecte2.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 MaryHello Jacky & Mary

• Important: Valorile introduse sunt de tip string! Pentru a fi analizate ca valori numerice trebuie convertite.