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:
-
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; } } ?> -
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; } } ?> -
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(); ?> -
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() ?>