بسم الله الرحمن الرحیم
تمرین جاوا - سیستم مدیریت ورزش
در اين تمرين مي خواهيم ساختار كلاسهای نشان داده شده در زير را پياده سازی كنيم .
اگر اسامی در عکس ناخواناست در زیر می توانید ببینید .
sport: String team: String position: String
first: String
last: String
atBats: int
hits: int
battingAverage (): double
innings: double
earnedRuns: int
earnedRunAverage (): double
minutes: int
goals: int
goalsPerGame (): double
goalsAllowed: int
averageGoalsAllowed: double
علاوه بر کلاسهای عنوان شده ، شما به یک کلاس main با متد main هم نیاز خواهید داشت که اطلاعات یک مجموعه بازیکن را از فایل ورودی players.txt که به شما داده شده و با توجه به فایل فرمت (data format) می خواند .
با توجه به هر خط خوانده شده از فایل ورودی باید از یکی از کلاسهای Pitcher، BaseballPlayer SoccerPlayer یا Goaline یک شی بسازید .
این اشیا را در یک آرایه از نوع Player نگهداری کنید.
استفاده از کلمه کلیدی super
در سازنده کلاس هایی که پیاده سازی میکنید مشابه با کلاس های داده شده ، به صورت مناسب از کلمه super باید استفاه شود.
بازنویسی متد toString
علاوه بر متدهای نشان داده شده در ساختار کلاسها ، همه کلاسها یک متد toString هم دارند که در هر یک از کلاسها برای چاپ مشخصات و ویژگی های بازیکنان استفاده می شود. این متد را برای هر کلاس به درستی بازنویسی کنید برای این منظور باید موارد زیر لحاظ شود.
۱ - برای کلاس Goalie باید مقدار averageGoalsallowed و برای کلاس SoccerPlayer باید مقدار goalsperGame با استفاده از روابط زیر در متدهای مربوطه محاسبه شده و در toString بعد از فراخوانی مورد استفاده قرار بگیرند.
goals per game = (goals/minutes) * 90.
average goals allowed = (goalsAllowed/minutes) * 90
۲. مقادیر خواسته شده در آیتم بالا باید به فرمت سه رقم اعشار برگردانده شوند. به این منظور، میخواهیم از متد format از کلاس String استفاده نماییم برای آشنایی با نحوه استفاده از این متد از جستجو در اینترنت استفاده کرده و همچنین میتوانید مشابه با متد toString در کلاسهایی که در اختیارتان قرار گرفته عمل کنید متد format برای تعیین فرمت داده استفاده شده و مشابه با printf که قبلا در مبانی برنامه نویسی با آن آشنا شدید کار میکند فقط به جای ارسال نتیجه به خروجی آن را به صورت یک رشته برمی گرداند.
استفاده از اینترفیس
فرض کنید دو اینترفیس به نامهای Defend و shoot داریم که هر یک فقط یک متد به ترتیب به نام های
canDefend و canShoot
را تعریف می کنند در پیاده سازی کلاس soccerPlayer اینترفیس Shoot و در کلاس BaseballPlayer اینترفیس Defend را پیاده سازی کنید پیاده سازی متدها فقط شامل مقداردهی به یک مقدار بولین به نام canDefend و canShoot خواهد بود که با هر بار فراخوانی با احتمال ۰٫۵ مقدار true و در غیر این صورت مقدار false خواهد داشت برای انجام این فرآیند از تولید عدد تصادفی در جاوا با توزیع یکنواخت استفاده کنید مقدار این بولین باید در متدهای toString این دو کلاس به عنوان بخشی از خروجی برگدانده شود.
در متد main از کلاس main باید با استفاده از چند ریختی و آرایه ای که از اشیای player دارید، متد toString هر شی را فراخوانی کرده و علاوه بر متد toString هر شی متد toString پدر هر شی را نیز فراخوانی نمایید و سپس مقادیر حاصل را خط به خط در یک فایل خروجی output.txt چاپ نمایید.
کدهای حل شده این تمرین در گیتهاب :