اشکال هندسی (تا پایان جلسه دهم)
سطح سوال: متوسط
آنچه از این جلسه باید بدانید: آشنایی با وراثت و فرایند مقداردهی اولیه در زیرکلاسها
بستهی ir.javacup.paint را دانلود کنید. در این بسته سه کلاس با نامهای Shape، Circle و Square وجود دارد. کلاس Shape در دو کلاس دیگر به ارث رسیده است. برای تکمیل این کلاسها، دو هدف اصلی داریم:
- چاپ اطلاعات هر یک از این اشکال هندسی به شیوهای استاندارد
- مقایسهی دو نمونه از یک شکل هندسی و تشخیص یکسان بودن یا یکسان نبودن این دو نمونه بر مبنای ویژگیهایی که دارند.
در مورد اول همانطور که گفته شد باید امکانی فراهم شود تا با اجرای کد زیر:
Circle c = new Circle(Color.BLUE, Pattern.DOTTED, 10); System.out.println(c);
دقیقا این عبارت:
Circle[color:BLUE, pattern:DOTTED, radius:10]
و با اجرای کد زیر نیز:
Square s = new Square(Color.BLUE, Pattern.DOTTED, 10); System.out.println(s);
دقیقا این عبارت:
Square[color:BLUE, pattern:DOTTED, length:10]
چاپ شود. دقت کنید که فاصلهها و بزرگ و کوچک بودن حروف، اهمیت دارند. در مورد دوم نیز همانطور که گفته شد سعی داریم بتوانیم یکسان بودن دو مربع یا دو دایره را بر مبنای ویژگیهایی که دارند تشخیص دهیم.
- دو دایره زمانی یکسان محسوب میشوند که دارای رنگ، الگو و اندازهی شعاع یکسانی باشند.
- دو مربع زمانی یکسان محسوب میشوند که دارای رنگ، الگو و طول ضلع یکسانی باشند.
به این منظور باید متدی با نام equals بر روی این کلاسها قابل فراخوانی باشد. دقت کنید که این متد، شیای از نوع همان کلاس را به عنوان ورودی میگیرد و نه شیای از جنس Object. بنابراین این متد Override شدهی متد equals مربوط به کلاس Object نیست! بدیهی است که (equals(null باید مقدار false برگرداند. به این ترتیب:
- یک متد (public boolean equals(Square obj در کلاس Square و
- یک متد (public boolean equals(Circle obj در کلاس Circle
باید داشته باشیم که شما پیادهسازی آن را باید انجام دهید.
توصیه:
از کدتان استفادهی مجدد کنید و قسمتهایی که در دو کلاس Circle و Square تکراری هستند را به کلاس پدرشان منتقل کنید.
آنچه باید آپلود کنید:
یک فایل زیپ شامل بستهی ir.javacup.paint است. به صورتی که وقتی فایل زیپ را باز میکنیم، دقیقا شاخهی ir را ببینیم که درون آن شاخهی javacup و درون آن نیز شاخهی paint قرار دارد. در داخل شاخهی paint باید سه فایل با نامهای Shape.java، Square.java و Circle.java وجود داشته باشد.
برای داوری تمرین، میتوانید پاسخ خود را در سایت Quera به نحوی که در بالا گفته شد، بارگذاری کنید.
با ما همراه باشید:
آدرس کانال تلگرام: IranianJavaDevelopers@
آدرس صفحه اینستاگرام: javacup.ir
آدرس گروه لینکدین: Iranian Java Developers
وقتی length دو تا شکل هر دو null باشه مساوی هستند؟
سلام
این حالت رخ نخواهد داد.
داخل کلاس Circle متغیر radius به صورت Double تعریف شده و تو خروجی مشکل ایجاد میکنه
سلام
چه مشکلی ایجاد میشه؟
سلام خسته نباشید خیلی ممنون از وقتی که برای طرح سوال گذاشتین
با کمال احترام radius رو فک کنم در جریان طرح سوال redius نوشتین اگر وقت کردین اصلاحش کنین.
سلام
خیلی ممنونیم که اطلاع دادید. اصلاح شد.
Salam Link morede nazar baraye download file moshkel darad lotfan baresi shavad
سلام
اصلاح شد