امیرحسین که فردی است جوان و جویای نام! بهدنبال پیادهسازی سیستمی است که دنیا را تکان دهد. او فکری در سر دارد که احساس میکند اولین قدم از رسیدن به یک سیستم هوشمند قوی است.
او قصد دارد کلاسهایی را در زبان جاوا، فقط با داشتن اطلاعات کلی از آن کلاسها و بهصورت پویا ایجاد کند. امیرحسین که اولین گامهای این پروژه را نوشته، در تکمیل آن از شما کمک خواسته است.
پروژهی اولیه را از این لینک دانلود کنید. ساختار فایلهای پروژه اولیه بهصورت زیر است:
وظیفه اصلی شما در این سوال، تکمیل کلاس ClassUtil
است. در این کلاس متدی با نام classMaker
وجود دارد که پارامتر ورودی از نوع ClassDetail
دریافت میکند و باید کلاسی با اطلاعاتی که از این پارامتر دریافت میکند، بسازد. در ادامه به بررسی کلاس ClassDetail
میپردازیم:
ClassDetail
🔗این کلاس دارای ۵ پراپرتی زیر است:
type
: این پراپرتی که از نوع OopType
است مشخص کننده نوع کلاسی است که باید ساخته شود. این نوع میتواند enum
، interface
یا class
باشد.name
: این پراپرتی که از نوع رشته است نام کلاس را مشخص میکند.properties
: این پراپرتی که از نوع Map
است نوع و نام پراپرتیهای کلاس را مشخص میکند، در این مپ کلیدها نوع و مقادیر نام پراپرتیها است.methods
: این پراپرتی لیستی از کلاس Method
است. کلاس Method
نیز دارای سه پراپرتی returnType
، name
و parameters
است که بهترتیب نام، نوع مقدار بازگشت و پارامترهای ورودی متد را مشخص میکند.oop
: این پراپرتی لیستی از رشتهها را مشخص میکند. این رشتهها نام کلاسهای جاواست که شما باید براساس نوع این کلاسها، آنها را extends
یا implements
کنید.ClassUtil
🔗حال که با کلاس ClassDetail
آشنا شدید باید کلاس ClassUtil
را تکمیل کنید. در ادامه به بررسی دو مثال از عملکرد این کلاس خواهیم پرداخت.
فرض کنید قصد داریم تا یک enum
با نام Month
بسازیم که پراپرتی با نام NAME
دارد. برای این کار کد زیر را مینویسیم و از متد کلاسی که تکمیل کردید استفاده میکنیم:
خروجی این کد باید کلاسی بهصورت زیر باشد:
در مثالی دیگر فرض کنید قصد داریم تا کلاسی بسازیم که دارای مقادیری بهصورت زیر باشد:
که در این حالت متغیر code
باید بهصورت زیر باشد:
oop
قرار داده میشود، حتما وجود دارند و از پکیجهای استاندارد جاوا هستند.import
کرده باشد.extends
و ... ، باید در کلاس شما رعایت شده باشد.extends
یا implements
، کلاس شما باید کامل ساخته شود و فقط extends
یا implements
را نادیده بگیرد.void
باشد.پس از پیادهسازی موارد خواستهشده، کلاس ClassUtil
را زیپ کرده و ارسال کنید.