Home / ใบงานที่ 2 - OOP

ใบงานที่ 2 - OOP

You are not logged in.

If you are a current student, please Log In for full access to this page.

Table of Contents

1) โจทย์ข้อที่ 1 (6 คะแนน)

จงสร้างคลาส Account สำหรับทำธุรกรรมทางการเงิน เช่น ฝาก ถอน โอน โดยมีรายละเอียดดังนี้

รายละเอียดเกี่ยวกับแอตทริบิวต์

  • มีแอตทริบิวต์ name เก็บชื่อเจ้าของบัญชี
  • มีแอตทริบิวต์ balance เก็บยอดเงินในบัญชี
  • มีแอตทริบิวต์ type เก็บประเภทของบัญชี ซึ่งมีอยู่ 2 ประเภท คือ G และ S

รายละเอียดเกี่ยวกับเมธอด

  1. เมธอด constructor (1 คะแนน)

สำหรับใช้ในการกำหนดชื่อบัญชี (name) ยอดเงินในบัญชี (balance) และประเภทของบัญชี (type)


  1. เมธอด __str__ (1 คะแนน)

สำหรับกำหนดให้ส่งค่ากลับเป็นข้อความแสดงชื่อบัญชีและยอดเงินในบัญชี โดยกำหนดรูปแบบข้อความความ ดังนี้ ชื่อบัญชี:ยอดเงินในบัญชี เช่น John:2000


  1. เมธอดชื่อ deposit (1 คะแนน)

สำหรับฝากเงินในบัญชีเป็นจำนวนเงิน x บาท ทุกครั้งที่เมธอดนี้ทำงานจะต้องอัพเดทยอดเงินในบัญชี โดย

  • ถ้าเงินที่ฝากนั้นมีค่าติดลบ จะไม่มีการเปลี่ยนแปลงต่อบัญชี และส่งค่ากลับเป็น False
  • ถ้าฝากเงินได้เรียบร้อย จะส่งค่ากลับเป็น True

  1. เมธอดชื่อ withdraw (1 คะแนน)

สำหรับถอนเงินในบัญชีเป็นจำนวนเงิน x บาท ทุกครั้งที่เมธอดนี้ทำงานจะต้องอัพเดทยอดเงินในบัญชี โดย

  • เมื่อถอนเงินแล้วยอดเงินในบัญชีต้องไม่ติดลบ มิฉะนั้นจะไม่สามารถถอนเงินได้ และจะส่งค่ากลับเป็น False เช่น ต้องการถอนเงิน 1,000 บาท ในขณะที่มีเงินในบัญชี 999 บาท ก็จะไม่สามารถถอนเงินได้ และจะส่งค่ากลับเป็น False
  • ถ้าเงินที่ต้องการถอนนั้นมีค่าติดลบ จะไม่มีการเปลี่ยนแปลงต่อบัญชี และส่งค่ากลับเป็น False
  • ถ้าถอนเงินได้เรียบร้อย จะส่งค่ากลับเป็น True

  1. เมธอดชื่อ transfer (2 คะแนน)

โดยเมธอดนี้จะถูกเรียกใช้ในรูปแบบ a1.transfer(a2, amount) เมื่อ a1, a2 เป็นบัญชี และ amount เป็น จำนวนเงินที่ต้องการโอน และเป็นเมธอดสำหรับโอนเงินจากบัญชี A ไปยังบัญชี B เป็นจำนวนเงิน x บาท ทุกครั้งที่เมธอดนี้ทำงานจะต้องอัพเดทยอดเงินในทั้งสองบัญชี โดย

  • หากบัญชี A (ผู้โอน) มีประเภทของบัญชีเป็น S จะไม่ต้องเสียค่าธรรมเนียมในการโอนเงิน แต่ถ้ามีประเภทของบัญชีเป็น G จะต้องเสียค่าธรรมเนียมโอนเงิน 20 บาท
  • เมื่อโอนเงินแล้วยอดเงินในบัญชีต้องไม่ติดลบ มิฉะนั้นจะไม่สามารถโอนเงินได้ และจะส่งค่ากลับเป็น False เช่น นาย ก. เปิดบัญชีประเภท G มีเงิน 1000 บาท ต้องการโอนเงินให้นาย ข. จำนวน 981 บาท และเมื่อรวมค่าธรรมเนียมการโอน 20 บาท จะทำให้ยอดเงินในบัญชีของนาย ก. ติดลบ ดังนั้น จึงไม่สามารถโอนเงินได้ และส่งค่ากลับเป็น False
  • สามารถโอนเงินแต่ละครั้งได้ไม่เกิน 30,000 บาทเท่านั้น มิฉะนั้นจะไม่สามารถโอนเงินได้ และส่งค่ากลับเป็น False
  • ถ้าเงินที่ต้องการโอนมีค่าติดลบ จะไม่มีการเปลี่ยนแปลงต่อบัญชี และจะส่งค่ากลับเป็น False
  • ถ้าโอนเงินได้เรียบร้อย จะส่งค่ากลับเป็น True

2) โจทย์ข้อที่ 2 (2 คะแนน)

เขียนโปรแกรมเพื่อสร้างออบเจ็กต์และเรียกใช้เมธอด ตามลำดับดังนี้ (2 คะแนน)

  1. สร้างออบเจ็กต์ของคลาส Account ชื่อ a1 โดยมีประเภทบัญชีเป็น G ชื่อบัญชีเป็น John และยอดเงินในบัญชี 20,000 บาท
  2. สร้างออบเจ็กต์ของคลาส Account ชื่อ a2 โดยมีประเภทบัญชีเป็น S ชื่อบัญชีเป็น Jane และยอดเงินในบัญชี 10,000 บาท
  3. ถอนเงินในบัญชีของ a1 เป็นเงิน 1,000 บาท
  4. ถอนเงินในบัญชีของ a2 เป็นเงิน 1,000 บาท
  5. ฝากเงินในบัญชีของ a1 เป็นเงิน 5,000 บาท
  6. โอนเงินจากบัญชีของ a1 ไปยัง a2 เป็นเงิน 20,000 บาท
  7. แสดงยอดเงินในบัญชีของ a1
  8. แสดงยอดเงินในบัญชีของ a2