Μίλησέ μου για τις αρχές του αντικειμενοστραφούς προγραμματισμού (ΟΟΠ).
sobes.tech AI
Απάντηση από AI
Η αντικειμενοστραφής προγραμματισμός (OOP) βασίζεται σε τέσσερις βασικές αρχές:
-
Ενθυλάκωση: Η σύνδεση δεδομένων (ιδιοτήτων) και μεθόδων (λειτουργιών) που εργάζονται με αυτά τα δεδομένα σε ένα ενιαίο αντικείμενο. Αυτό κρύβει τις λεπτομέρειες υλοποίησης και παρέχει ελεγχόμενη πρόσβαση στα δεδομένα.
<?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 "This is a shape."; } } 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} is eating.\n"; } } class Dog extends Animal { // Dog κληρονομεί από Animal public function bark(): void { echo "{$this->name} says 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 "Meow!\n"; } } class Duck implements Speakable { public function speak(): void { echo "Quack!\n"; } } function makeSound(Speakable $animal): void { // Συνάρτηση που δέχεται διαφορετικούς τύπους αντικειμένων $animal->speak(); // Κλήση της ίδιας μεθόδου } $cat = new Cat(); $duck = new Duck(); makeSound($cat); // Κλήση της μεθόδου Cat::speak() makeSound($duck); // Κλήση της μεθόδου Duck::speak() ?>