Documente Academic
Documente Profesional
Documente Cultură
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);
*
}
*/
}
}