برنامه نویسی

درک کپسولاسیون در برنامه نویسی شی گرا

کپسوله سازی یک مفهوم اساسی برنامه نویسی شی گرا است که شامل مجموعه داده ها (فیلدها) و روش هایی (توابع) است که روی داده ها در یک واحد واحد، معمولاً یک کلاس، عمل می کنند. دسترسی مستقیم به برخی از اجزای شی را محدود می کند و حفظ و ایمن سازی کد را آسان تر می کند.

مزایای کپسولاسیون

  1. پنهان کردن داده ها: حالت داخلی از دنیای خارج پنهان است و دسترسی از طریق روش هایی (گیرنده و تنظیم کننده) کنترل می شود.
  2. بهبود قابلیت نگهداری کد: تغییرات در فیلدها یا متدها را می توان بدون تأثیر بر روی کد خارجی که از کلاس استفاده می کند ایجاد کرد.
  3. امنیت پیشرفته: با محدود کردن دسترسی مستقیم به فیلدها، می‌توانیم داده‌ها را از حالت‌های نامعتبر تأیید و محافظت کنیم.

مثال کد: کپسوله سازی در عمل

// Encapsulation refers to restricting access of a class from the outside world
public class Person {
    private String name;
    private String profession;
    private double height;
    private int ID;
    private int age;

    // Constructor
    public Person(String name, String profession, double height, int iD, int age) {
        this.name = name;
        this.profession = profession;
        this.height = height;
        ID = iD;
        this.age = age;
    }

    // Getters and setters for accessing private fields
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getProfession() {
        return profession;
    }
    public void setProfession(String profession) {
        this.profession = profession;
    }
    public double getHeight() {
        return height;
    }
    public void setHeight(double height) {
        this.height = height;
    }
    public int getID() {
        return ID;
    }
    public void setID(int iD) {
        ID = iD;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    // Main method to demonstrate encapsulation
    public static void main(String[] args) {
        Person myPerson = new Person("Robert", "doctor", 130.4, 39, 23);

        // Accessing private fields through getter methods
        System.out.println(myPerson.getName());
        System.out.println(myPerson.getProfession());
        System.out.println(myPerson.getID());
        System.out.println(myPerson.getAge());
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمینه های خصوصی

زمینه ها name، profession، height، ID، و age خصوصی اعلام می شوند. این باعث می شود که آنها مستقیماً از خارج کلاس غیرقابل دسترسی باشند.

دریافت کننده ها و تنظیم کننده ها

روش های عمومی مانند getName()، setName()، getProfession()و دیگران به عنوان نقاط دسترسی کنترل شده برای فیلدهای خصوصی عمل می کنند. این روش‌ها به کدهای خارجی اجازه می‌دهند تا داده‌های خصوصی را به طور ایمن بازیابی و اصلاح کنند.

سازنده

سازنده زمانی که یک شی از کلاس، فیلدها را مقداردهی اولیه می کند Person ایجاد می شود. این تضمین می کند که شی در یک حالت معتبر شروع می شود.

روش اصلی

را main روش نشان می دهد که چگونه کپسولاسیون استفاده می شود. فیلدهای خصوصی به طور غیرمستقیم از طریق روش های دریافت کننده قابل دسترسی هستند.


مزایا در مثال

  1. حفاظت از داده ها:

    • فیلدهای خصوصی را نمی توان مستقیماً در دسترس قرار داد یا تغییر داد و از تغییرات تصادفی یا مخرب جلوگیری می کند.
  2. دسترسی کنترل شده:

    • با استفاده از تنظیم کننده ها، می توانید منطق اعتبارسنجی را برای اطمینان از تنظیم فقط داده های معتبر وارد کنید. به عنوان مثال:
     public void setAge(int age) {
         if (age > 0) {
             this.age = age;
         } else {
             System.out.println("Age must be positive.");
         }
     }
    
  3. انعطاف پذیری کد:

    • اگر اجرای فیلدها تغییر کند (مثلاً افزودن فیلدهای مشتق شده)، کد خارجی با استفاده از کلاس بی‌تأثیر باقی می‌ماند.

این مثال نشان می دهد که چگونه کپسولاسیون تضمین می کند که Person کلاس یکپارچگی را حفظ می کند و جزئیات پیاده سازی خود را پنهان می کند در حالی که یک رابط کنترل شده برای تعامل فراهم می کند.

نوشته های مشابه

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

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

دکمه بازگشت به بالا