قبل از اینکه به این مفهوم بپردازیم، باید از کلاس ها
و کپسوله سازی در جاوا
آگاه باشید .
کپسوله سازی در جاوا
همانطور که از نام آن پیداست، کپسولاسیون فرآیند محصور کردن داده ها و روش ها به عنوان یک واحد واحد است. در برنامه نویسی شی گرا ، اعضای داده یک کلاس خصوصی می شوند تا دسترسی مستقیم به آنها محدود شود. بنابراین اعضای داده کپسولهشده را نمیتوان بدون روشی که به درستی تعریف شده است بازیابی یا اصلاح کرد. برای این کار، متدهای accessor و mutator را در جاوا تعریف می کنیم. بیایید با جزئیات به این روش ها نگاه کنیم.دسترسی ها و جهش دهنده ها در جاوا چیست؟
لوازم جانبی
نام متد Accessor بر اساس کلمه Access است که به کاربر اجازه می دهد به اطلاعات خصوصی در یک کلاس دسترسی داشته باشد. اگر تا به حال در مورد متد “ get ” یا “ getters ” شنیده باشید ، این همان چیزی است که Accessor ها هستند. گیرنده ها متغیرها و ثابت های خصوصی را برای دسترسی خارج از محدوده یک کلاس بازیابی می کنند.نحو
ما از کلمه کلیدی “ get ” برای دسترسی های جاوا استفاده می کنیم. برای دسترسی به متغیر “ name ” میتوانیم از getName() زیر استفاده کنیم . برای مثال متد Accessor به موارد زیر نگاهی بیندازید.
public class Student {
private String name;
public String getName() {
return name;
}
}
لطفاً توجه داشته باشید که هر دریافت کننده قبل از نام متغیر در امضای متد، کلمه کلیدی « get » را دارد و نوع بازگشتی با متغیری که باید برگردانده شود یکسان است. از آنجایی که متغیر “ name ” از نوع “ String ” است، بنابراین متد getter/accessor نیز یک “ string ” برمی گرداند.
جهش یافته ها
روش mutator در جاوا توسط کلمه "mutate" هدایت می شود که به معنای واقعی کلمه به معنای اصلاح است. جهشدهندهها به کاربران اجازه میدهند تا مقدار متغیرهای خصوصی یک شی کلاس را تنظیم یا تغییر دهند. در زمینه برنامه نویسی شی گرا، روش مجموعه یا تنظیم کننده ها نیز به عنوان جهش دهنده شناخته می شوند. تنظیمکنندهها کپسولهسازی را تسهیل میکنند زیرا اعضای داده خصوصی را نمیتوان مستقیماً تغییر داد. بنابراین از متدهای تنظیم کننده/جهش دهنده ها برای به روز رسانی مقدار متغیر خارج از محدوده کلاس استفاده می شود.نحو
برای جهشیافتهها، از کلمه کلیدی “ set ” استفاده میکنیم . هر تنظیم کننده با کلمه کلیدی "set" و به دنبال آن نام متغیری که نیاز به جهش دارد تعریف می شود. در اینجا، از setName() استفاده می کنیم که یک متغیر نوع String را به عنوان پارامتر می گیرد.
public class Student {
private String name;
public void setName(String name) {
this.name = name;
}
}
چرا به اکسسوری ها و جهش دهنده ها نیاز داریم؟
برای محافظت از اطلاعات حساس در یک کلاس به دریافت کننده ها و تنظیم کننده ها یا دسترسی ها و جهش دهنده ها نیاز داریم. اطلاعات با استفاده از این روش های استاندارد در برابر استفاده غیرقانونی محافظت می شود. علاوه بر این، مجموعه دادهها در یک جهشدهنده نیز میتوانند اعتبارسنجی شوند در صورتی که تمام الزامات یک برنامه را برآورده کنند.نمونه های Accessor و Mutator
با استفاده از کلاس دانشآموز زیر، به مثالهایی از متدهای accessor و mutator نگاه میکنیم.مثال
import java.util.Arrays;
public class Student {
private String name;
private Integer ID;
private String DOB;
private double GPA;
private String[] courses;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getID() {
return ID;
}
public void setID(Integer iD) {
this.ID = iD;
}
public String getDOB() {
return DOB;
}
public void setDOB(String dOB) {
this.DOB = dOB;
}
public double getGPA() {
return GPA;
}
public void setGPA(double gPA) {
this.GPA = gPA;
}
public String[] getCourses() {
return courses;
}
public void setCourses(String[] courses) {
this.courses = courses;
}
public static void main(String[] args) {
Student student1 = new Student();
System.out.println("Student Bio [ Before using Accessors & Mutators ]");
// calling accessor methods
System.out.print("Name: " + student1.getName());
System.out.print("\tID: " + student1.getID());
System.out.print("\tGPA: " + student1.getGPA());
System.out.print("\tDOB: " + student1.getDOB());
System.out.println("\tCourses: " + Arrays.toString(student1.getCourses()));
// calling mutator methods
student1.setName("Alex Coy");
student1.setID(3115);
student1.setGPA(2.79);
student1.setDOB("08/08/1998");
String[] courses = { "Object Oriented Programming", "Cryptography", "Photography", "Network Security" };
student1.setCourses(courses);
System.out.println("\nStudent Bio [ After using Mutators & Accessors ]");
// calling accessor methods
System.out.print("Name: " + student1.getName());
System.out.print("\tID: " + student1.getID());
System.out.print("\tGPA: " + student1.getGPA());
System.out.print("\tDOB: " + student1.getDOB());
System.out.println("\tCourses: " + Arrays.toString(student1.getCourses()));
}
}
خروجی
بیوگرافی دانشجویی [ قبل از استفاده از ابزارهای جانبی و جهشیافتهها] نام: شناسه null: null معدل: 0.0 DOB: null دورهها: null بیوگرافی دانشجویی [پس از استفاده از جهشیافتهها و ابزارهای جانبی] نام: Alex Coy ID: 3115 معدل: 2.79 DOB: 1998/08/08 دروس: [برنامه نویسی شی گرا، رمزنگاری، عکاسی، امنیت شبکه]
GO TO FULL VERSION