سلام
در این نوبت ۲ تمرین آمده که به شرح زیر هستند.
این تمرینات با فرمت اسم گذاری زیر فشرده کرده(ZIP ویا RAR) و به آدرس و با شیوه زیر(هم email و هم فایل های ضمیمه شده به ایمیل) اسم گزاری کنید:
hw3_<class number>_firstName_lastName.zip<or rar>
برای مثال کسی بانام مهدی مظاهری که در کلاس ۲۰۳ می باشد و با فرمت RAR می فرستد به شکل زیر است:
hw3_203_mahdi_mazaheri.rar
توجه:هر گونه عدم رعایت درست نام گزاری فایل ها و توابع و کلاس های خواسته شده امکان از دست دادن کل نمره را موجب می شود.
شما باید دو فایل Date.java و Path.java که در package ای با نام hw3 قرار دارد با فرمت بالا فشرده کنید!
تمرین ۱) کلاس Date را پیاده سازی کنید:
جهت اطلاعات بیشتر در مورد تاریخ شمسی به زیر مراجعه کنید:
اسفند را ۲۹ روزه در نظر بگیرید و سال کبیسه نداریم.
class Date{ Date(int day, int month, int year){...} Date(String){...} Date add(Date date){...} Date sub(Date date){...} int daysTo(Date date){...} String dateToString(){...} }
روز و ماه سال را با Constructor اول مقداردهی کنید.
برای پیاده سازی Constructor دوم ورودی را به فرمت زیر در نظر بگیرید:
{day}/{month}/{year} example: 21/9/1392
شروع تاریخ را تاریخ زیر در نظر بگیرید:
1/1/0
دو متد add و sub به مقدار داده شده تاریخ را جابجا می کند و یک شی جدید حاوی تاریخ محاسبه شده بر میگرداند. دقت کنید نباید شی کنونی تغییر کند:
28/2/1372 + 4/3/0 -> 1/5/1372 example: Date d = new Date(28/2/1372); d.add(new Date(4/3/0));
متد daysTo تعداد روزهای باقیمانده تا تارخ قید شده را برمی گرداند.
متد daysToString به فرمت ورودی سازنده دوم باید تاریخ را تبدیل کند.
تمرین ۲) کلاس Path را پیاده سازی کنید:
class Path{ Path(){...} Path addPoint(int x, int y){...} Boolean removePoint(int number){...} void addPath(Path p){...} double getLength(){...} double getDistance(){...} boolean isLonger(Path p){...} }
سازنده ی کلاس یک مسیر خالی را ایجاد می کند.(طول مسیر خالی صفر است!)(ما در صفحه ی xy کار می کنیم!)
توضیحات تکمیلی: فرض کنید هر Path حداکثر ۱۰۰ نقطه دارد.
متد addPoint یک نقطه به شی کنونی اضافه می کند. سپس شی ای جدید برمیگرداند.
متد removePoint نقطه ی numberام را از مسیر حذف می کند. (برای اولین نقطه number را ۱ در نظر گرفته شود.) اگر نقطه وجود نداشت false برمی گرداند و در غیر این صورت true.
متد addPath یک شی Path را به شی کنونی اضافه می کند. به این صورت که نقطه ی ابتدایی آن را به نقطه انتهایی این شی اضافه می کند و به ترتیب نقاط بعدی را اظافه می کند.
متد getLength مسافتی که با عبور از تمام نقاط طی می شود بر می گرداند.
متد getDistance فاصله ی نقطه ی ابتدایی و انتهایی برمی گرداند.
دو متد getLength و getDistance تا دقت ۴ رقم اعشار برمی گردانند. بدون گرد کردن.
متد isLonger در صورتی true برمی گرداند که مسافتی که این شی طی می کند بیشتر از شی داده شده به متد است.