Junior
Povedz mi o princípoch objektovo orientovaného programovania (OOP).
sobes.tech AI
Odpoveď od AI
Objektovo-orientované programovanie (OOP) je založené na štyroch kľúčových princípoch:
-
Zapuzdrenie: Spojenie dát (vlastností) a metód (funkcií), ktoré s týmito dátami pracujú, do jedného celku — objektu. To skrýva detaily implementácie a poskytuje riadený prístup k dátam.
<?php class BankAccount { private float $balance = 0; // Skryté údaje public function deposit(float $amount): void { // Metódy poskytujú prístup if ($amount > 0) { $this->balance += $amount; } } public function getBalance(): float { return $this->balance; } } ?> -
Abstrakcia: Vyzdvihnutie podstatných vlastností objektu a skrytie nepodstatných detailov. Predstavuje zjednodušený model reálneho sveta.
<?php abstract class Shape { // Abstraktná trieda abstract public function area(): float; // Abstraktná metóda // Môže mať aj konkrétne metódy, napríklad: public function getDescription(): string { return "Toto je tvar."; } } class Circle extends Shape { private float $radius; public function __construct(float $radius) { $this->radius = $radius; } public function area(): float { // Implementácia abstraktnej metódy return M_PI * $this->radius * $this->radius; } } ?> -
Dedičstvo: Vytvorenie nového triedy (deti) na základe existujúcej (rodič), dedí jej vlastnosti a metódy. To podporuje opakované použitie kódu.
<?php class Animal { protected string $name; public function __construct(string $name) { $this->name = $name; } public function eat(): void { echo "{$this->name} je.\n"; } } class Dog extends Animal { // Pes dedí od Animal public function bark(): void { echo "{$this->name} hovorí: Woof!\n"; } } $dog = new Dog("Buddy"); $dog->eat(); // Použitie zdedené metódy $dog->bark(); ?> -
Polymorfizmus: Schopnosť objektov rôznych tried reagovať na rovnaké volanie metódy rôznym spôsobom. "Mnoho podôb".
<?php interface Speakable { // Rozhranie pre príklad polymorfizmu public function speak(): void; } class Cat implements Speakable { public function speak(): void { echo "Mňau!\n"; } } class Duck implements Speakable { public function speak(): void { echo "Kach!\n"; } } function makeSound(Speakable $animal): void { // Funkcia prijíma rôzne typy objektov $animal->speak(); // Volanie tej istej metódy } $cat = new Cat(); $duck = new Duck(); makeSound($cat); // Volanie metódy Cat::speak() makeSound($duck); // Volanie metódy Duck::speak() ?>