آشنایی با نحوه ی نامگذاری صحیح متغیرها در زبان جاوا در قالب پروژه ی ظرفیت مجاز آسانسور


مطلب جدیدی که در این آموزش قرار است فرا بگیریم نحوه صحیح نامگذاری متغیرها است. علاوه بر این، تک تک اجزای تشکیل دهنده یک برنامه را مورد بررسی قرار خواهیم داد و به منظور درک بهتر مطالب آموزشی، کلیه ی این موارد را در قالب یک پروژه انجام خواهیم داد. سناریویی که برای پروژه ی خود در نظر خواهیم گرفت عبارت است از:

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

برای نوشتن چنین برنامه ای اول یک پروژه جدید در اکلیپس ایجاد می کنیم و نامی دلخواه برای آن همچون Elevator انتخاب می کنیم. در ادامه، یک کلاس تحت عنوان ElevatorCapacity به معنی ظرفیت آسانسور ایجاد کرده و به خاطر داشته باشیم که در حین ایجاد کلاس، گزینه public static void main را تیک بزنیم. حال می بایست کدی به شکل زیر داشته باشیم:

public class ElevatorCapacity {
    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    }
}

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

public class ElevatorCapacity {
    public static void main(String[] args) {
        // عنوان برنامه ظرفیت آسانسور
	System.out.println("How many people should get on?");
    }
}
به خاطر داشته باشید
برای وارد کردن کامنت به زبان فارسی، پس از Save کردن برنامه پیغامی روی صفحه ظاهری می شود که در این مرحله می بایست گزینهUTF-8 Save as را انتخاب کرد.

حال به بررسی تک تک کلید واژه هایی از زبان برنامه نویسی جاوا می پردازیم که بعد از کامنت در کد آمده اند. در حقیقت واژه System یکی از کلاس ها یا آجرهای سازنده API در زبان برنامه نویسی جاوا است. System به بخش هایی از کامپیوتر ما دسترسی پیدا خواهد کرد که خارج از کنترل مستقیم ماشین مجازی جاوا یا JVM است (این توضیحات فقط جهت آگاهی بیشتر آمده است و از برنامه نویسان مبتدی درخواست می شد خیلی ذهن خود را درگیر مسائلی از این دست نکنند.) واژه out نشانگر جایی در برنامه اکلیپس است که متن را در آن به نمایش در می آورد. در واقع در محیط برنامه نویسی اکلیپس این مکان همان پنجره کنسول است که نمونه اجرا شده برنامه خود را می توانیم در آن مشاهده کنیم. متد println این دستور را به کامپیوتر می دهد که یک خط از کد را روی صفحه به نمایش در آورد.

هشدار
باز هم یادآور می شویم که زبان برنامه نویسی جاوا به حروف بزرگ و کوچک حساس است از اینرو اگر واژه System را با حرف کوچک به صورت system بنویسیم برنامه ما اجرا نخواهد شد. این مسئله در موارد مابقی کلید واژگان فوق نیز صدق می کند.

پس از آشنایی با معنای تک تک کلید واژه های فوق، بایستی گفت هر آنچه که در داخل پرانتز در مقابل متد println قرار گیرد، در پنجره ی کنسول در حین اجرای برنامه چاپ خواهد شد. نکته ای که در اینجا می بایست مد نظر قرار دهیم این است که اگر بخواهیم یک جمله را در کنسول چاپ نماییم، در داخل پرانتز می بایست دو علامت " " قرار داده و متن خود را داخل آن تایپ کنیم اما در صورتی که بخواهیم فقط به طور مثال مقدار یک متغیر را روی صفحه به نمایش در آوریم می بایست صرفاً نام آن متغیر را درون پرانتز مقابل println بنویسیم که در این صورت هر آنچه مقداری که برای آن متغیر از پیش تعیین کرده باشیم روی صفحه نمایش داده خواهد شد.

پس از اجرای برنامه، جمله ی ?How many people should get on به معنای چند نفر می بایست سوار شوند؟ در کنسول اکلیپس چاپ شود. هم اکنون می بایست یک متغیر از جنس int برای ذخیره سازی وزن هر شخص که به طور متوسط 75 کیلو است را تعریف نماییم. برای اینکار به صورت زیر عمل می کنیم:

int weightOfEachPerson = 75;

در واقع نام این متغیر را weightOfEachPerson به معنی وزن هر فرد می گذاریم و مقدار آن را 75 کیلو در نظر می گیریم (توجه داشته باشیم که واحد کیلو فقط در ذهن ما است و هیچ جایی در int آن را تعریف نمی کنیم. از سوی دیگر فرض را در این برنامه بر آن می گذاریم که وزن افراد یک عدد صحیح خواهد بود. اگر بخواهیم چنین امکانی را فراهم کنیم که وزن افراد به صورت اعشاری وارد برنامه شود -مثلاً 75.5- صرفاً نیاز است تا از متغیری از جنس double استفاده کنیم.)

نحوه نام گذاری این متغیر هم به این شکل است که اولین کلمه که weight است با یک حرف کوچک شروع شده و حرف اول کلمات بعدی با حرف بزرگ شروع شده اند(در حقیقت شما هر نامی به هر شکلی را می توانید برای خود در نظر بگیرید اما نکته این جا است که این نوع نامگذاری یک روش رایج مابین برنامه نویسان حرفه ای است و به امید خدا چنانچه روزی شما هم به یک برنامه نویس حرفه ای جاوا مبدل شدید و خواستید عضوی از یک تیم برنامه نویسی شوید، دیگر مشکلی در رابطه با نحوه نامگذاری نخواهید داشت.)

نکته
این روش نام گذاری که اصطلاحاً camelCase نامیده می شود منجر به راحت خواندن اسامی در محیط برنامه نویسی اکلیپس می شود زیرا اگر به طور مثال نام متغیر خود را به صورت عادی و به شکل weightofeachperson بنویسیم، به دشواری می توانیم آن را بخوانیم. در زبان انگلیسی واژه Camel به معنای شتر است و این سبک نوشتن به این خاطر به camelCase معرف شده است که نامی که ما در نظر می گیریم یک شمایی از کوهان شتر را خواهد داشت.

در مرحله بعد یک متغیر دیگر از جنس int برای ظرفیت آسانسور به شکل زیر تعریف می کنیم:

int elevatorCapacity = 750;

نام این متغیر را elevatorCapacity به معنی ظرفیت آسانسور با مقداری به میزان 750 کیلو تعریف می کنیم. حال بایستی یک متغیر دیگر از جنس int ایجاد کنیم که در آن مقدار elevatorCapacity را بر مقدار weightOfEachPerson تقسیم کنیم. نام این متغیر آخر را numberOfPeople به معنی تعداد افراد می گذاریم و به صورت زیر آن را می نویسیم:

int numberOfPeople = elevatorCapacity / weightOfEachPerson;

در واقع در کد بالا میزان مقدار این متغیر را حاصل تقسیم ظرفیت آسانسور بر وزن هر شخص تعیین می کنیم. در مرحله آخر از نوشتن برنامه خود می بایست یک متغیر از جنس boolean تعریف کنیم که از طریق آن اجازه بسته شدن درب آسانسور را صادر خواهیم کرد. نام این متغیر را doorClosingOrder یا فرمان بسته شدن در می گذاریم و به شکل زیر آن را می نویسیم:

boolean doorClosingOrder = numberOfPeople > 10;

به طور خلاصه ما به این متغیر دستور می دهیم که اگر مقدار numberOfPeople که حاصل تقسیم مقادیر elevatorCapacity بر weightOfEachPerson می باشد بیش از 10 شود بایستی مقدار boolean که دو حالت بیشتر ندارد true شود یعنی تعداد افراد سوار شده در آسانسور بیش از 10 نفر است و در غیر این صورت مقدار false در نظر گرفته شود به این معنی که تعداد افراد سوار شده در آسانسور کمتر از 10 نفر است. حال کد خود را به شکل زیر تکمیل می کنیم:

public class ElevatorCapacity {
    public static void main(String[] args) {
        // عنوان برنامه ظرفیت آسانسور
        System.out.println("How many people should get on?");
        //وزن هر شخص
        int weightOfEachPerson = 75;
        //ظرفیت آسانسور
        int elevatorCapacity = 750;
        //تقسیم کردن ظرفیت آسانسور بر وزن هر شخص و اختصاص آن به یک متغییر
        int numberOfPeople = elevatorCapacity / weightOfEachPerson;
        //تعیین اینکه آیا ظرفیت بیش از 10 نفر است یا خیر؟
        boolean doorClosingOrder = numberOfPeople > 10;
        //نمایش جمله ای به معنای اینکه آیا تعداد افراد بیش از ده نفر است؟
        System.out.println("Is the number of people more than 10?");
        //نمایش نتیجه متغییر بولین
        System.out.println(doorClosingOrder);
    }
}

در نهایت جمله ی ?Is the number of people more than 10 را از طریق دستور ;()System.out.println در کنسول نمایش می دهیم و پس از آن نتیجه متغیر boolean را در خط آخر کد خود روی صفحه نمایش می دهیم. در این مرحله از کار، برنامه ی خود را اجرا کرده و خروجی برنامه را در کنسول مشاهده می کنیم. همان طور که در تصویر زیر مشاهده می شود، در بخش کنسول پس از اجرای برنامه کلمه ی false نمایش داده خواهد شد:

در واقع برای روشن تر شدن مطلب، کد خود را تفسیر می کنیم. در ابتدا وزن هر فرد را به طور متوسط 75 کیلو در نظر می گیریم و ظرفیت آسانسور را 750 کیلو. سپس ظرفیت آسانسور را بر 75 تقسیم می کنیم که عدد 10 به دست می آید. حال در boolean محاسبه می کنیم که اگر مقدار numberOfPeople بیش از 10 باشد مقدار این متغیر true شود و اگر کمتر از 10 باشد این مقدار false شود. سپس جمله ی ?Is the number of people more than 10 به معنی آیا تعداد افراد بیش از 10 نفر است؟ را در کنسول نمایش می دهیم و بعد از آن نتیجه boolean خود را روی صفحه نمایش نشان می دهیم. در واقع با محاسباتی که انجام می دهیم در پاسخ به سوال فوق، برنامه نتیجه false به معنای نادرست یا خیر را به ما می دهد. از آنجا که پاسخ به سوال فوق خیر است، این اجازه به درب آسانسور داده می شود تا بسته شود.

هم اکنون می توانیم برنامه نهایی را در اختیار مدیر ساختمان قرار داده تا با همکاری شرکت آسانسور سازی، آسانسور برج مسکونی را به آن مجهز کند (البته کل این سناریو ساختگی بوده و صرفاً جهت درک بهتر مطالب آموزشی مورد استفاده قرار گرفت!)

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

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
mortezagorji69
mortezagorji69
خوبه ولی آموزش ها خیلی مقدماتیه.آموزش های پیشرفته و کاربردی تر هم داره اینجا؟
abbasdehghani8
abbasdehghani8
سلام راه بزرگ یا کوچیک کردن کد ها در eclipseچیه؟؟؟
mahtab.rashidi
mahtab.rashidi
سلام و ممنون بابت سایت خول و مطالب مفیدتون .
آیا در این مثال بهتر نبود وزن و تعداد رو از افراد می پرسید و بعد ظرفیت محاسبه می کرد که نتیجه همیشه یک شکل نباشه؟
سوال دیگه ام اینه که برای ساخت اپلیکیشن موبایل الان این آموزشی که دارم توی سایت شما میخونم مناسبه؟
javac.life.jav
javac.life.jav
یک بنای معمولی با توجه به تصورات و تجربه های خود خانه می سازد ولی یک معمار طبق نقشه ساختمان جلو می رود و معمار حق ندارد از چهارچوب نقشه خارج شود.(مهندسی و گام به گام یاد بگیرید و بکار گیرید)
من برنامه نویسی میکرو کنترلر به زبان بیسیک رو مثل یک بنا یاد گرفتم و بعدها واقعا برام کسل کننده شد و الان دارم جاوا یاد میگیرم. تا زمانی که به اندازه کافی دید وسیع پیدا نکردید از چهارچوب آموزش خارج نشید و تمرین ها در حد آموزش انجام بدید و به وقتش پروبال بدید.
بازم از استاد عزیز تشکر میکنم بخاطر دید همه جانبه در آموزش
pedram.iz
pedram.iz
سلام
جسارتا این مثال نمیتونه تعداد افراد داخل اسانسور رو درست حساب کنه.مثلا فرض میکنیم 10 نفر که همگی 50 کیلو وزن دارن سوار آسانسور شدن که وزنی معادل 500 کیلو میشه.حالا اگر ما وزن مجاز وسیله یعنی 750 کیلو رو تقسیم بر 50 کنیم میشه 15 که از 10 نفر مجاز ما بیشتر میشه و در آسانسور بسته نمیشه
مثال درست این باید باشه:

public class ElevatorCapacity {

public static void main(String[] args) {
System.out.println("How Many Passengers must be get on");
int weightOfEachPerson = 75;
int wholeWeightOfPersons = weightOfEachPerson*10;
int capacityOfElevator = 750;
boolean doorClosingOrder = wholeWeightOfPersons capacityOfElevator;
System.out.println("Is the number of peaple more than 10");
System.out.println(doorClosingOrder);

}

}
محمد
محمد
با عرض سلام خدمت مدیر عزیز سکان آکادمی
واقعا از آموزش های خوب و عالیتون مچکرم دسته شما و همه دستند در کاران ممنون بی نظیرید سپاس
vahid
vahid
سلام.متشکرم
بعضی از دوستان به مثال ایراد گرفته بودند .مثل اینکه توجه نداشتن که اینها مثال هستند و برای درک بهتره مطالبه .بجای تشکر ایراد نگیرید اونهم ایراد بنی ....
کاربر میهمان
Fffمن یک کاربر مهمان هستم
باید یک متغیر دیگه بعنوان مقدار وزن ورودی هم داشته باشیم و همچنین ترازوی موجود در اسانسور!!!
یا من اشتباه میکنم؟؟
کاربر میهمان
Fffمن یک کاربر مهمان هستم
با سلام ضمن تشکر
باید بگم این مثال خیلی افتضاح بوده ، حالا اگه ما فرض کنیم وزن هر شخص ۷۵ باشه و چه کوچیک چه بزرگ و اسانسور هم تشخیص بده که ۱۰ نفر وارد شدن،
باز هم اگه تعداد کمتر از ۱۰ باشه مقدار false خروجی بولین ما خواهد بود
green
green
باورم نمیشد برای جاوا جایی آموزشی باشه به این روانی و کارامدی از پایه
واقعا مرسی
دو روز دو فصل همگام با آموزش های بی نظیر سکان آکادمی