سایت خبرکاو

جستجوگر هوشمند اخبار و مطالب فناوری

روش ها در جاوا – با مثال های کد توضیح داده شده است

روش ها برای سازماندهی پروژه های جاوا، تشویق استفاده مجدد از کد و بهبود ساختار کلی کد ضروری هستند. در این مقاله به تحلیل روش‌های جاوا و نحوه عملکرد آن‌ها می‌پردازیم که شامل نحو، انواع و مثال‌های آن‌ها می‌شود. در اینجا چیزی است که ما پوشش خواهیم داد: روش های جاوا چیست؟ انواع مشخص کننده های دسترسی در جاوا – عمومی ( public ) – خصوصی ( private ) - محافظت شده ( protected ) – پیش فرض ( Package-Private ) انواع روش ها – از ...

روش ها برای سازماندهی پروژه های جاوا، تشویق استفاده مجدد از کد و بهبود ساختار کلی کد ضروری هستند.

در این مقاله به تحلیل روش‌های جاوا و نحوه عملکرد آن‌ها می‌پردازیم که شامل نحو، انواع و مثال‌های آن‌ها می‌شود.

در اینجا چیزی است که ما پوشش خواهیم داد:

    روش های جاوا چیست؟

    انواع مشخص کننده های دسترسی در جاوا
    عمومی ( public )
    خصوصی ( private )
    - محافظت شده ( protected )
    پیش فرض ( Package-Private )

    انواع روش ها
    از پیش تعریف شده در مقابل تعریف شده توسط کاربر
    - بر اساس عملکرد

    نتیجه

روش های جاوا چیست؟

در جاوا متد مجموعه ای از دستورات است که عمل خاصی را انجام می دهند و در یک کلاس اعلان می شوند.

در اینجا سینتکس اساسی برای یک متد جاوا آمده است:

 acessSpecifier returnType methodName(parameterType1 parameterName1, parameterType2 parameterName2, ...) { // Method body - statements to perform a specific task // Return statement (if applicable) }

بیایید اجزا را تجزیه کنیم:

accessSpecifier : قابلیت مشاهده یا دسترسی به کلاس ها، متدها و فیلدها را در یک برنامه تعریف می کند.

returnType : نوع داده مقداری که متد برمی گرداند. اگر متد هیچ مقداری را برنگرداند، از کلمه کلیدی void استفاده می شود.

methodName : نام متد، به دنبال قراردادهای نامگذاری جاوا.

parameter : مقدار ورودی که روش می پذیرد. اینها اختیاری هستند و یک روش می تواند صفر یا چند پارامتر داشته باشد. هر پارامتر با نوع داده و یک نام اعلام می شود.

متد بدن : مجموعه ای از عبارات محصور در پرانتزهای مجعد {} که وظیفه ای را که متد انجام می دهد را مشخص می کند.

عبارت return : اگر متد دارای یک نوع بازگشتی به غیر از void باشد، باید یک عبارت return و به دنبال آن مقداری که باید برگردانده شود، باشد.

در اینجا مثالی از یک روش ساده جاوا آورده شده است:

 public class SimpleMethodExample { // Method that takes two integers and returns their sum public static int addNumbers(int a, int b) { int sum = a + b; return sum; } public static void main(String[] args) { // Calling the method and storing the result int result = addNumbers(5, 7); // Printing the result System.out.println("The sum is: " + result); } }
روش ساده جاوا

در این مثال، متد addNumbers دو عدد صحیح را به عنوان پارامتر ( a و b ) می گیرد، مجموع آنها را محاسبه می کند و نتیجه را برمی گرداند. سپس متد main این متد را فراخوانی می کند و نتیجه را چاپ می کند.

کد جاوا را با استفاده از ترمینال با استفاده از دستور javac کامپایل کنید:

اسکرین شات-از-2024-02-28-09-27-12
خروجی

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

انواع مشخص کننده های دسترسی در جاوا

مشخص‌کننده‌های دسترسی، دید و دسترسی اعضای کلاس (فیلدها، متدها و کلاس‌های تودرتو) را کنترل می‌کنند.

معمولاً چهار نوع اصلی مشخص کننده دسترسی وجود دارد: عمومی، خصوصی، محافظت شده و پیش فرض. آنها دیکته می‌کنند که کجا و چگونه می‌توان به این اعضا دسترسی داشت، و در نتیجه کپسوله‌سازی و مدولار بودن را ترویج می‌کنند.

عمومی ( public )

این امکان دسترسی به عضو را از هر نقطه در برنامه شما، صرف نظر از بسته یا کلاس، فراهم می کند. برای اجزای پرکاربرد مانند توابع ابزار یا ثابت ها مناسب است.

نحو:

 public class MyClass { public int publicField; public void publicMethod() { // method implementation } }

مثال:

 // File: MyClass.java // A class with public access specifier public class MyClass { // Public field public int publicField = 10; // Public method public void publicMethod() { System.out.println("This is a public method."); } // Main method to run the program public static void main(String[] args) { // Creating an object of MyClass MyClass myObject = new MyClass(); // Accessing the public field System.out.println("Public Field: " + myObject.publicField); // Calling the public method myObject.publicMethod(); } }

در این مثال:

کلاس MyClass با اصلاح کننده public اعلام می شود و از هر کلاس دیگری قابل دسترسی است.

publicField یک فیلد عمومی است که از خارج از کلاس قابل دسترسی است.

publicMethod() یک متد عمومی است که می تواند از خارج از کلاس فراخوانی شود.

روش main ، نقطه ورود برنامه است، جایی که یک شی از MyClass ایجاد می شود و به فیلد و متد عمومی دسترسی پیدا می کند.

 Public Field: 10 This is a public method.

خصوصی ( private )

این دسترسی را به عضوی در کلاسی که در آن اعلام شده است محدود می کند. از داده های حساس محافظت می کند و کپسوله سازی را اعمال می کند.

نحو:

 public class MyClass { private int privateField; private void privateMethod() { // method implementation } }

مثال:

 // File: MyClass.java // A class with private access specifier public class MyClass { // Private field private int privateField = 10; // Private method private void privateMethod() { System.out.println("This is a private method."); } // Public method to access private members public void accessPrivateMembers() { // Accessing the private field System.out.println("Private Field: " + privateField); // Calling the private method privateMethod(); } // Main method to run the program public static void main(String[] args) { // Creating an object of MyClass MyClass myObject = new MyClass(); // Accessing private members through a public method myObject.accessPrivateMembers(); } }

در این مثال:

کلاس MyClass دارای یک privateField و یک privateMethod است که هر دو با اصلاح کننده private مشخص شده اند.

متد accessPrivateMembers() یک متد عمومی است که می تواند از خارج از کلاس فراخوانی شود. دسترسی به فیلد خصوصی را فراهم می کند و روش خصوصی را فراخوانی می کند.

 Private Field: 10 This is a private method.

محافظت شده ( protected )

مشخص‌کننده دسترسی protected برای دسترسی اعضا (فیلدها و روش‌ها) در همان بسته یا توسط زیر کلاس‌ها، بدون توجه به بسته استفاده می‌شود. آنها از کلاس های غیر مرتبط قابل دسترسی نیستند. وراثت را در عین کنترل دسترسی به اعضای خاص در زیر کلاس ها تسهیل می کند.

نحو:

 public class MyClass { protected int protectedField; protected void protectedMethod() { // method implementation } }

مثال:

 // File: Animal.java // A class with protected access specifier public class Animal { // Protected field protected String species = "Unknown"; // Initialize with a default value // Protected method protected void makeSound() { System.out.println("Some generic animal sound"); } }
 // File: Dog.java // A subclass of Animal public class Dog extends Animal { // Public method to access protected members public void displayInfo() { // Accessing the protected field from the superclass System.out.println("Species: " + species); // Calling the protected method from the superclass makeSound(); } }
 // File: Main.java // Main class to run the program public class Main { public static void main(String[] args) { // Creating an object of Dog Dog myDog = new Dog(); // Accessing protected members through a public method myDog.displayInfo(); } }

در این مثال:

کلاس Animal دارای یک فیلد protected ( species ) و یک روش protected ( makeSound ) است.

کلاس Dog یک زیر کلاس از Animal است و می تواند به اعضای protected از سوپرکلاس دسترسی داشته باشد.

متد displayInfo() در کلاس Dog به فیلد محافظت شده دسترسی دارد و متد محافظت شده را فراخوانی می کند.

اسکرین شات-از-2024-02-28-10-05-27
خروجی

با مشخص‌کننده دسترسی protected ، اعضا در یک بسته و توسط زیر کلاس‌ها قابل دسترسی هستند و سطح مشخصی از دید و وراثت را ارتقا می‌دهند و در عین حال کپسوله‌سازی را حفظ می‌کنند.

پیش‌فرض ( Package-Private )

اگر از مشخص کننده دسترسی استفاده نشود، سطح دسترسی پیش‌فرض package-private است. اعضای با دسترسی پیش فرض در یک بسته قابل دسترسی هستند، اما خارج از آن نیستند. اغلب برای کلاس های ابزار یا روش های کمکی در یک ماژول خاص استفاده می شود.

نحو:

 class MyClass { int defaultField; void defaultMethod() { // method implementation } }

مثال:

 // File: Animal.java // A class with default (package-private) access specifier class Animal { String species = "Unknown"; void makeSound() { System.out.println("Some generic animal sound"); } }
 // File: Main.java // Main class to run the program public class Main { public static void main(String[] args) { // Creating an object of Dog Dog myDog = new Dog(); // Accessing default (package-private) members through a public method myDog.displayInfo(); } }
 // File: Dog.java // Another class in the same package public class Dog { Animal myAnimal = new Animal(); void displayInfo() { // Accessing the default (package-private) field and method System.out.println("Species: " + myAnimal.species); myAnimal.makeSound(); } }

در این مثال:

کلاس Animal هیچ اصلاح کننده دسترسی مشخصی ندارد و آن را پیش‌فرض می‌کند (package-private). این دارای species میدان بسته-خصوصی و روش بسته-خصوصی makeSound است.

کلاس Dog در همان بسته Animal است، پس می تواند به اعضای پیش فرض (package-private) کلاس Animal دسترسی داشته باشد.

کلاس Main برنامه را با ایجاد یک شی از Dog و فراخوانی متد displayInfo آن اجرا می کند.

وقتی این برنامه را اجرا می کنید باید گونه و صدای حیوان را خروجی دهد.

نحوه انتخاب مشخص کننده دسترسی مناسب

Public: برای کامپوننت‌ها، رابط‌ها و کلاس‌های پایه استفاده می‌شود.

خصوصی: برای جزئیات پیاده سازی داخلی و حفاظت از داده های حساس استفاده کنید.

پیش‌فرض: برای روش‌های کمکی یا اجزای خاص یک بسته استفاده کنید.

محافظت شده: برای عملکرد مشترک بین زیر کلاس ها استفاده می شود، در حالی که دسترسی از خارج از سلسله مراتب وراثت را محدود می کند.

انواع روش ها

در جاوا، متدها را می توان به دو صورت عمده دسته بندی کرد:

1. از پیش تعریف شده در مقابل تعریف شده توسط کاربر:

متدهای از پیش تعریف شده: این متدها قبلاً در کتابخانه کلاس جاوا تعریف شده‌اند و می‌توانند مستقیماً بدون هیچ گونه اعلان استفاده شوند.

به عنوان مثال می توان به System.out.println() برای چاپ در کنسول و Math.max() برای یافتن حداکثر دو عدد اشاره کرد.

روش‌های تعریف‌شده توسط کاربر: روش‌هایی هستند که خودتان برای انجام وظایف خاص در برنامه خود می‌نویسید. آنها در کلاس ها تعریف می شوند و معمولاً برای کپسوله کردن عملکرد و بهبود قابلیت استفاده مجدد کد استفاده می شوند.

 public class RectangleAreaCalculator { // User-defined method to calculate the area of a rectangle public static double calculateRectangleArea(double length, double width) { double area = length * width; return area; } public static void main(String[] args) { // Example of using the method double length = 5.0; double width = 3.0; // Calling the method double result = calculateRectangleArea(length, width); // Displaying the result System.out.println("The area of the rectangle with length " + length + " and width " + width + " is: " + result); } }
مثال روش تعریف شده توسط کاربر

در این مثال:

add یک روش تعریف شده توسط کاربر است زیرا توسط کاربر (برنامه نویس) ایجاد شده است.

متد دو پارامتر ( num1 و num2 ) می گیرد و مجموع آنها را برمی گرداند.

روش main ، متد add را با مقادیر خاص فراخوانی می‌کند و عملکرد سفارشی‌سازی‌شده ارائه شده توسط کاربر را نشان می‌دهد.

2. بر اساس عملکرد:

در روش های تعریف شده توسط کاربر، چندین طبقه بندی دیگر بر اساس ویژگی های آنها وجود دارد:

روش های نمونه:

مرتبط با یک نمونه از یک کلاس. آنها می توانند به متغیرهای نمونه دسترسی داشته باشند و روی یک شی از کلاس فراخوانی می شوند.

در اینجا برخی از ویژگی های کلیدی روش های نمونه آورده شده است:

دسترسی به متغیرهای نمونه:

متدهای نمونه به متغیرهای نمونه (همچنین به عنوان فیلدها یا خواص) کلاس دسترسی دارند.

آنها می توانند وضعیت جسمی را که به آن تعلق دارند دستکاری کنند.

استفاده از this کلمه کلیدی:

در داخل یک متد نمونه، کلمه کلیدی this به نمونه فعلی کلاس اشاره دارد. اغلب برای تمایز بین متغیرهای نمونه و پارامترهایی با نام یکسان استفاده می شود.

زمینه غیر ایستا:

متدهای نمونه در زمینه یک شیء فراخوانی می شوند. آنها را نمی توان بدون ایجاد نمونه ای از کلاس فراخوانی کرد.

اعلامیه و فراخوان:

روش های نمونه بدون کلمه کلیدی static اعلام می شوند.

آنها در نمونه ای از کلاس با استفاده از علامت نقطه ( . ) فراخوانی می شوند.

در اینجا یک مثال ساده در جاوا برای نشان دادن روش های نمونه آورده شده است:

مثال:

 public class Dog { // Instance variables String name; int age; // Constructor to initialize the instance variables public Dog(String name, int age) { this.name = name; this.age = age; } // Instance method to bark public void bark() { System.out.println(name + " says Woof!"); } // Instance method to age the dog public void ageOneYear() { age++; System.out.println(name + " is now " + age + " years old."); } public static void main(String[] args) { // Creating instances of the Dog class Dog myDog = new Dog("Buddy", 3); Dog anotherDog = new Dog("Max", 2); // Calling instance methods on objects myDog.bark(); myDog.ageOneYear(); anotherDog.bark(); anotherDog.ageOneYear(); } }

در این مثال:

bark و ageOneYear متدهای نمونه کلاس Dog هستند.

آنها در نمونه هایی از کلاس Dog ( myDog و anotherDog ) فراخوانی می شوند.

این متدها می توانند به متغیرهای نمونه ( name و age ) اشیاء مربوطه دسترسی پیدا کرده و آنها را دستکاری کنند.

متدهای نمونه قدرتمند هستند زیرا به شما این امکان را می دهند که رفتار مربوط به وضعیت یک شی را کپسوله کنید و راهی برای تعامل و تغییر آن حالت ارائه دهید.

روش های استاتیک:

یک متد استاتیک به جای یک نمونه از کلاس به کلاس تعلق دارد. این بدان معناست که شما می توانید یک متد استاتیک را بدون ایجاد یک نمونه (ابجکت) از کلاس فراخوانی کنید. با استفاده از کلمه کلیدی static اعلام شده است.

روش‌های استاتیک معمولاً برای توابع ابزاری استفاده می‌شوند که به وضعیت یک شی بستگی ندارند. به عنوان مثال، روش هایی برای محاسبات ریاضی، دستکاری رشته ها و غیره.

مثال:

 public class MathOperations { // Static method public static int add(int a, int b) { return a + b; } // Static method public static int multiply(int a, int b) { return a * b; } }

روش های چکیده:

این متدها اعلام می شوند اما در یک کلاس پیاده سازی نمی شوند. آنها قرار است توسط زیر کلاس‌ها نادیده گرفته شوند و طرحی برای عملکردهای خاص ارائه کنند که باید در هر زیر کلاس پیاده‌سازی شود.

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

مثال:

 public abstract class Shape { // Abstract method abstract double calculateArea(); }


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

نتیجه

روش ها برای سازماندهی پروژه های جاوا، تشویق استفاده مجدد از کد و بهبود ساختار کلی کد ضروری هستند.

در این مقاله به تحلیل روش‌های جاوا، از جمله نحو، انواع و روش‌های توصیه شده می‌پردازیم.

کد نویسی مبارک!

خبرکاو