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 ժառանգում է from Animal
        public function bark(): void {
            echo "{$this->name} ասում է՝ Վուֆ!\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()
    ?>