حال که میدانیم چگونه یک برنامه جاوا را در یک محیط برنامه نویسی پیشرفته نوشته و اجرا کنیم، وقت آن است که بیاییم و اندکی با ساختار یک برنامه در جاوا آشنا شویم. یک بار دیگر مثال خودمان را بازبینی کنیم:
public class FisrtCup { public static void main ( String [] args ) { System.out.println("My first cup of Java!"); } }
خط اول برنامه ما تعریف یک کلاس است. کلاسها اجزای اصلی برنامه نویسی شیءگرا هستند. در برنامه نویسی شیءگرا هر چیزی یک شیء است و از آن جا که اشیاء را در جاوا با کلاسها پیادهسازی میکنند، پس هر چیزی که در برنامه جاوا داریم درون کلاسها قرار میگیرند. بدنه کلاس درون { و } قرار میگیرد. خط دوم تعریف یک متد است. البته متد main() یک متد خاص و ویژه است: این متد نقطه شروع کلیه برنامههای جاوا است. برنامه ما بسیار ساده است و هیچ متد دیگری ندارد. بدنه متد هم مانند کلاس درون { و } قرار میگیرد. در داخل هر متد چندین خط دستورات (Statement) داریم. دستورات انواع مختلفی دارند که در فصلهای بعدی به آنها میپردازیم. در مثال ما در متد main() فقط یک خط دستور وجود دارد. این دستور عبارت My first cup of Java را در خروجی استاندارد (که پیشفرض آن نمایشگر است) نمایش میدهد.
حال میخواهیم یک برنامه دیگر بنویسیم. فرض کنید میخواهیم کلاسی بسازیم که نشان دهنده یک دایره باشد و همچنین محیط و مساحت دایره را هم محاسبه کند. برای این کار به تعریف یک کلاس و چندین متد برای این کارها احتیاج داریم. برای شروع کلاسی به نام Circle میسازیم:
/* * The Circle class */ public class Circle { // Attributes and methods come here }
بدنه خالی کلاس Circle ایجاد شد. چند خط اول که با /* آغاز شده و با */ تمام میشوند، توضیحات (Comment) هستند و تأثیری در اجرای برنامه ندارند. میتوانید هر توضیحی که نیاز دارید و احساس میکنید مهم است و در آینده ممکن است مفید باشد میتوانید در توضیحات بنویسید. خط بعد از توضیحات تعریف کلاس است. در داخل بدنه کلاس هم باز توضیحات داریم، اما این توضیحات با // شروع شده و تا انتهای خط ادامه مییابد.
حال برنامه خود را ادامه میدهیم. دایره را میتوان با دانستن شعاع آن شناخت. در واقع ما اگر شعاع دایره را بدانیم میتوانیم محیط و مساحت آن را به دست بیاوریم. بنابراین یک ویژگی (Attribute) به این کلاس میافزاییم:
/* * The Circle class */ public class Circle { // Attributes and methods come here private double radius; }
public که در تعریف کلاس آمده و private که در تعریف ویژگی radius آمده است مجوزهای دسترسی (Access Modifiers) نامیده میشوند. درباره مجوزهای دسترسی بیشتر خواهیم گفت. double نوع (type) ویژگی radius است. double نوع داده اعشاری است. معنی این خط این است که یک ویژگی به نام radius و از نوع اعشاری با سطح دسترسی private داریم. حال باید دو متد تعریف کنیم که محیط و مساحت دایره را بر اساس شعاع آن محاسبه کند:
/* * The Circle class */ public class Circle { // Attributes and methods come here private double radius; public void setRadius(double r) { radius = r; } public double perimeter() { return (2 * Math.PI * radius); } public double area() { return (Math.PI * radius * radius); } }
سه متد جدید به این کلاس اضافه کردیم. اولین متد متدی است به نام setRadius() که دارای یک پارامتر ورودی است. کار این تابع این است که مقداری را گرفته و شعاع دایره را برابر با آن قرار میدهد. متد دوم محیط دایره را محاسبه کرده و مقدار آن را بر میگرداند. عبارت return مقدار مقابل خود را برمیگردد. Math.PI همان عدد پی (۳٫۱۴) معروف است. متد سوم هم مساحت دایره را محاسبه میکند و مقدار آن را بر میگرداند. حال میخواهیم برنامهای بنویسیم و از کلاس فوق در آن استفاده کنیم. یک کلاس دیگر مینویسیم. این کلاس جدید شامل متد main() خواهد بود تا بتواند اجرا شود:
public class Main { public static void main(String[] args) { double radius = 5; Circle theCircle = new Circle(); theCircle.setRadius(radius); System.out.println("New Circle's Perimeter is:" + theCircle.perimeter()); System.out.println("New Circle's area is:" + theCircle.area()); } }
این کلاس دارای دو نکته مهم است:
۱- ایجاد یک شیء یا نمونه از روی یک کلاس: کلاس تعریف یک شیء است. کلاس میگوید که اشیایی که از روی آن ساخته میشوند، چه ویژگیها و چه رفتاری دارند. اما یک کلاس چیزی جز یک تعریف نیست. برای استفاده از این تعریف باید یک نمونه یا شیء از روی آن ساخت. برای مثال کلاس دایره (Circle) که تعریف کردیم، به ما امکان میدهد که چندین دایره با شعاعهای مختلف از روی آن بسازیم. میتوانیم دایرهای به نام circle1 با شعاع ۱۰ و دایرهای به نام circle2 با شعاع ۲۰ بسازیم. در کلاس Main که در بالا کد آن را میبینید، در خط دوم تابع main() از روی کلاس Circle یک شیء یا نمونه به نام theCircle ساختهایم. درباره ساختن اشیاء از روی کلاسها در آینده باز هم خواهیم گفت. در حال حاضر شکل ایجاد نمونه از روی کلاسها را مطابق نمونه فوق به خاطر بسپارید.
۲- فراخوانی متدهای یک شیء: مطابق قوانین شیءگرایی اشیا میتوانند از طریق ارسال پیام با هم ارتباط برقرار کنند. این ارتباط همان فراخوانی متدها یا توابع است. در فراخوانی متدها، کنترل برنامه به متد منتقل شده و دستورات داخل متد یکی یکی تا انتهای متد اجرا میشوند. در مثال ما در خط سوم تابع main()، متد setRadius() شیء theCircle را فراخوانی میکنیم. این متد شعاع شیء theCircle را تنظیم میکند. برای فراخوانی متدهای یک شیء ابتدا نام شیء و سپس نقطه و پس از آن نام متد به همراه آرگومانهای آن میآید.
برنامه فوق را اجرا میکنیم و نتیجه را میبینیم:
ادامه دارد …
سلام استاد.(ublic static void main(String[] args
string[] دقیقا چیه؟ چیکارمیکنه
این متد، نقطه شروع همه برنامه های جاوا است. وقتی برنامه ای را اجرا می کنید در اصل دارید این متد را اجرا میکنید.
tnx
سپاسگزارم مجید آقا!
سلام استاد ببخشید درخطprivate double radius چراpublic نشد؟