Junior
Разкажи за принципите на обектно-ориентираното програмиране (ООП).
sobes.tech AI
Отговор от AI
Обектно-ориентираното програмиране (ООП) се основава на четири ключови принципа:
-
Инкапсулация: Свързване на данни (свойства) и методи (функции), които работят с тези данни, в едно цяло — обект. Това скрива детайлите на реализацията и предоставя контролиран достъп до данните.
<?php class BankAccount { private float $balance = 0; // Скритите данни public function deposit(float $amount): void { // Методи, които предоставят достъп if ($amount > 0) { $this->balance += $amount; } } public function getBalance(): float { return $this->balance; } } ?> -
Абстракция: Изделяне на съществените характеристики на обекта и скриване на незначителните детайли. Представлява опростен модел на реалния свят.
<?php abstract class Shape { // Абстрактен клас abstract public function area(): float; // Абстрактен метод // Може да има и конкретни методи, например: public function getDescription(): string { return "Това е форма."; } } class Circle extends Shape { private float $radius; public function __construct(float $radius) { $this->radius = $radius; } public function area(): float { // Реализация на абстрактния метод return M_PI * $this->radius * $this->radius; } } ?> -
Наследяване: Създаване на нов клас (дете) на базата на съществуващ (родител), наследявайки неговите свойства и методи. Това подпомага повторното използване на кода.
<?php class Animal { protected string $name; public function __construct(string $name) { $this->name = $name; } public function eat(): void { echo "{$this->name} яде.\n"; } } class Dog extends Animal { // Dog наследява от Animal public function bark(): void { echo "{$this->name} казва: Woof!\n"; } } $dog = new Dog("Buddy"); $dog->eat(); // Използване на наследения метод $dog->bark(); ?> -
Полиморфизъм: Възможност обектите от различни класове да реагират на една и съща извикване на метод по свой начин. "Множество форми".
<?php interface Speakable { // Интерфейс за пример за полиморфизъм public function speak(): void; } class Cat implements Speakable { public function speak(): void { echo "Мяу!\n"; } } class Duck implements Speakable { public function speak(): void { echo "Кря!\n"; } } function makeSound(Speakable $animal): void { // Функция, която приема различни типове обекти $animal->speak(); // Вика същия метод } $cat = new Cat(); $duck = new Duck(); makeSound($cat); // Вика метода Cat::speak() makeSound($duck); // Вика метода Duck::speak() ?>