რა არის პოლიმორფიზმი და როგორ გამოიყენება PHP-ის პროგრამირებაში?
sobes.tech AI
პასუხი AI-სგან
პოლიმორფიზმი — ეს შესაძლებლობაა გამოიყენო ერთი და იგივე ინტერფეისი სხვადასხვა მონაცემთა ტიპებისთვის. PHP-ში იგი რამდენიმე ფორმით გამოხატულია:
-
მემკვიდრეობა (Subtype Polymorphism): შვილობილი კლასები შეიძლება გადაწერონ მშობლის კლასის მეთოდები და უზრუნველყონ საკუთარი რეალიზაცია. როდესაც მეთოდი იძახება ბაზის ტიპის ობიექტზე, სინამდვილეში შესრულდება კონკრეტული შვილობილი კლასის მეთოდი, ობიექტის ტიპზე დამოკიდებული.
<?php class Animal { public function makeSound() { echo "ზოგადი ცხოველის ხმა\n"; } } class Dog extends Animal { public function makeSound() { echo "ჰაუ!\n"; } } class Cat extends Animal { public function makeSound() { echo "მiau!\n"; } } function makeAnimalSound(Animal $animal) { $animal->makeSound(); // გამოიძახება შესაბამისი შვილობილი კლასი } $dog = new Dog(); $cat = new Cat(); makeAnimalSound($dog); // შედეგი: ჰაუ! makeAnimalSound($cat); // შედეგი: მiau! -
ინტერფეისები (Interface Polymorphism): სხვადასხვა კლასები შეიძლება განახორციელოს ერთსა და იმავე ინტერფეისი, დაპირებით, რომ უზრუნველყოფს გარკვეული მეთოდების ნაკრებს ერთნაირი სიგნატურით. ეს საშუალებას აძლევს მუშაობა სხვადასხვა კლასების ობიექტებთან ერთიანი ინტერფეისის საშუალებით.
<?php interface Shape { public function getArea(); } class Circle implements Shape { private $radius; public function __construct($radius) { $this->radius = $radius; } public function getArea() { return pi() * $this->radius * $this->radius; } } class Square implements Shape { private $side; public function __construct($side) { $this->side = $side; } public function getArea() { return $this->side * $this->side; } } function calculateTotalArea(array $shapes) { $totalArea = 0; foreach ($shapes as $shape) { if ($shape instanceof Shape) { // ინტერფეისის შესაბამისობის შემოწმება $totalArea += $shape->getArea(); } } return $totalArea; } $shapes = [new Circle(5), new Square(4)]; echo calculateTotalArea($shapes); // გამოიტანს წრეწირისა და კვადრატის ფართობების ჯამს -
აბსტრაქტული კლასი (Abstract Class Polymorphism): მსგავსი ინტერფეისებზე დაფუძნებული პოლიმორფიზმი, მაგრამ საშუალებას აძლევს განსაზღვროს ძირითადი რეალიზაცია გარკვეული მეთოდებისთვის.
პოლიმორფიზმი ზრდის კოდის მოქნილობას, გაფართოებას და შენარჩუნებას, საშუალებას აძლევს დაწეროთ ზოგადი ალგორითმები, რომლებიც მუშაობენ სხვადასხვა ტიპის ობიექტების კოლექციებთან ერთიანი ინტერფეისის საშუალებით.