Junior
Papaskokite apie objektinio programavimo (OOP) principus.
sobes.tech AI
Atsakymas iš AI
Objektinio programavimo (OP) pagrįsta keturiais pagrindiniais principais:
-
Uždarymas: Duomenų (savybės) ir metodų (funkcijų), kurie su jais dirba, sujungimas į vieną visumą — objektą. Tai slepia įgyvendinimo detales ir užtikrina kontroliuojamą prieigą prie duomenų.
<?php class BankAccount { private float $balance = 0; // Slapti duomenys public function deposit(float $amount): void { // Metodai suteikia prieigą if ($amount > 0) { $this->balance += $amount; } } public function getBalance(): float { return $this->balance; } } ?> -
Abstrakcija: Svarbių objekto savybių išskyrimas ir nereikšmingų detalių slėpimas. Supaprastintas realaus pasaulio modelis.
<?php abstract class Shape { // Abstrakti klasė abstract public function area(): float; // Abstraktus metodas // Gali būti ir konkretūs metodai, pavyzdžiui: public function getDescription(): string { return "Tai yra forma."; } } class Circle extends Shape { private float $radius; public function __construct(float $radius) { $this->radius = $radius; } public function area(): float { // Abstraktaus metodo įgyvendinimas return M_PI * $this->radius * $this->radius; } } ?> -
Paveldėjimas: Naujo klasės (vaiko) sukūrimas pagal esamą (tėvą), paveldint jos savybes ir metodus. Tai skatina kodo pakartotinį naudojimą.
<?php class Animal { protected string $name; public function __construct(string $name) { $this->name = $name; } public function eat(): void { echo "{$this->name} valgo.\n"; } } class Dog extends Animal { // Dog paveldi iš Animal public function bark(): void { echo "{$this->name} sako: Woof!\n"; } } $dog = new Dog("Buddy"); $dog->eat(); // Paveldėto metodo naudojimas $dog->bark(); ?> -
Polimorfizmas: Galimybė objektų iš skirtingų klasių reaguoti į tą patį metodo iškvietimą savaip. "Daugybė formų".
<?php interface Speakable { // Interfeisas pavyzdžiui polimorfizmo public function speak(): void; } class Cat implements Speakable { public function speak(): void { echo "Miau!\n"; } } class Duck implements Speakable { public function speak(): void { echo "Kvak!\n"; } } function makeSound(Speakable $animal): void { // Funkcija priima skirtingų tipų objektus $animal->speak(); // Tą patį metodą iškviečia } $cat = new Cat(); $duck = new Duck(); makeSound($cat); // Kviečia Cat::speak() makeSound($duck); // Kviečia Duck::speak() ?>