2110101 : Lab9 - Composition & Inheritance

 

สิ่งที่ต้องการ

เขียนคลาส DecimalLED ให้สมบูรณ์ ตามข้อกำหนดข้างล่างนี้

ข้อกำหนด

ออปเจกต์ของคลาส DecimalLED มีไว้ใช้แสดงตัวเลขฐานสิบหนึ่งหลัก (ดังตัวอย่างข้างล่างนี้ เป็น applet สร้างออปเจกต์ของ DecimalLED ซึ่งแสดงเลขฐานสิบที่เปลี่ยนค่าแบบสุ่มทุกๆ 1 วินาที)

DecimalLED มี object methods ให้บริการดังนี้ 

  • public void setDigit( int d )  เมท็อดนี้สั่งให้แสดงตัวเลขซึ่งมีค่า d โดยที่ d มีค่าได้ตั้งแต่ 0 ถึง 9  ถ้า d เป็นค่าอื่นให้แสดง "มืดๆ"
  • public int getDigit( )  เมท็อดนี้คืนจำนวนเต็มซึ่งมีค่าเหมือนกับที่แสดงอยู่ (ถ้าแสดง "มืดๆ" ให้คืนค่า -1)

คลาส SevenSegmentLED

เราจะมาสร้างคลาส DecimalLED โดย inherit (หรือบางทีเรียกว่า extends หรือ subclass) จากคลาส SevenSegmentLED  คลาส SevenSegmentLED นี้มีไว้สร้างออปเจกต์ที่ใช้เป็นหน่วยแสดงผลซึ่งประกอบไปด้วยขีดสั้นๆ 7 ขีด วางเรียงกันดังรูปข้างล่างนี้ (เขาเรียกกันว่า seven segments)  เราสามารถสั่งให้แต่ละขีดสว่างหรือดับได้ โดยการเรียกเมท็อด setSegments( s )  โดยที่ s คืออาเรย์ของ boolean ขนาด 7 ช่อง  s[k] มีค่า true ก็เมื่อเราต้องการให้ขีดหมายเลข k สว่าง  ถ้าเป็น false ก็คือให้ดับ

 เช่น

  SevenSegmentLED led = new SevenSegmentLED();
  ...
  boolean [] s = {true, false, false, true, false, false, true};
  led.setSegment( s );
  ...

ก็จะทำให้ขีดหมาย 0 3 และ 6  (ซึ่งคือขีดแนวนอน) สว่าง

คลาส SevenSegmentLED มี constructor ให้หนึ่งแบบ กับอีกสองเมท็อด ที่จะต้องสนใจใช้ก็คือ setSegment (ส่วน paint นั้น มีไว้วาดรูปบนจอ โดยตัว setSegments จะเรียกให้เอง)

คะแนนเต็ม : 10 คะแนน

  • เขียนโปรแกรม 10 คะแนน  (ไม่มีระบบตรวจอัตโนมัติ)
  • กด F6 เพื่อสั่งทำงานคลาส Lab9 (ซึ่งจะสร้างตัวนับเลข 3 หลักซึ่งเป็นออปเจกต์ของ DecimalLED โดยจะเพิ่มค่าของหลักหน่วยทุกๆ 0.1 วินาที)
  • อย่าลืมว่าต้อง submit ผลเอง (จากเมนู Lab->submit) ระบบจะไม่เตือน

เวลาปฏิบัติการ : 45 นาที