آخرین بروزرسانی 6 روز قبل

اصلاح کننده های دسترسی (Access Modifiers) چیست؟

تغییر دهنده های دسترسی (Access Modifiers): کلیدهای محافظت از اطلاعات شما در برنامه نویسی

سلام دوستان عزیز!

در دنیای برنامه نویسی، مثل هر جای دیگری، نیاز داریم که بعضی چیزها رو خصوصی نگه داریم و اجازه ندیم هر کسی بهشون دسترسی داشته باشه. تغییر دهنده های دسترسی (Access Modifiers) دقیقا همین کار رو انجام میدن. اونا مثل نگهبانانی هستن که مشخص می کنن چه بخش هایی از کد شما برای بقیه قابل دسترسی هستن و چه بخش هایی نه.

به زبان ساده، فکر کنید یک خونه دارید. همه می تونن از بیرون خونه رو ببینن (مثلا اسم خیابون و شماره پلاک). این میشه قسمت "Public". ولی فقط شما و خانواده تون می تونید وارد خونه بشید و به وسایل داخلش دسترسی داشته باشید. این میشه قسمت "Private". حالا یه مهمون هم دعوت کردید که میتونه توی اتاق پذیرایی بشینه ولی نمی تونه وارد اتاق خواب شما بشه. این یه جور دسترسی "Protected" هست.

حالا بیاید ببینیم این "نگهبان ها" توی دنیای برنامه نویسی چی هستن:

تغییر دهنده دسترسی (Access Modifier) معنی توضیحات مثال (در زبان جاوا)
public عمومی همه می تونن به این قسمت از کد دسترسی داشته باشن. مثل یک مغازه که درش به روی همه بازه. public int age;
private خصوصی فقط خود اون کلاس (Class) می تونه به این قسمت دسترسی داشته باشه. مثل یک دفتر خاطرات که فقط شما می تونید بخونید. private String password;
protected محافظت شده خود کلاس و کلاس های فرزندش (Inheritance) و کلاس هایی که توی یک پکیج هستن می تونن به این قسمت دسترسی داشته باشن. مثل یک گنجینه که فقط به اعضای خانواده اجازه داده میشه بهش دسترسی داشته باشن. protected double salary;
(بدون Modifier) Package Private (پیش فرض) مختص پکیج اگر هیچ کدوم از بالاها رو ننویسیم، فقط کلاس هایی که توی همون پکیج (Package) هستن می تونن دسترسی داشته باشن. مثل یه جشن خصوصی که فقط همسایه ها دعوت هستن. String name;

چرا به اینا نیاز داریم؟

  • امنیت: نمی خوایم هر کسی بتونه اطلاعات حساس ما مثل رمز عبور (password) رو دستکاری کنه.
  • پنهان سازی (Encapsulation): می خوایم جزییات داخلی یک کلاس رو پنهان کنیم تا بقیه لازم نباشه نگران نحوه کارکرد اون باشن. فقط بدونن چطور ازش استفاده کنن. مثل یک ماشین که راننده فقط با فرمون و پدال ها کار داره و لازم نیست بدونه موتور چطوری کار می کنه.
  • جلوگیری از اشتباه: اگه همه چیز قابل دسترسی باشه، احتمال اینکه یه نفر اشتباهی یه چیزی رو تغییر بده و باعث بشه برنامه خراب بشه، خیلی بیشتره.

یک مثال ساده به زبان جاوا:

    public class Person {
        private String name;
        public int age;
        protected String address;

        public Person(String name, int age, String address) {
            this.name = name;
            this.age = age;
            this.address = address;
        }

        public String getName() {
            return name; // روشی برای دسترسی به متغیر خصوصی name
        }

        public void setName(String newName) {
            this.name = newName; // روشی برای تغییر متغیر خصوصی name
        }
    }

    public class Main {
        public static void main(String[] args) {
            Person person = new Person("Ali", 30, "Tehran");

            // نمی تونیم مستقیماً به name دسترسی پیدا کنیم چون private هست:
            // System.out.println(person.name); // این خطا میده!

            // ولی می تونیم از طریق متد getName بهش دسترسی پیدا کنیم:
            System.out.println(person.getName()); // خروجی: Ali

            // می تونیم مستقیماً به age دسترسی پیدا کنیم چون public هست:
            System.out.println(person.age); // خروجی: 30

            person.age = 35; // تغییر age به 35

            System.out.println(person.age); // خروجی: 35

            // آدرس هم محافظت شده است و در یک پکیج دیگه نمیشه استفاده کرد

        }
    }
    

در این مثال، متغیر name خصوصی هست، بنابراین فقط از طریق متد getName() و setName() می تونیم بهش دسترسی داشته باشیم. متغیر age عمومی هست و همه می تونن بهش دسترسی داشته باشن و مقدارش رو تغییر بدن. و address محافظت شده هست.

خلاصه:

تغییر دهنده های دسترسی ابزارهای قدرتمندی هستن که به ما کمک می کنن کدمون رو امن تر، خوانا تر و قابل نگهداری تر کنیم. با استفاده درست از این ابزارها می تونیم از اطلاعاتمون محافظت کنیم و از به وجود اومدن مشکلات احتمالی جلوگیری کنیم. در انتخاب نوع دسترسی دقیق باشین. یادتون باشه در برنامه نویسی، سادگی بهترین سیاسته!

امیدوارم که این مقاله براتون مفید بوده باشه. موفق باشید!

یه مثال نا قص دیگه براتون میزارم تا کامل درک کنید!

همونطور که دیدید، استفاده از Access Modifiers به ما کمک می‌کنه کدهای منظم‌تری داشته باشیم و از بروز خطا ها جلوگیری کنیم. پس سعی کنید همیشه در برنامه‌نویسی ازشون استفاده کنید و به درستی انتخابشون کنید.

کلمات کلیدی: برنامه نویسی، جاوا، Access Modifiers، تغییر دهنده دسترسی، Public، Private، Protected، امنیت، پنهان سازی، Encapsulation

تغییر دهنده های دسترسی در چه زبان های برنامه نویسی استفاده میشن؟
بسیاری از زبان های برنامه نویسی شی گرا (Object-Oriented) مثل جاوا (Java)، سی شارپ (#C)، سی پلاس پلاس (++C) و پایتون (Python) از تغییر دهنده های دسترسی پشتیبانی می کنن.
آیا میشه تغییر دهنده دسترسی یک متغیر رو بعد از تعریف تغییر داد؟
در بعضی از زبان ها مثل جاوا، شما نمی تونید تغییر دهنده دسترسی یک متغیر رو بعد از تعریف به راحتی تغییر بدید. باید اون متغیر رو با تغییر دهنده دسترسی جدید دوباره تعریف کنید (که ممکنه باعث مشکلات دیگه ای بشه).
چه تفاوتی بین Protected و Package Private وجود داره؟
Protected به کلاس های فرزند و کلاس های هم پکیج اجازه دسترسی میده. در حالی که Package Private (بدون Modifier) فقط به کلاس های هم پکیج اجازه دسترسی میده. به عبارت دیگه، کلاس های فرزند که خارج از پکیج اصلی باشن، به متغیرهای Protected دسترسی دارن، ولی به متغیرهای Package Private دسترسی ندارن.
اگر از تغییر دهنده های دسترسی استفاده نکنیم چه اتفاقی میفته؟
اگر از تغییر دهنده های دسترسی استفاده نکنید، کد شما آسیب پذیرتر میشه و احتمال اینکه به طور ناخواسته توسط کد دیگه ای دستکاری بشه، بیشتر میشه. همچنین، نگهداری و تغییر کد سخت تر میشه، چون هیچ محدودیتی برای دسترسی به بخش های مختلف کد وجود نداره.
بهترین روش استفاده از تغییر دهنده های دسترسی چیه؟
بهترین روش اینه که همیشه سعی کنید کمترین سطح دسترسی ممکن رو به متغیرها و متدها بدید. به این معنی که اگر یه متغیر فقط داخل یک کلاس استفاده میشه، اون رو private تعریف کنید. اگر فقط داخل کلاس های فرزند استفاده میشه، اون رو protected تعریف کنید. و فقط در صورتی که نیاز هست که از بیرون هم بهش دسترسی داشته باشیم، اون رو public تعریف کنید.

به اشتراک گذاشتن این مطلب در شبکه های اجتماعی

امتیاز شما به این مطلب

امتیاز: 5 از 5 (مجموع 1 رای)

اولین نفری باشید که در مورد این مقاله نظر می دهید!

62- V4
Terms & Conditions | Privacy Policy

techfeed.ir© 2024 All rights reserved