جاوا

جلسه ۲۱: متدهای کلاس در جاوا

// Car class
class Car {
  
  private int speed; // member field speed

  // Setter method to set the speed of the car
  public void setSpeed(int x) {
    speed = x; 
  }

  // Getter method to get the speed of the car
  public int getSpeed() {
    return speed; 
  }
  
}

class Demo {
  
   public static void main(String args[]) {
     Car car = new Car();
     car.setSpeed(100); // calling the setter method
     System.out.println(car.getSpeed()); // calling the getter method
   } 
  
}

overload کردن متدها

<blockquote>overload به انجام عملیات های متفاوت توسط متد بر اساس ماهیت آرگمان های دریافتی آن اشاره دارد.</blockquote> متد ها را می توان در جاوا overload (دوباره تعریف) کرد. ما می توانیم چندین بار یک متد را دوباره تعریف کنیم و انواع مختلف آرگمان ها را به آن ارائه دهیم. وقتی متد فراخوانی می شود ، تعریف مناسب متد توسط کامپایلر انتخاب می شود! در زیر این کار را با overload (دوباره تعریف) کردن متد product (ضرب) در کلاس Calculator (ماشین حساب) مشاهده می کنید:
class Calculator {

  public double product(double x, double y) {
    return x * y;
  }

  // Overloading the function to handle three arguments
  public double product(double x, double y, double z) {
    return x * y * z;
  }

  // Overloading the function to handle int
  public int product(int x, int y){
    return x * y;
  }

}

class Demo {
  
  public static void  main(String args[]) {
    Calculator cal = new Calculator();
    
    double x = 10;
    double y = 20;
    double z = 5;
    
    int a = 12;
    int b = 4;
    
    System.out.println(cal.product(x, y));
    System.out.println(cal.product(x, y, z));
    System.out.println(cal.product(a, b));
  }
  
}
در کد بالا ، می بینیم که یک متد هنگام برخورد با انواع مختلف ورودی رفتار متفاوتی دارد. <blockquote>توجه: متدهایی که هیچ آرگمانی دریافت نمی کنند و فقط در نوع بازگشتی متفاوت هستند ، نمی توانند overload شوند ، زیرا کامپایلر نمی تواند بین فراخوانی آنها تفاوتی تشخیص دهد.</blockquote>

مزایای overload کردن متدها

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

در این مرحله ، ما همه چیز را راجع به ویژگی های کلاس می دانیم. با این حال ، مهمترین قسمت را هنوز بررسی نکرده ایم. چگونه می توان تعریف کرد که وقتی یک شی از کلاس ما ایجاد می شود ، چه اتفاقی می افتد؟ یا چگونه یک شی را پس از ساخته شدن مقدار دهی اولیه کنیم. در جلسه بعدی خواهیم فهمید.
// public method with one parameter speed.
public int printSpeed(int speed) {
  // ...
  
  
  return speed + 5; // return statement
}
این متد به پارامتر speed دریافت شده عدد ۵ را اضافه می کند و نتیجه را برمی گرداند. نوع بازگشتی ، int که قبل از نام متد PrintSpeed آمده است ، نشان می دهد که این متد مقداری از نوع int برمی گرداند.

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

این دو نوع متد در OOP (برنامه نویسی شی گرا) بسیار محبوب هستند. متد get مقدار یک فیلد داده خاص را بازیابی می کند ، در حالی که متد set مقدار آن را تنظیم می کند. به صورت قرار دادی نام متد های get و set با افزودن کلمه get و set به ابتدای نام فیلد مربوطه بدست می آید. در کد زیر متدهای get و set برای فیلد speed به کلاس Car اضافه شده است:
// Car class
class Car {
  
  private int speed; // member field speed

  // Setter method to set the speed of the car
  public void setSpeed(int x) {
    speed = x; 
  }

  // Getter method to get the speed of the car
  public int getSpeed() {
    return speed; 
  }
  
}

class Demo {
  
   public static void main(String args[]) {
     Car car = new Car();
     car.setSpeed(100); // calling the setter method
     System.out.println(car.getSpeed()); // calling the getter method
   } 
  
}

overload کردن متدها

<blockquote>overload به انجام عملیات های متفاوت توسط متد بر اساس ماهیت آرگمان های دریافتی آن اشاره دارد.</blockquote> متد ها را می توان در جاوا overload (دوباره تعریف) کرد. ما می توانیم چندین بار یک متد را دوباره تعریف کنیم و انواع مختلف آرگمان ها را به آن ارائه دهیم. وقتی متد فراخوانی می شود ، تعریف مناسب متد توسط کامپایلر انتخاب می شود! در زیر این کار را با overload (دوباره تعریف) کردن متد product (ضرب) در کلاس Calculator (ماشین حساب) مشاهده می کنید:
class Calculator {

  public double product(double x, double y) {
    return x * y;
  }

  // Overloading the function to handle three arguments
  public double product(double x, double y, double z) {
    return x * y * z;
  }

  // Overloading the function to handle int
  public int product(int x, int y){
    return x * y;
  }

}

class Demo {
  
  public static void  main(String args[]) {
    Calculator cal = new Calculator();
    
    double x = 10;
    double y = 20;
    double z = 5;
    
    int a = 12;
    int b = 4;
    
    System.out.println(cal.product(x, y));
    System.out.println(cal.product(x, y, z));
    System.out.println(cal.product(a, b));
  }
  
}
در کد بالا ، می بینیم که یک متد هنگام برخورد با انواع مختلف ورودی رفتار متفاوتی دارد. <blockquote>توجه: متدهایی که هیچ آرگمانی دریافت نمی کنند و فقط در نوع بازگشتی متفاوت هستند ، نمی توانند overload شوند ، زیرا کامپایلر نمی تواند بین فراخوانی آنها تفاوتی تشخیص دهد.</blockquote>

مزایای overload کردن متدها

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

در این مرحله ، ما همه چیز را راجع به ویژگی های کلاس می دانیم. با این حال ، مهمترین قسمت را هنوز بررسی نکرده ایم. چگونه می توان تعریف کرد که وقتی یک شی از کلاس ما ایجاد می شود ، چه اتفاقی می افتد؟ یا چگونه یک شی را پس از ساخته شدن مقدار دهی اولیه کنیم. در جلسه بعدی خواهیم فهمید.
class Car {

  // Public method to print speed
  public void printSpeed(int speed) {
    System.out.println("Speed: " + speed);
    }
  
}

class Demo {
  
  public static void main(String args[]) {
    Car car = new Car();
    car.printSpeed(100); // calling public method
  }
  
}

پارامترها و نوع بازگشتی متد

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

دستور بازگشت از متد

برای متدهایی که نوع بازگشتی را تعریف می کنند ، مقدار بازگشتی باید دقیقاً پس از دستور بازگشت (return) نوشته شود.
// public method with one parameter speed.
public int printSpeed(int speed) {
  // ...
  
  
  return speed + 5; // return statement
}
این متد به پارامتر speed دریافت شده عدد ۵ را اضافه می کند و نتیجه را برمی گرداند. نوع بازگشتی ، int که قبل از نام متد PrintSpeed آمده است ، نشان می دهد که این متد مقداری از نوع int برمی گرداند.

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

این دو نوع متد در OOP (برنامه نویسی شی گرا) بسیار محبوب هستند. متد get مقدار یک فیلد داده خاص را بازیابی می کند ، در حالی که متد set مقدار آن را تنظیم می کند. به صورت قرار دادی نام متد های get و set با افزودن کلمه get و set به ابتدای نام فیلد مربوطه بدست می آید. در کد زیر متدهای get و set برای فیلد speed به کلاس Car اضافه شده است:
// Car class
class Car {
  
  private int speed; // member field speed

  // Setter method to set the speed of the car
  public void setSpeed(int x) {
    speed = x; 
  }

  // Getter method to get the speed of the car
  public int getSpeed() {
    return speed; 
  }
  
}

class Demo {
  
   public static void main(String args[]) {
     Car car = new Car();
     car.setSpeed(100); // calling the setter method
     System.out.println(car.getSpeed()); // calling the getter method
   } 
  
}

overload کردن متدها

<blockquote>overload به انجام عملیات های متفاوت توسط متد بر اساس ماهیت آرگمان های دریافتی آن اشاره دارد.</blockquote> متد ها را می توان در جاوا overload (دوباره تعریف) کرد. ما می توانیم چندین بار یک متد را دوباره تعریف کنیم و انواع مختلف آرگمان ها را به آن ارائه دهیم. وقتی متد فراخوانی می شود ، تعریف مناسب متد توسط کامپایلر انتخاب می شود! در زیر این کار را با overload (دوباره تعریف) کردن متد product (ضرب) در کلاس Calculator (ماشین حساب) مشاهده می کنید:
class Calculator {

  public double product(double x, double y) {
    return x * y;
  }

  // Overloading the function to handle three arguments
  public double product(double x, double y, double z) {
    return x * y * z;
  }

  // Overloading the function to handle int
  public int product(int x, int y){
    return x * y;
  }

}

class Demo {
  
  public static void  main(String args[]) {
    Calculator cal = new Calculator();
    
    double x = 10;
    double y = 20;
    double z = 5;
    
    int a = 12;
    int b = 4;
    
    System.out.println(cal.product(x, y));
    System.out.println(cal.product(x, y, z));
    System.out.println(cal.product(a, b));
  }
  
}
در کد بالا ، می بینیم که یک متد هنگام برخورد با انواع مختلف ورودی رفتار متفاوتی دارد. <blockquote>توجه: متدهایی که هیچ آرگمانی دریافت نمی کنند و فقط در نوع بازگشتی متفاوت هستند ، نمی توانند overload شوند ، زیرا کامپایلر نمی تواند بین فراخوانی آنها تفاوتی تشخیص دهد.</blockquote>

مزایای overload کردن متدها

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

در این مرحله ، ما همه چیز را راجع به ویژگی های کلاس می دانیم. با این حال ، مهمترین قسمت را هنوز بررسی نکرده ایم. چگونه می توان تعریف کرد که وقتی یک شی از کلاس ما ایجاد می شود ، چه اتفاقی می افتد؟ یا چگونه یک شی را پس از ساخته شدن مقدار دهی اولیه کنیم. در جلسه بعدی خواهیم فهمید.در این جلسه با نقش متدها در کلاس ها آشنا خواهید شد. موارد زیر را بیان خواهیم کرد
  • هدف از متدها
  • تعریف و اعلام متد
  • پارامترها و نوع بازگشتی متد
  • دستور بازگشت از متد
  • متدهای خواندن و تنظیم کردن
  • overload کردن متدها
  • مزایای overload کردن متدها

هدف از متد ها

متدها به عنوان رابط بین یک برنامه و فیلدهای داده یک کلاس در برنامه عمل می کنند. این متدها می توانند محتوای فیلدهای داده را تغییر دهند یا از مقادیر آنها برای انجام یک محاسبه خاص استفاده کنند. همه متدهای مفید باید عمومی (public) باشند ، اگرچه برخی از متدهایی که نیازی به دسترسی از خارج ندارند ، می توانند بصورت خصوصی (private) تعریف شوند.

تعریف و اعلام متد

<blockquote>متد به گروهی از دستورات برنامه نویسی گفته می شود که برخی عملیات را انجام می دهند و ممکن است نتیجه ای را بازگرداند یا باز نگرداند.</blockquote> در اینجا مثالی از متد در جاوا آورده شده است:
class Car {

  // Public method to print speed
  public void printSpeed(int speed) {
    System.out.println("Speed: " + speed);
    }
  
}

class Demo {
  
  public static void main(String args[]) {
    Car car = new Car();
    car.printSpeed(100); // calling public method
  }
  
}

پارامترها و نوع بازگشتی متد

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

دستور بازگشت از متد

برای متدهایی که نوع بازگشتی را تعریف می کنند ، مقدار بازگشتی باید دقیقاً پس از دستور بازگشت (return) نوشته شود.
// public method with one parameter speed.
public int printSpeed(int speed) {
  // ...
  
  
  return speed + 5; // return statement
}
این متد به پارامتر speed دریافت شده عدد ۵ را اضافه می کند و نتیجه را برمی گرداند. نوع بازگشتی ، int که قبل از نام متد PrintSpeed آمده است ، نشان می دهد که این متد مقداری از نوع int برمی گرداند.

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

این دو نوع متد در OOP (برنامه نویسی شی گرا) بسیار محبوب هستند. متد get مقدار یک فیلد داده خاص را بازیابی می کند ، در حالی که متد set مقدار آن را تنظیم می کند. به صورت قرار دادی نام متد های get و set با افزودن کلمه get و set به ابتدای نام فیلد مربوطه بدست می آید. در کد زیر متدهای get و set برای فیلد speed به کلاس Car اضافه شده است:
// Car class
class Car {
  
  private int speed; // member field speed

  // Setter method to set the speed of the car
  public void setSpeed(int x) {
    speed = x; 
  }

  // Getter method to get the speed of the car
  public int getSpeed() {
    return speed; 
  }
  
}

class Demo {
  
   public static void main(String args[]) {
     Car car = new Car();
     car.setSpeed(100); // calling the setter method
     System.out.println(car.getSpeed()); // calling the getter method
   } 
  
}

overload کردن متدها

<blockquote>overload به انجام عملیات های متفاوت توسط متد بر اساس ماهیت آرگمان های دریافتی آن اشاره دارد.</blockquote> متد ها را می توان در جاوا overload (دوباره تعریف) کرد. ما می توانیم چندین بار یک متد را دوباره تعریف کنیم و انواع مختلف آرگمان ها را به آن ارائه دهیم. وقتی متد فراخوانی می شود ، تعریف مناسب متد توسط کامپایلر انتخاب می شود! در زیر این کار را با overload (دوباره تعریف) کردن متد product (ضرب) در کلاس Calculator (ماشین حساب) مشاهده می کنید:
class Calculator {

  public double product(double x, double y) {
    return x * y;
  }

  // Overloading the function to handle three arguments
  public double product(double x, double y, double z) {
    return x * y * z;
  }

  // Overloading the function to handle int
  public int product(int x, int y){
    return x * y;
  }

}

class Demo {
  
  public static void  main(String args[]) {
    Calculator cal = new Calculator();
    
    double x = 10;
    double y = 20;
    double z = 5;
    
    int a = 12;
    int b = 4;
    
    System.out.println(cal.product(x, y));
    System.out.println(cal.product(x, y, z));
    System.out.println(cal.product(a, b));
  }
  
}
در کد بالا ، می بینیم که یک متد هنگام برخورد با انواع مختلف ورودی رفتار متفاوتی دارد. <blockquote>توجه: متدهایی که هیچ آرگمانی دریافت نمی کنند و فقط در نوع بازگشتی متفاوت هستند ، نمی توانند overload شوند ، زیرا کامپایلر نمی تواند بین فراخوانی آنها تفاوتی تشخیص دهد.</blockquote>

مزایای overload کردن متدها

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

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

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

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

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

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