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() методун чакыруу
    ?>