Junior
Ce este programarea orientată pe obiecte (POO) în Java?
sobes.tech AI
Răspuns de la AI
Programarea orientată pe obiect în Java este un paradigm bazat pe conceptul de "obiecte", care conțin date (proprietăți) și metode (acțiuni).
Principiile de bază ale OOP în Java:
- Încapsulare: Ascunderea datelor și metodelor în interiorul unui obiect, accesul la acestea fiind posibil doar prin interfețe specifice. Asigură securitatea datelor și modularitatea.
- Moștenire: Permite crearea de noi clase (subclase) pe baza claselor existente (superclase), moștenind proprietățile și metodele acestora. Favorizează reutilizarea codului.
- Polimorfism: Permite utilizarea obiectelor din clase diferite printr-o interfață comună. Oferă flexibilitate și extensibilitate. Se distinge între polimorfismul în timpul compilării (supraincarcarea metodelor) și în timpul execuției (suprascrierea metodelor).
- Abstractizare: Evidențiază caracteristicile esențiale ale unui obiect și ascunde detaliile nesemnificative. Ajută la simplificarea sistemelor complexe.
Exemplu de clasă în Java:
public class Car {
private String marca; // Proprietate încapsulată
private String model;
private int an;
public Car(String marca, String model, int an) { // Constructor
this.marca = marca;
this.model = model;
this.an = an;
}
public void displayInfo() { // Metodă
System.out.println("Marcă: " + marca + ", Model: " + model + ", An: " + an);
}
// Getteri și setteri (pentru accesul la proprietățile private)
public String getMarca() {
return marca;
}
public void setMarca(String marca) {
this.marca = marca;
}
}
Exemplu de utilizare a principiilor OOP:
// Moștenire
public class ElectricCar extends Car {
private int capacitateBaterie;
public ElectricCar(String marca, String model, int an, int capacitateBaterie) {
super(marca, model, an); // Apelarea constructorului clasei părinte
this.capacitateBaterie = capacitateBaterie;
}
@Override // Polimorfism (suprascrierea metodei)
public void displayInfo() {
super.displayInfo(); // Apelarea metodei clasei părinte
System.out.println("Capacitate Baterie: " + capacitateBaterie + " kWh");
}
}
// Utilizarea obiectelor
public class Main {
public static void main(String[] args) {
Car masinaMea = new Car("Toyota", "Camry", 2020);
Car masinaMeaElectrica = new ElectricCar("Tesla", "Model 3", 2022, 75);
masinaMea.displayInfo();
masinaMeaElectrica.displayInfo(); // Polimorfism în acțiune
}
}
Avantajele OOP:
- Reutilizarea codului: Prin moștenire.
- Ușurința întreținerii: Modificările afectează doar obiectele sau clasele specifice.
- Flexibilitate și extensibilitate: Datorită polimorfismului.
- O mai bună organizare a codului: Împărțirea sistemului în module (obiecte).
- Securitatea datelor: Prin încapsulare.