ใบงานที่ 2 - OOP
Table of Contents
1) โจทย์ข้อที่ 1 (6 คะแนน)
จงสร้างคลาส Account
สำหรับทำธุรกรรมทางการเงิน เช่น ฝาก ถอน โอน โดยมีรายละเอียดดังนี้
รายละเอียดเกี่ยวกับแอตทริบิวต์
- มีแอตทริบิวต์
name
เก็บชื่อเจ้าของบัญชี - มีแอตทริบิวต์
balance
เก็บยอดเงินในบัญชี - มีแอตทริบิวต์
type
เก็บประเภทของบัญชี ซึ่งมีอยู่ 2 ประเภท คือG
และS
รายละเอียดเกี่ยวกับเมธอด
- เมธอด constructor (1 คะแนน)
สำหรับใช้ในการกำหนดชื่อบัญชี (name
) ยอดเงินในบัญชี (balance
) และประเภทของบัญชี (type
)
- เมธอด
__str__
(1 คะแนน)
สำหรับกำหนดให้ส่งค่ากลับเป็นข้อความแสดงชื่อบัญชีและยอดเงินในบัญชี
โดยกำหนดรูปแบบข้อความความ ดังนี้ ชื่อบัญชี:ยอดเงินในบัญชี
เช่น John:2000
- เมธอดชื่อ
deposit
(1 คะแนน)
สำหรับฝากเงินในบัญชีเป็นจำนวนเงิน x บาท ทุกครั้งที่เมธอดนี้ทำงานจะต้องอัพเดทยอดเงินในบัญชี โดย
- ถ้าเงินที่ฝากนั้นมีค่าติดลบ จะไม่มีการเปลี่ยนแปลงต่อบัญชี และส่งค่ากลับเป็น
False
- ถ้าฝากเงินได้เรียบร้อย จะส่งค่ากลับเป็น
True
- เมธอดชื่อ
withdraw
(1 คะแนน)
สำหรับถอนเงินในบัญชีเป็นจำนวนเงิน x บาท ทุกครั้งที่เมธอดนี้ทำงานจะต้องอัพเดทยอดเงินในบัญชี โดย
- เมื่อถอนเงินแล้วยอดเงินในบัญชีต้องไม่ติดลบ มิฉะนั้นจะไม่สามารถถอนเงินได้ และจะส่งค่ากลับเป็น
False
เช่น ต้องการถอนเงิน 1,000 บาท ในขณะที่มีเงินในบัญชี 999 บาท ก็จะไม่สามารถถอนเงินได้ และจะส่งค่ากลับเป็นFalse
- ถ้าเงินที่ต้องการถอนนั้นมีค่าติดลบ จะไม่มีการเปลี่ยนแปลงต่อบัญชี และส่งค่ากลับเป็น
False
- ถ้าถอนเงินได้เรียบร้อย จะส่งค่ากลับเป็น
True
- เมธอดชื่อ
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 คะแนน)
- สร้างออบเจ็กต์ของคลาส
Account
ชื่อa1
โดยมีประเภทบัญชีเป็นG
ชื่อบัญชีเป็นJohn
และยอดเงินในบัญชี 20,000 บาท - สร้างออบเจ็กต์ของคลาส
Account
ชื่อa2
โดยมีประเภทบัญชีเป็นS
ชื่อบัญชีเป็นJane
และยอดเงินในบัญชี 10,000 บาท - ถอนเงินในบัญชีของ
a1
เป็นเงิน 1,000 บาท - ถอนเงินในบัญชีของ
a2
เป็นเงิน 1,000 บาท - ฝากเงินในบัญชีของ
a1
เป็นเงิน 5,000 บาท - โอนเงินจากบัญชีของ
a1
ไปยังa2
เป็นเงิน 20,000 บาท - แสดงยอดเงินในบัญชีของ
a1
- แสดงยอดเงินในบัญชีของ
a2