Sobes.tech
Junior

Vertel me over de principes van objectgeoriënteerd programmeren (OOP).

sobes.tech AI

Antwoord van AI

OOP is gebaseerd op vier kernprincipes:

  1. Encapsulatie: Het samenvoegen van gegevens (eigenschappen) en methoden (functies) die met deze gegevens werken, in één object. Dit verbergt implementatiedetails en biedt gecontroleerde toegang tot de gegevens.

    <?php
    class BankAccount {
        private float $balance = 0; // Verborgen gegevens
    
        public function deposit(float $amount): void { // Methodes die toegang bieden
            if ($amount > 0) {
                $this->balance += $amount;
            }
        }
    
        public function getBalance(): float {
            return $this->balance;
        }
    }
    ?>
    
  2. Abstractie: Het benadrukken van de essentiële kenmerken van een object en het verbergen van niet-essentiële details. Het vertegenwoordigt een vereenvoudigd model van de echte wereld.

    <?php
    abstract class Shape { // Abstracte klasse
        abstract public function area(): float; // Abstracte methode
    
        // Kan concrete methoden hebben, bijvoorbeeld:
        public function getDescription(): string {
            return "This is a shape.";
        }
    }
    
    class Circle extends Shape {
        private float $radius;
    
        public function __construct(float $radius) {
            $this->radius = $radius;
        }
    
        public function area(): float { // Implementatie van de abstracte methode
            return M_PI * $this->radius * $this->radius;
        }
    }
    ?>
    
  3. Erfelijkheid: Het creëren van een nieuwe klasse (afgeleid) op basis van een bestaande (ouder), waarbij eigenschappen en methoden worden geërfd. Dit bevordert hergebruik van code.

    <?php
    class Animal {
        protected string $name;
    
        public function __construct(string $name) {
            $this->name = $name;
        }
    
        public function eat(): void {
            echo "{$this->name} is aan het eten.\n";
        }
    }
    
    class Dog extends Animal { // Dog erft van Animal
        public function bark(): void {
            echo "{$this->name} zegt Woof!\n";
        }
    }
    
    $dog = new Dog("Buddy");
    $dog->eat();  // Gebruik van de geërfde methode
    $dog->bark();
    ?>
    
  4. Polymorfisme: De mogelijkheid van objecten van verschillende klassen om op dezelfde methodeaanroep op verschillende manieren te reageren. "Veelvorm".

    <?php
    interface Speakable { // Interface voor voorbeeld van polymorfisme
        public function speak(): void;
    }
    
    class Cat implements Speakable {
        public function speak(): void {
            echo "Meow!\n";
        }
    }
    
    class Duck implements Speakable {
        public function speak(): void {
            echo "Quack!\n";
        }
    }
    
    function makeSound(Speakable $animal): void { // Functie accepteert verschillende objecttypes
        $animal->speak(); // Aanroep van dezelfde methode
    }
    
    $cat = new Cat();
    $duck = new Duck();
    
    makeSound($cat); // Aanroep van Cat::speak()
    makeSound($duck); // Aanroep van Duck::speak()
    ?>