Sobes.tech
Junior

Ce știi despre paradigma orientată pe obiect?

sobes.tech AI

Răspuns de la AI

Programarea orientată pe obiect (POO) este un paradigm de programare bazat pe conceptul de "obiecte", care pot conține date (câmpuri sau proprietăți) și cod (metode sau proceduri). Principiile de bază ale POO:

  • Încapsulare: Combinarea datelor și a metodelor care lucrează cu aceste date într-un singur bloc (clasă), ascunzând implementarea internă de lumea exterioară. Acest lucru se realizează prin modificatori de acces (public, protected, private).
  • Moștenire: Permite crearea de noi clase (clase derivate) care moștenesc proprietățile și metodele claselor existente (clase părinte). Acest lucru favorizează reutilizarea codului și organizarea în ierarhii.
  • Polimorfism: Capacitatea de a folosi aceeași interfață pentru diferite tipuri de date sau obiecte. În PHP, acest lucru se realizează prin moștenire, interfețe și clase abstracte, permițând obiectelor din clase diferite să răspundă diferit la aceeași apelare de metodă.
  • Abstracție: Evidențierea celor mai esențiale caracteristici ale unui obiect și ignorarea detaliilor mai puțin importante. În PHP, abstracția se atinge prin clase abstracte și interfețe.

Concepte suplimentare legate de POO:

  • Clase: Modele pentru crearea obiectelor, definind structura (proprietățile) și comportamentul (metodele) acestora.
  • Obiecte: Instanțe ale claselor.
  • Interfețe: Definirea unui set de metode pe care o clasă trebuie să le implementeze.
  • Traits: Un mecanism de reutilizare a codului în PHP, permițând claselor să utilizeze metode din mai multe traits.

OOP promovează modularitatea, flexibilitatea, reutilizarea codului și facilitează dezvoltarea și întreținerea aplicațiilor mari.

<?php

// Exemplu de clasă
class Car {
    // Proprietate (încapsulare)
    private $model;

    // Constructor
    public function __construct($model) {
        $this->model = $model;
    }

    // Metodă
    public function startEngine() {
        echo "Motorul de " . $this->model . " a fost pornit.\n";
    }
}

// Exemplu de moștenire
class ElectricCar extends Car {
    public function startEngine() { // Polimorfism
        echo "Motor electric de " . $this->model . " pornit silențios.\n";
    }
}

// Crearea obiectelor
$myCar = new Car("Sedan");
$myCar->startEngine();

$myElectricCar = new ElectricCar("Vehicul electric");
$myElectricCar->startEngine();

?>