Junior
Rääkige objektorienteeritud programmeerimise (OOP) põhimõtetest.
sobes.tech AI
Vastus AI-lt
Objektorienteeritud programmeerimine (OOP) põhineb neljal põhiprintsiibil:
-
Kapseldus: Andmete (omaduste) ja meetodite (funktsioonide), mis nende andmetega töötavad, ühendamine üheks tervikuks — objektiks. See varjab teostuse üksikasju ja võimaldab kontrollitud juurdepääsu andmetele.
<?php class BankAccount { private float $balance = 0; // Varjatud andmed public function deposit(float $amount): void { // Meetodid võimaldavad juurdepääsu if ($amount > 0) { $this->balance += $amount; } } public function getBalance(): float { return $this->balance; } } ?> -
Abstraktsioon: Oluliste omaduste välja toomine ja ebaoluliste detailide varjamine. Esindab lihtsustatud mudelit reaalmaailmast.
<?php abstract class Shape { // Abstraktne klass abstract public function area(): float; // Abstraktne meetod // Võib olla ka konkreetseid meetodeid, näiteks: public function getDescription(): string { return "See on kuju."; } } class Circle extends Shape { private float $radius; public function __construct(float $radius) { $this->radius = $radius; } public function area(): float { // Abstraktse meetodi realiseerimine return M_PI * $this->radius * $this->radius; } } ?> -
Pärimine: Uue klassi (lapse) loomine olemasoleva (ema) põhjal, pärides selle omadused ja meetodid. See soodustab koodi korduvkasutust.
<?php class Animal { protected string $name; public function __construct(string $name) { $this->name = $name; } public function eat(): void { echo "{$this->name} sööb.\n"; } } class Dog extends Animal { // Dog pärib from Animal public function bark(): void { echo "{$this->name} ütleb: Woof!\n"; } } $dog = new Dog("Buddy"); $dog->eat(); // Pärandatud meetodi kasutamine $dog->bark(); ?> -
Polümorfism: Võimekus erinevate klasside objektidel reageerida sama meetodi kutsumisele erinevalt. "Mitme vormi".
<?php interface Speakable { // Interfeis näiteks polümorfismist public function speak(): void; } class Cat implements Speakable { public function speak(): void { echo "Miau!\n"; } } class Duck implements Speakable { public function speak(): void { echo "Kvaak!\n"; } } function makeSound(Speakable $animal): void { // Funktsioon võtab vastu erinevat tüüpi objekte $animal->speak(); // Kutsutakse sama meetod } $cat = new Cat(); $duck = new Duck(); makeSound($cat); // Kutsub Cat::speak() makeSound($duck); // Kutsub Duck::speak() ?>