در این مقاله، قصد داریم به آموزش استفاده از کلاس Event در جاوا(که قبلا آن را ایجاد کردیم) بپردازیم.
در مقاله ی قبلی، یک کلاس Event ایجاد کردیم، اکنون می خواهیم یک اپلیکیشن CreateEventObject ایجاد کنیم. در این اپلیکیشن، از کاربر می خواهیم تا یک نوعِ(type) رویداد(event) را وارد کند. سپس برنامه، بسته به نوع انتخاب شده، یک مدیر(manager) و یک نرخ(rate) را برای رویداد(Event) انتخاب می کند. ِ
رویداد های خصوصی(Private) توسط Dustin Britt مدیریت می شوند و قیمت آنها ساعتی 47.99 دلار است. رویدادهای شرکتی(Corporate) توسط Carmen Lindsey مدیریت می شوند و قیمت آنها ساعتی 75.99 دلار است. رویدادهایی که توسط سازمان های غیر انتفاعی نگهداری می شوند، توسط Robin Armenetti مدیریت می شوند و قیمت آنها 40.99 است. پس از اینکه کاربر، یک نوع رویداد را انتخاب می کند، ما یک آبجکت Event که حاوی داده های مناسب رویداد است را نمونه گیری(instantiate) می کنیم.
برای ایجاد یک اپلیکیشن که از کلاس Event استفاده کند، گام های زیر را انجام دهید:
1. در ادیتور متنی خود، یک فایل جدید باز کنید و برای آغاز کردن کلاس CreateEventObject، عبارت زیر را تایپ کنید:
import java.util.Scanner;
public class CreateEventObject
{
public static void main(String[] args)
{
2. متغیرها و ثابت های زیرا را که در برنامه مورد استفاده قرار گیرند، اضافه کنید:
int eventType;
String chosenManager = "";
double chosenRate = 0;
Event scheduledEvent = new Event();
final int PRIVATE_CODE = 1;
final int CORPORATE_CODE = 2;
final int NONPROFIT_CODE = 3;
final String PRIVATE_MANAGER = "Dustin Britt";
final String CORP_MANAGER = "Carmen Lindsey";
final String NONPROFIT_MANAGER = "Robin Armenetti";
final double PRIVATE_RATE = 47.99;
final double CORP_RATE = 75.99;
final double NONPROFIT_RATE = 40.99;
boolean choiceIsGood = true;
3.یک آبجکت Scanner تعریف کنید تا از آن برای دریافت یک ورودی از کاربر، برای تعیین نوع رویداد استفاده شود:
Scanner input = new Scanner(System.in);
System.out.println("What type of event are you scheduling?");
System.out.print("Enter " + PRIVATE_CODE + " for private, " + CORPORATE_CODE + " for corporate, or " + NONPROFIT_CODE + " for nonprofit… ");
eventType = input.nextInt();
4. یک کد تصمیم گیری بنویسید که مدیر(manager) صحیح را انتخاب کند و بر اساس انتخاب کاربر، نرخ گذاری(rate) کند. چونکه وقتی کاربر 1 یا 2 یا 3 را انتخاب می کند،، دو دستور داریم که اجرا می شوند، باید این دستورات در داخل یک جفت آکولاد باز و بسته قرار گیرند. اگر کاربر، 1 یا 2 یا 3 را وارد نکند، مقدار متغیر بولین choiceIsGood برابر با false می شود.
if(eventType == PRIVATE_CODE)
{
chosenManager = PRIVATE_MANAGER;
chosenRate = PRIVATE_RATE;
}
else
if(eventType == CORPORATE_CODE)
{
chosenManager = CORP_MANAGER;
chosenRate = CORP_RATE;
}
else
if(eventType == NONPROFIT_CODE)
{
chosenManager = NONPROFIT_MANAGER;
chosenRate = NONPROFIT_RATE;
}
else
choiceIsGood = false;
5. اگر کاربر یک انتخاب معتبر داشته باشد، این مقادیر را برای سه فیلدی که در آبجکت Event هستند، تنظیم می کنیم. در غیر این صورت یک پیغام خطا را نمایش می دهیم.
if(choiceIsGood)
{
scheduledEvent.setType(eventType);
scheduledEvent.setManager(chosenManager);
scheduledEvent.setRate(chosenRate);
}
else
System.out.println("You entered " + eventType + " which is invalid.");
6. برای تایید اینکه Event به درستی ایجاد شده باشد، فیلدهای آبجکت Event را نمایش می دهیم:
System.out.println("Scheduled event:");
System.out.println("Type: " + scheduledEvent.getType() + " Manager: " + scheduledEvent.getManager() + " Rate: " + scheduledEvent.getRate() + " per hour");
7. حالا یک آکولاد بسته برای متد main()
و یکی دیگر، برای کلاس مورد نظر، اضافه کنید:
}
}
8. اپلیکیشن را با نام CreateEventObject.java ذخیره کنید. برنامه را کامپایل و چند بار اجرا کنید و از مقادیر مختلف بعنوان ورودی آن استفاده کنید. تایید کنید که در خروجی برنامه، بسته به پاسخی که از برنامه دریافت می کنید، مدیر رویداد(manager) و نوع(type) و نرخ(rate) درست باشند. (اگر پاسخی که دریافت می کنید، یک نوع رویداد نامعتبر باشد، آنگاه مقادیر پیش فرض برای رویداد نشان داده خواهند شد). تصویر 5.26، دو بار اجرای این برنامه را نشان می دهد.
(تصویر 5.26 : خروجی اپلیکیشن CreateEventObject پس از اینکه کاربر 3 و سپس 4 را وارد می کند)
با حذف کردن مقادیر مقادیر اولیه، برای chosenManager و chosenRate برنامه را آزمایش کنید. با انجام این کار، وقتی که برنامه را کامپایل می کنیم، پیغام های خطایی را برای دستورات setManager()
و setRate()
مشاهده می کنیم که می گوید chosenManager و chosenRate ممکن است مقداردهی اولیه(initialized) نشده باشند.
کامپایلر مشخص می کند که مقایر برای آن متغیرها بسته به دستورات if تنظیم شده است و بنابراین بسته به خروجی، ممکن است آنها هرگز مقادیر معتبری به ما ندهند. حالا مقادیر مقداردهی اولیه ی صحیح را برای این متغیرها جایگزین کنید تا برنامه با موفقیت کامپایل شود.
با حذف کردن مقادیر اولیه بری متغیر بولین choiceIsGood، برنامه را آزمایش کنید. حالا وقتی که برنامه را کامپایل کنیم، یک پیغام خطا مشاهده می کنیم مبنی بر اینکه متغیر مورد نظر ممکن است هرگز مقدار دهی اولیه(initialized) نشده باشد. زیرا مقدار false برای این متغیر تنظیم شده است.
فقط تحت شرایط خاص( یک ورودی نوع یا type نامعتبر) کامپایلر مشخص می کند که این متغیر ممکن است یک مقدار قابل استفاده نداشته باشد. حالا مقدار اولیه را (به درستی) جایگزین کنید و دوباره برنامه را کامپایل کنید تا به درستی کار کند.