Junior
Реци ми о принципима објектно-оријентисаног програмирања (ООП).
sobes.tech АИ
Одговор од АИ
Објектно-оријентисано програмирање (ООП) засновано је на четири кључна принципа:
-
Инкапсулација: Повезивање података (својстава) и метода (функција) које раде са тим подацима у један целину — објекат. Ово скрива детаље имплементације и пружа контролисани приступ подацима.
<?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() ?>