اصول OOP به صورت خلاصه همراه با کد

منبع: chatgpt

اصول برنامه‌نویسی شیءگرا (OOP) چهار اصل اساسی دارد: Encapsulation, Abstraction, Inheritance, و Polymorphism. این اصول به توسعه‌ی نرم‌افزارهای پیچیده به روشی ساده‌تر و قابل مدیریت کمک می‌کنند.

1. Encapsulation (کپسوله‌سازی)

Encapsulation به معنای مخفی کردن جزئیات پیاده‌سازی یک شیء است و فقط متدها و ویژگی‌هایی که برای کار با شیء ضروری هستند، به بیرون نمایش داده می‌شوند. این کار با استفاده از دسترسی‌دهنده‌ها مانند private و public انجام می‌شود.

مثال:

class User {
    private $name;

    public function setName($name) {
        $this->name = $name;
    }

    public function getName() {
        return $this->name;
    }
}

$user = new User();
$user->setName("John");
echo $user->getName(); // خروجی: John

در اینجا خاصیت $name مخفی شده و فقط از طریق متدهای setName و getName قابل دسترسی است.


2. Abstraction (انتزاع)

Abstraction به معنای مخفی کردن پیچیدگی‌های داخلی و نمایش فقط جزئیات ضروری است. این اصل از طریق تعریف اینترفیس‌ها یا کلاس‌های abstract پیاده‌سازی می‌شود.

مثال:

abstract class Animal {
    abstract public function sound();
}

class Dog extends Animal {
    public function sound() {
        return "Bark";
    }
}

class Cat extends Animal {
    public function sound() {
        return "Meow";
    }
}

$dog = new Dog();
echo $dog->sound(); // خروجی: Bark

در اینجا جزئیات صدای هر حیوان در کلاس‌های فرزند پیاده‌سازی شده و پیچیدگی‌های دیگر پنهان مانده است.


3. Inheritance (وراثت)

Inheritance به معنای استفاده مجدد از کد با به ارث بردن ویژگی‌ها و متدهای یک کلاس در کلاس دیگری است. این امر به کاهش تکرار کد کمک می‌کند.

مثال:

class Animal {
    public function eat() {
        return "Eating...";
    }
}

class Dog extends Animal {
    public function bark() {
        return "Barking...";
    }
}

$dog = new Dog();
echo $dog->eat(); // خروجی: Eating...
echo $dog->bark(); // خروجی: Barking...

کلاس Dog ویژگی‌ها و رفتارهای کلاس Animal را به ارث برده است و می‌تواند از متد eat استفاده کند.


4. Polymorphism (چندریختی)

Polymorphism به این معناست که یک متد می‌تواند در کلاس‌های مختلف به روش‌های متفاوت پیاده‌سازی شود. این اصل امکان ایجاد انعطاف‌پذیری در کد را فراهم می‌کند.

مثال:

interface Shape {
    public function area();
}

class Circle implements Shape {
    private $radius;

    public function __construct($radius) {
        $this->radius = $radius;
    }

    public function area() {
        return pi() * pow($this->radius, 2);
    }
}

class Rectangle implements Shape {
    private $width, $height;

    public function __construct($width, $height) {
        $this->width = $width;
        $this->height = $height;
    }

    public function area() {
        return $this->width * $this->height;
    }
}

$circle = new Circle(5);
echo $circle->area(); // خروجی: مساحت دایره

$rectangle = new Rectangle(4, 5);
echo $rectangle->area(); // خروجی: مساحت مستطیل

هر کلاس پیاده‌سازی خود را از متد area دارد، که به صورت متفاوت برای دایره و مستطیل محاسبه می‌شود.


این چهار اصل به توسعه‌ی نرم‌افزارهایی کمک می‌کنند که قابل نگهداری و توسعه‌پذیرتر هستند.

دیدگاه‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *