OOP (Object-Oriented Programming) este un mod de a structura codul în jurul conceptului de obiecte, care conțin date (atribute) și comportamente (metode). Limbajul Java este construit în jurul acestui concept.
1.Încapsularea (Encapsulation)
Definiție:
Încapsularea presupune ascunderea detaliilor interne ale unui obiect și oferirea unui mod sigur de a interacționa cu acesta prin metode publice.
`class ContBancar {
private double sold; // Variabilă ascunsă (private)
// Metodă publică pentru a depune bani
public void depune(double suma) {
if (suma > 0) {
sold += suma;
}
}
// Metodă publică pentru a verifica soldul
public double getSold() {
return sold;
}
}`
Atributul sold este protejat (nu poate fi accesat direct), dar avem metode prin care interacționăm cu el în mod controlat.
2. Moștenirea (Inheritance)
Definiție:
Moștenirea permite unei clase să preia atributele și metodele unei clase "părinte", reducând codul redundant.
`class Animal {
void vorbeste() {
System.out.println("Animalul face un sunet");
}
}
class Caine extends Animal {
void latra() {
System.out.println("Ham ham!");
}
}
public class Test {
public static void main(String[] args) {
Caine caine = new Caine();
caine.vorbeste(); // moștenit de la Animal
caine.latra(); // definit în Caine
}
}`
Clasa Caine moștenește metoda vorbeste() de la clasa Animal.
3. Polimorfismul (Polymorphism)
Definiție:
Polimorfismul înseamnă că un obiect poate avea mai multe forme – o metodă poate avea comportamente diferite în funcție de obiectul care o apelează.
`class Animal {
void vorbeste() {
System.out.println("Animalul face un sunet");
}
}
class Pisica extends Animal {
void vorbeste() {
System.out.println("Miau miau!");
}
}
class Caine extends Animal {
void vorbeste() {
System.out.println("Ham ham!");
}
}
public class Test {
public static void main(String[] args) {
Animal a1 = new Pisica();
Animal a2 = new Caine();
a1.vorbeste(); // Miau miau!
a2.vorbeste(); // Ham ham!
}
}`
Deși a1 și a2 sunt de tip Animal, metodele apelate sunt cele suprascrise în Pisica și Caine.
4. Abstracția (Abstraction)
Definiție:
Abstracția presupune definirea unei interfețe sau a unei structuri generale fără a specifica implementarea exactă.
`abstract class Vehicul {
abstract void porneste(); // metodă abstractă
void descriere() {
System.out.println("Este un vehicul.");
}
}
class Masina extends Vehicul {
void porneste() {
System.out.println("Motorul mașinii pornește!");
}
}
public class Test {
public static void main(String[] args) {
Vehicul v = new Masina();
v.porneste(); // Motorul mașinii pornește!
v.descriere(); // Este un vehicul.
}
}`
Clasa Vehicul definește o idee generală, iar clasa Masina oferă o implementare concretă a metodei porneste().
Concluzii
Programarea Orientată pe Obiecte este o metodă excelentă de a scrie cod clar, modular și reutilizabil. Java oferă suport complet pentru OOP și este unul dintre cele mai bune limbaje pentru a învăța acest stil de programare.