გთხოვთ, ისაუბრეთ ობიექტზე ორიენტირებული პროგრამირების (OOP) პრინციპებზე.
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 მემკვიდრეობით იღებს from 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 "მiau!\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() ?>