Sobes.tech
Junior

Mesélj az objektumorientált programozás (OOP) alapelveiről.

sobes.tech MI

Válasz az MI-től

Az OOP négy kulcsfontosságú elvre épül:

  1. Encapsuláció: Az adatok (tulajdonságok) és a velük dolgozó metódusok (függvények) összekapcsolása egy egységbe — az objektumba. Ez elrejti a megvalósítás részleteit, és kontrollált hozzáférést biztosít az adatokhoz.

    <?php
    class BankAccount {
        private float $balance = 0; // Rejtett adatok
    
        public function deposit(float $amount): void { // A metódusok hozzáférést biztosítanak
            if ($amount > 0) {
                $this->balance += $amount;
            }
        }
    
        public function getBalance(): float {
            return $this->balance;
        }
    }
    ?>
    
  2. Absztrakció: A lényeges jellemzők kiemelése és a lényegtelen részletek elrejtése. Egy leegyszerűsített modell a valós világról.

    <?php
    abstract class Shape { // Absztrakt osztály
        abstract public function area(): float; // Absztrakt metódus
    
        // Lehetnek konkrét metódusok is, például:
        public function getDescription(): string {
            return "Ez egy alakzat.";
        }
    }
    
    class Circle extends Shape {
        private float $radius;
    
        public function __construct(float $radius) {
            $this->radius = $radius;
        }
    
        public function area(): float { // Az absztrakt metódus megvalósítása
            return M_PI * $this->radius * $this->radius;
        }
    }
    ?>
    
  3. Öröklődés: Egy új osztály (gyermek) létrehozása egy meglévő (szülő) alapján, örökölve annak tulajdonságait és metódusait. Ez a kód újrahasznosítását segíti.

    <?php
    class Animal {
        protected string $name;
    
        public function __construct(string $name) {
            $this->name = $name;
        }
    
        public function eat(): void {
            echo "{$this->name} eszik.\n";
        }
    }
    
    class Dog extends Animal { // A Dog az Animal-tól örököl
        public function bark(): void {
            echo "{$this->name} mondja: Woof!\n";
        }
    }
    
    $dog = new Dog("Buddy");
    $dog->eat();  // Az örökölt metódus használata
    $dog->bark();
    ?>
    
  4. Polimorfizmus: Különböző osztályok objektumai ugyanarra a metódushívásra saját módjukon reagálnak. "Sokféleség".

    <?php
    interface Speakable { // Interfész a polimorfizmus példájához
        public function speak(): void;
    }
    
    class Cat implements Speakable {
        public function speak(): void {
            echo "Miau!\n";
        }
    }
    
    class Duck implements Speakable {
        public function speak(): void {
            echo "Kacsa!\n";
        }
    }
    
    function makeSound(Speakable $animal): void { // A függvény különböző típusú objektumokat fogad
        $animal->speak(); // Ugyanaz a metódushívás
    }
    
    $cat = new Cat();
    $duck = new Duck();
    
    makeSound($cat); // A Cat::speak() metódus hívása
    makeSound($duck); // A Duck::speak() metódus hívása
    ?>