Sobes.tech
Junior

Дар бораи принсипҳои барномасозии объектӣ (OOP) нақл кунед.

sobes.tech AI

Ҷавоб аз AI

Объектӣ-ҳарфӣ (ООП) асос ёфтааст ба чор принсипи калидӣ:

  1. Инкапсулятсия: пайваст кардани маълумотҳо (хусусиятҳо) ва методҳо (функсияҳо), ки бо ин маълумотҳо кор мекунанд, дар як воҳид — объект. Ин тафсилоти иҷроишро пинҳон мекунад ва дастрасии назоратшударо ба маълумотҳо таъмин мекунад.

    <?php
    class BankAccount {
        private float $balance = 0; // Маълумоти пинҳоншуда
    
        public function deposit(float $amount): void { // Методҳо дастрасиро таъмин мекунанд
            if ($amount > 0) {
                $this->balance += $amount;
            }
        }
    
        public function getBalance(): float {
            return $this->balance;
        }
    }
    ?>
    
  2. Абстраксия: Тақвият додани хусусиятҳои муҳим ва пинҳон кардани тафсилоти нолозим. Намоянда модели соддашудаи ҷаҳони воқеӣ.

    <?php
    abstract class Shape { // Класси абстрактӣ
        abstract public function area(): float; // Метод абстрактӣ
    
        // Мумкин аст, ки методҳои мушаххас ҳам дошта бошад:
        public function getDescription(): string {
            return "Ин шакл аст.";
        }
    }
    
    class Circle extends Shape {
        private float $radius;
    
        public function __construct(float $radius) {
            $this->radius = $radius;
        }
    
        public function area(): float { // Иҷрои методи абстрактӣ
            return M_PI * $this->radius * $this->radius;
        }
    }
    ?>
    
  3. Наслӣ: Эҷоди класи нав (фарзанд) аз асосӣ (вале). Ин барои такрории истифодаи коди кӯмак мерасонад.

    <?php
    class Animal {
        protected string $name;
    
        public function __construct(string $name) {
            $this->name = $name;
        }
    
        public function eat(): void {
            echo "{$this->name} мехӯрад.\n";
        }
    }
    
    class Dog extends Animal { // Dog аз Animal мерос мегирад
        public function bark(): void {
            echo "{$this->name} мегӯяд: Woof!\n";
        }
    }
    
    $dog = new Dog("Buddy");
    $dog->eat();  // Истифодаи методи меросӣ
    $dog->bark();
    ?>
    
  4. Полиморфизм: Имконият барои объектҳои класи гуногун, ки ба як даъвати метод, ба роҳҳои гуногун ҷавоб медиҳанд. "Множество шаклҳо".

    <?php
    interface Speakable { // Интерфейс барои намунаи полиморфизм
        public function speak(): void;
    }
    
    class Cat implements Speakable {
        public function speak(): void {
            echo "Мяу!\n";
        }
    }
    
    class Duck implements Speakable {
        public function speak(): void {
            echo "Кря!\n";
        }
    }
    
    function makeSound(Speakable $animal): void { // Функсия, ки намудҳои гуногуни объектҳоро қабул мекунад
        $animal->speak(); // Ҳамон методро даъват мекунад
    }
    
    $cat = new Cat();
    $duck = new Duck();
    
    makeSound($cat); // Даъвати методи Cat::speak()
    makeSound($duck); // Даъвати методи Duck::speak()
    ?>