Sobes.tech
Junior

Pastāstiet par objektorientētās programmēšanas (OOP) principiem.

sobes.tech AI

Atbilde no AI

Objektorientētā programmēšana (OOP) balstās uz četrām galvenajām principiem:

  1. Iekapsulēšana: Datu (īpašību) un metožu (funkciju), kas ar šiem datiem strādā, apvienošana vienā veselumā — objektā. Tas slēpj īstenošanas detaļas un nodrošina kontrolētu piekļuvi datiem.

    <?php
    class BankAccount {
        private float $balance = 0; // Slēptie dati
    
        public function deposit(float $amount): void { // Metodes nodrošina piekļuvi
            if ($amount > 0) {
                $this->balance += $amount;
            }
        }
    
        public function getBalance(): float {
            return $this->balance;
        }
    }
    ?>
    
  2. Abstrakcija: Svarīgo īpašību izcelšana un nesvarīgo detaļu slēpšana. Vienkāršots reālas pasaules modelis.

    <?php
    abstract class Shape { // Abstrakta klase
        abstract public function area(): float; // Abstrakta metode
    
        // Var būt arī konkrēti metodes, piemēram:
        public function getDescription(): string {
            return "Šis ir forma.";
        }
    }
    
    class Circle extends Shape {
        private float $radius;
    
        public function __construct(float $radius) {
            $this->radius = $radius;
        }
    
        public function area(): float { // Abstraktās metodes realizācija
            return M_PI * $this->radius * $this->radius;
        }
    }
    ?>
    
  3. Mantošana: Jaunas klases (bērna) izveide, pamatojoties uz esošo (vecāku), mantojot tās īpašības un metodes. Tas veicina koda atkārtotu izmantošanu.

    <?php
    class Animal {
        protected string $name;
    
        public function __construct(string $name) {
            $this->name = $name;
        }
    
        public function eat(): void {
            echo "{$this->name} ēd.\n";
        }
    }
    
    class Dog extends Animal { // Dog manto no Animal
        public function bark(): void {
            echo "{$this->name} saka: Woof!\n";
        }
    }
    
    $dog = new Dog("Buddy");
    $dog->eat();  // Mantoētās metodes izmantošana
    $dog->bark();
    ?>
    
  4. Polimorfisms: Spēja dažādu klases objektu reaģēt uz vienu un to pašu metodes izsaukumu dažādos veidos. "Daudzveidība".

    <?php
    interface Speakable { // Interfeiss polimorfisma piemēram
        public function speak(): void;
    }
    
    class Cat implements Speakable {
        public function speak(): void {
            echo "Mau!\n";
        }
    }
    
    class Duck implements Speakable {
        public function speak(): void {
            echo "Kvak!\n";
        }
    }
    
    function makeSound(Speakable $animal): void { // Funkcija pieņem dažādu tipu objektus
        $animal->speak(); // Izsauc to pašu metodi
    }
    
    $cat = new Cat();
    $duck = new Duck();
    
    makeSound($cat); // Izsauc Cat::speak()
    makeSound($duck); // Izsauc Duck::speak()
    ?>