لیست حقوق (تا پایان جلسه یازدهم)
سطح سوال: ساده
آنچه از این جلسه باید بدانید: آشنایی با مفهوم چندریختی و استفاده از کلاسها و متدهای انتزاعی
بستهی ir.javacup.salary را دانلود کنید. در این بسته دو کلاس Employee و SalaryListCreator و یک کلاس انتزاعیEncoder وجود دارد. برنامهی شما قرار است لیست حقوق کارمندهای یک شرکت را برای دو سیستم مدیریت منابع انسانی (HRM) و مدیریت مالی (FM) آماده کند. برنامهی شما باید بتواند محتوای (رشته) لیست حقوق را برای این سیستمها تولید کند.
برای این کار دو کلاس به صورت زیر ایجاد کنید:
- برای سیستم مدیریت منابع انسانی: کلاس HrmSalaryListCreator که زیرکلاس SalaryListCreator باید تعریف شود.
- برای سیستم مدیریت مالی: کلاس FmSalaryListCreator که زیر کلاس SalaryListCreator باید تعریف شود.
هر سطر از این لیست شامل اطلاعات یک کارمند است که هر سیستم قالب مخصوصی را برای نمایش آن دارد:
- سیستم مدیریت منابع انسانی (از چپ به راست):
- کد کارمند: شامل 8 کاراکتر است و اگر طول کد کارمند کمتر از 8 بود، از کاراکتر 0 در سمت چپ به مقدار لازم استفاده میشود.
- فاصله: از رشتهی برگرداندهشده توسط متد getItemSeparator از کلاس SalaryListCreator استفاده میشود.
- حقوق: شامل 10 کاراکتر است و اگر تعداد ارقام حقوق کمتر از 10 بود، از کاراکتر 0 در سمت چپ به مقدار لازم استفاده میشود.
- سیستم مدیریت مالی (از چپ به راست):
- حقوق: شامل 10 کاراکتر است و اگر تعداد ارقام حقوق کمتر از 10 بود، از کاراکتر ‘0′ در سمت چپ به مقدار لازم استفاده میشود.
- فاصله: از رشتهی برگرداندهشده توسط متد getItemSeparator از کلاس SalaryListCreator استفاده میشود.
- کد کارمند: شامل 10 کاراکتر است و اگر طول کد کارمند کمتر از 10 بود، از کاراکتر ‘0′ در سمت چپ به مقدار لازم استفاده میشود.
برای قراردادن کارکتر ‘0′ در سمت چپ یک رشته، یک متد با نام (addZeroPrefix(String str, int length در کلاس SalaryListCreator قرار دارد که باید آن را پیادهسازی و از آن استفاده کنید. این متد باید رشتهی ‘str’ دادهشده را به اندازهی طول length داده شده با کارکتر ‘0′ (در سمت چپ) گسترش دهد.
protected static String addZeroPrefix(String str, int length) { // TODO implement }
مثال:
به ازای کد زیر:
System.out.println(addZeroPrefix("1234", 8)); System.out.println(addZeroPrefix("0234", 8)); System.out.println(addZeroPrefix("12345678", 8));
باید خروجی زیر تولید شود:
00001234 00000234 12345678
راهنمایی و نکات:
- برای فاصلهی بین هر سطر (در هر دو لیست) از رشتهی برگرداندهشده توسط متد getRecordSeparator از کلاس SalaryListCreator استفاده میشود.
- پس از آخرین سطر نباید از هیچ کاراکتری استفاده شود.
- در کلاسهای HrmSalaryListCreator و SalaryListCreator، تنها متد doCreate را پیادهسازی کنید و از پیادهسازی (override کردن) سایر متدها خودداری کنید.
مثال 1:
HrmSalaryListCreator creator = new HrmSalaryListCreator(encoder); Employee[] employees = new Employee[2]; employees[0] = new Employee("71235", 1_500_000); employees[1] = new Employee("03451", 3_200_000); System.out.println(creator.doCreate(employees));
خروجی 1:
00071235 0001500000 00003451 0003200000
مثال 2:
FmSalaryListCreator creator = new FmSalaryListCreator(encoder); Employee[] employees = new Employee[2]; employees[0] = new Employee("31235", 2_000_000); employees[1] = new Employee("00531", 1_200_000); System.out.println(creator.doCreate(employees));;
خروجی 2:
0002000000 0000031235 0001200000 0000000531
آنچه باید آپلود کنید:
یک فایل زیپ شامل بستهی ir.javacup.salary است. به صورتی که وقتی فایل زیپ را باز میکنیم، دقیقا شاخهی ir را ببینیم که درون آن شاخهی javacup و درون آن نیز شاخهی salary قرار دارد. در داخل شاخهی salary باید سه فایل با نامهای SalaryListCreator.java و FmSalaryListCreator.java و HrmSalaryListCreator.java وجود داشته باشد.
برای داوری تمرین، میتوانید پاسخ خود را در سایت Quera به نحوی که در بالا گفته شد، بارگذاری کنید.
با ما همراه باشید:
آدرس کانال تلگرام: IranianJavaDevelopers@
آدرس صفحه اینستاگرام: javacup.ir
آدرس گروه لینکدین: Iranian Java Developers
سلام
من پاسخ این سوال را چندین مرتبه ارسال کردم ولی جواب تست فقط خطای زیر را نشان میدهد
در ضمن متد های doCreate با مقادیر نمونه بالا دقیقا خروجی درست و مورد نظر را برمیگردانند.
لطفا در مورد پاس شدن جواب اطلاعات بیشتری بدهید.
متشکر.
Test finished successfully
testHrmSalaryListCreator
FAILED
testFmSalaryListCreator
FAILED
testAddZeroPrefix
PASSED
سلام
لطفا اینگونه مشکلات را در کوئرا و در بخش «سوال بپرسید» مطرح کنید تا همکاران ما بتوانند پاسخی که به سوال دادهاید را بررسی کرده و همانجا به شما پاسخ دهند.
با تشکر
سلام فایل ir.javacup.salary دانلود نمیشود لطفا بررسی کنید با تشکر از سایت خوبتون
سلام
ما بررسی کردیم و ظاهرا مشکلی وجود نداشت.
لطفا یکبار دیگر تلاش کنید.
با تشکر