Sunteți pe pagina 1din 3

Limbaje de programare.

Laborator 2
1. Clasa, obiect, abstractizare
Clasa : descrie tipul obiectelor dintr-un program; poate fi asociat cu un ablon pentru crearea
i iniializarea obiectelor n memorie;
Obiectul: (sau instana) entitate bine determinat, construit conform definiiei unei
clase cruia i s-a alocat un anumit spaiu n memoria calculatorului.
Asemenea variabilelor care au identificator i tip, obiectele au i ele un identificator i un tip
, tipul fiind definit de ctre programator cu ajutorul claselor.
Convenii de reprezentare schematica claselor:

Exemplu: Clasa masina definiia tipului; Obiectul m de tipul sau din clasa Masina cu
caracteristicile effective.
Clasa/Tipul Obiectelor
Obiectul/Instanta m n
memorie
Masina m= new Masina()

Instaniere (new)

m.culoare = verde;
m.putere=100;
m.marca=Ford;
m.an_fabricatie=2009

m.accelereaza(90);

culoare: verde
putere: 100
marca: Ford
an_fabricatie: 2009
porneste() {} opreste()
{} accelereaza(90){}
->70 franeaza(100)>90
schimbaviteza(2,3){}
schimba_directia(stanga){}

2. Operatorul de atribuire
La atribuirea intre 2 variabile referinte catre obiecte, se face copierea intre referinte, ambele variabile
referind acelasi 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;
System.out.println("3: t1.level: " + t1.level + ", t2.level: " + t2.level);
//observam ca t1.level si t2.level au aceiasi valoare
}
}

3. Aliasing
La trimiterea unui obiect ca si argument intr-o metoda, se intampla Aliasing, adica atat variabila
din metoda cat si cea din exterior vor arata catre acelasi 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
System.out.println("2: x.c: " + x.c);
//x.c are valoare z - se trimite referinta la obiect ca si parametru si nu o copie a obiectului
}
}

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. 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 random intregi (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. Exercitii
Creati un program care citeste ca si intrare un numar intreg si afiseaza toate numele lui Fibonacci cel
mult egale cu numarul intreg citit la intrare. De exemplu, pentru valoarea 5 se afiseaza lista 1, 1, 2,
3,
5. Sirul lui Fibonacci: Fn = Fn-1 + Fn-2, F0=0, F1=1, n=2,n.