Junior
Mesélj az objektumorientált programozás (OOP) alapelveiről.
sobes.tech MI
Válasz az MI-től
Az OOP négy kulcsfontosságú elvre épül:
-
Encapsuláció: Az adatok (tulajdonságok) és a velük dolgozó metódusok (függvények) összekapcsolása egy egységbe — az objektumba. Ez elrejti a megvalósítás részleteit, és kontrollált hozzáférést biztosít az adatokhoz.
<?php class BankAccount { private float $balance = 0; // Rejtett adatok public function deposit(float $amount): void { // A metódusok hozzáférést biztosítanak if ($amount > 0) { $this->balance += $amount; } } public function getBalance(): float { return $this->balance; } } ?> -
Absztrakció: A lényeges jellemzők kiemelése és a lényegtelen részletek elrejtése. Egy leegyszerűsített modell a valós világról.
<?php abstract class Shape { // Absztrakt osztály abstract public function area(): float; // Absztrakt metódus // Lehetnek konkrét metódusok is, például: public function getDescription(): string { return "Ez egy alakzat."; } } class Circle extends Shape { private float $radius; public function __construct(float $radius) { $this->radius = $radius; } public function area(): float { // Az absztrakt metódus megvalósítása return M_PI * $this->radius * $this->radius; } } ?> -
Öröklődés: Egy új osztály (gyermek) létrehozása egy meglévő (szülő) alapján, örökölve annak tulajdonságait és metódusait. Ez a kód újrahasznosítását segíti.
<?php class Animal { protected string $name; public function __construct(string $name) { $this->name = $name; } public function eat(): void { echo "{$this->name} eszik.\n"; } } class Dog extends Animal { // A Dog az Animal-tól örököl public function bark(): void { echo "{$this->name} mondja: Woof!\n"; } } $dog = new Dog("Buddy"); $dog->eat(); // Az örökölt metódus használata $dog->bark(); ?> -
Polimorfizmus: Különböző osztályok objektumai ugyanarra a metódushívásra saját módjukon reagálnak. "Sokféleség".
<?php interface Speakable { // Interfész a polimorfizmus példájához public function speak(): void; } class Cat implements Speakable { public function speak(): void { echo "Miau!\n"; } } class Duck implements Speakable { public function speak(): void { echo "Kacsa!\n"; } } function makeSound(Speakable $animal): void { // A függvény különböző típusú objektumokat fogad $animal->speak(); // Ugyanaz a metódushívás } $cat = new Cat(); $duck = new Duck(); makeSound($cat); // A Cat::speak() metódus hívása makeSound($duck); // A Duck::speak() metódus hívása ?>