Lab 4 – Interface, Abstract class.


วัตถุประสงค์:
ให้สร้างอินเตอร์เฟส CompareSizeAble (ของที่จะเป็น CompareSizeAble นั้น จะต้องเปรียบเทียบขนาดกันได้) ซึ่งมีเมธอด public int isLargerThan(CompareSizeAble other); 
โดย 
ต่อจากนี้ เราจะมานิยามคลาสที่ออบเจ็กต์ของมันเปรียบเทียบขนาดกันได้






A2(w=3)       M2(h=3) M4(h=3) A4(w = 3)
M3(h=1)
A3(w=2)
M1(h=2) M5(h=2)
A1(w=6)

โดย A แทน MobileArmor ต่างๆ และ M แทน MobileSuit ต่างๆ  (h คือความสูง ส่วน w คือ ความกว้าง อันไหนที่ไม่ได้ระบุ ให้มีค่า default) ค่าตำแหน่งของแผนที่ ให้ (0,0) เป็นตำแหน่งช่องซ้ายล่าง
เขียนโค้ดทดสอบ เพื่อทำการทดสอบดังนี้


ส่วนต่อไปนี้ทดลองเฉยๆ ไม่ต้องส่ง
จากนั้นลองเปลี่ยน interface CompareSizeAble ให้มีเมธอด public boolean isItBig(); 

จะพบว่า โปรแกรมที่เขียนมาแล้วจะใช้ไม่ได้เลย เพราะอินเตอร์เฟสจะไปบังคับให้คลาสต่างๆเขียนโค้ดของ isItBig ทั้งหมด ซึ่งผู้ที่ implement อินเตอร์เฟสนั้นจะต้องเข้าไปเขียนในทุกโค้ด
วิธีแก้ คือ เราเขียนอินเตอร์เฟสใหม่ ให้ extends มาจากอินเตอร์เฟสเดิม (ใช่แล้ว ใช้ extends กับอินเตอร์เฟสได้) แล้วค่อยไปแก้ให้คลาส implement อินเตอร์เฟสใหม่แทน สำหรับคลาสที่ต้องการการอัพเดทเท่านั้น  ลองทำดู แล้วจะเห็นว่าคอมไพล์ผ่าน

การส่ง

export ไฟล์เป็น jar file (ต้องมีซอร์สโค้ด ตรวจทานให้ดี) แล้วส่งมาที่ progmethcp@gmail.com ภายในวันพุธที่ 8 กรกฎาคม เวลา 24.00 น. ไฟล์จะต้องตั้งชื่อว่า lab04_xxxxxxxxxx.jar โดย xxxxxxxxxx นั้นเป็นเลขประจำตัวนิสิต ส่วนใน subject ของเมล์ ให้ใส่ lab04_ xxxxxxxxxx โดย xxxxxxxxxx นั้นเป็นเลขประจำตัวนิสิต