Sunteți pe pagina 1din 3

Laborator 2.

Programare orientată obiect

1. Clasa, obiect, abstractizare

Clasa: descrie tipul obiectelor dintr-un program; poate fi asociată cu un “şablon“ pentru crearea
şi iniţializarea obiectelor în memorie;

Obiectul: (sau instanţa) entitate bine determinată, “construit” conform definiţiei unei clase
căruia i s-a alocat un anumit spaţiu în memoria calculatorului.

Asemenea variabilelor care au identificator şi tip, obiectele au şi ele un identificator şi un tip,


tipul fiind definit de către programator cu ajutorul claselor.

Convenţii de reprezentare schematica claselor:

Exemplu: Clasa masina – definiţia tipului; Obiectul m de tipul sau din clasa Masina cu caracteristicile
efective.

Clasa/Tipul Obiectelor

100

Instanţiere (new)
2009

m.culoare = “verde”;

m.marca=”Ford”; accelereaza(90){} ->70


m.an_fabricatie=2009 franeaza(100)->90
……
m.accelereaza(90);
2. Operatorul de atribuire

La atribuirea între 2 variabile referințe către obiecte, se face copierea între referințe, ambele variabile
referind același obiect.
class Tank {
int level;
}
public class Assignment {
public static void main(String[] args) {
Tank t1 = new Tank(); //obiectul t1 din clasa Tank
Tank t2 = new Tank(); //obiectul t2 din clasa Tank
t1.level = 9; t2.level = 47;
//t1.level:9, t2.level:47
System.out.println("1: t1.level: " + t1.level + ", t2.level: " + t2.level);
//referinta catre t1 va pointa catre obiectul t2
t1 = t2;
System.out.println("2: t1.level: " + t1.level + ", t2.level: " + t2.level);
//t1.level = 27 va schimba valoarea level din t2 - atribuirea de mai sus
t1.level = 27;
//observam ca t1.level si t2.level au aceiasi valoare
System.out.println("3: t1.level: " + t1.level + ", t2.level: " + t2.level);
}
}

3. Aliasing

La trimiterea unui obiect ca și argument într-o metodă, se întâmplă Aliasing, adică atât variabila din metodă
cât și cea din exterior vor arăta către același obiect
class Letter {
char c;
}
public class PassObject {
static void f(Letter y) {
y.c = 'z'; }
public static void main(String[] args) {
Letter x = new Letter(); //creare obiect x din clasa Letter
x.c = 'a';
System.out.println("1: x.c: " + x.c); //x.c are valoarea a
f(x); //aliasing
//x.c are valoare z - se trimite referinta la obiect ca si parametru si nu o copie a obiectului
System.out.println("2: x.c: " + x.c);
}
}
4. Operatori pe String: + si +=
public class StringOperators {
public static void main(String[] args) {
int x = 0, y = 1, z = 2;
String s = "x, y, z ";
System.out.println(s + x + y + z);
System.out.print(x + " " + s); // conversie implicita a valorii x de la tipul int la String
s += "(summed) = "; // echivalent cu s=s+"(summed)="
System.out.println(s + (x + y + z));
System.out.print("" + x); // Shorthand for Integer.toString()-metoda de conversie a int->String
}
}

5. Sintaxa foreach – selecteaza un element dintr-un array


import java.util.*;
public class ForEachFloat {
public static void main(String[] args) {
Random rand = new Random(47); //obiect ce genereaza numere random
float f[] = new float[10]; // crearea arrayului de numere reale
for(int i = 0; i < 10; i++)
f[i] = rand.nextFloat(); // initializarea fiecarui element din array - parcurgere

for(float x : f) //parcurgere vector f element cu element


System.out.println(x);
/*echivalent cu: for(int i=0;i<f.length;i++)
* {
* x=f[i];
* System.out.println(x);
* }
*/
}
}

6. Instructiuni pentru controlul fluxului programului

Scrieti un program care genereaza 25 de numere aleatoare intregi (utilizand clasa Random). Pentru fiecare
din aceste numere utilizati o instructiune if-then-else pentru a testa daca numarul generat este mai mare,
mai mic sau egal cu urmatorul numar intreg generat random.

7. Sirul lui Fibonacci

Creati un program care citeste de la intrare un numar intreg si afiseaza toate numele lui Fibonacci cel
mult egale cu numarul intreg introdus de la tastatura. De exemplu, pentru valoarea 5 se afiseaza
secventa 1, 1, 2, 3, 5. Sirul lui Fibonacci: Fn = Fn-1 + Fn-2, F0=0, F1=1, n=2,n.

S-ar putea să vă placă și