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} ამბობს: 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 "მiau!\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()
    ?>