Oop lab/oop intro 1

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
หน้านี้เป็นส่วนหนึ่งของ oop lab

Counter

ให้ทดลองเขียนคลาส Counter พร้อมกับ JUnit Test Case ตามในคลิป จากนั้นให้เพิ่มคลาสดังกล่าวให้รองรับเมท็อดต่าง ๆ เพิ่มเติม โดยก่อนที่จะเขียนเมท็อดเหล่านี้ ให้เพิ่ม TestCase ใน JUnit ก่อนด้วย

1. เมท็อด decrease - ลดค่า counter

2. เพิ่มเมท็อด resetToInit() -- เมท็อด reset ที่เราเขียน ปรับค่า counter ให้กลายเป็น 0, แต่เมท็อด resetToInit จะปรับ counter ให้กลับมามีค่าเหมือนตอนที่เริ่ม init ครั้งแรก ใน constructor

3. ให้เพิ่มความสามารถในการปรับขนาดของการเพิ่มและลดค่า counter โดยให้เพิ่ม constructor Counter(int initValue, int stepSize) โดยค่า stepSize แทนค่าที่จะปรับ counter แต่ละครั้ง เช่น ถ้า stepSize = 3 เมื่อเราสั่ง increase ค่า counter จะเพิ่มขึ้น 3, เมื่อเราสั่ง decrease ค่า counter จะลดลง 3 เป็นต้น

PlayerHealth

เราจะเขียนคลาส PlayerHeath พร้อม ๆ กับสร้าง JUnit Test Case ใน PlayerHealthTest เพื่อจัดการกับสถานะพลังชีวิตของผู้ใช้ โดยมีรายละเอียดดังนี้

  • พลังชีวิต: ค่าพลังชีวิตของผู้จะมีค่าเป็นจำนวนเต็ม มีค่าระหว่าง 100 ถึง 0 เมื่อพลังเหลือ 0 ผู้ใช้จะตาย
    • เมื่อเริ่มต้นพลังชีวิตเท่ากับ 100
    • เมท็อด isDead() และ isAlive() คืนค่า boolean ว่าผู้ใช้ยังมีชีวิตอยู่หรือไม่
    • เมท็อด getHP() คืนค่าพลังชีวิต
    • เมท็อด setHP(int hp) ตั้งค่าพลังชีวิต
  • เกราะ: ผู้ใช้จะมีสถานะเพิ่มเติมว่าใส่เกราะหรือไม่ เริ่มต้นไม่มีเกราะ
    • เมท็อด void wearArmor() เมื่อเรียกจะทำให้ผู้ใช้มีเกราะ
    • เมท็อด void removeArmor() เมื่อเรียกจะทำให้ผู้ใช้ไม่มีเกราะ
    • เมท็อด boolean isOnArmor() คืนค่า true/false แทนสถานะว่ามีเกราะหรือไม่
  • getHit: ผู้ใช้สามารถโดนทำร้ายได้ และพลังจะลด เมท็อดที่เรียกเมื่อถูกทำร้ายคือ getHit
    • พลังจะลดลง 10 หน่วย ถ้าไม่ใส่เกราะ ถ้าใส่เกราะจะลดลง 3 หน่วย
    • พลังจะไม่น้อยกว่า 0 หน่วย
  • การรักษา:
    • heal: เมื่อเรียกเมท็อด heal() พลังเพิ่มขึ้น 5 หน่วย
    • superHeal: เมื่อเรียกเมท็อด superHeal() พลังเพิ่มขึ้น 7 หน่วย
    • พลังจะไม่เกิน 100 หน่วย

ด้านล่างเป็นโครงเปล่าของคลาส PlayerHealth อย่างไรก็ตาม ค่อย ๆ ทยอยเพิ่มเมท็อดตามที่เขียนจะดีกว่า

public class PlayerHealth {
  public PlayerHealth() {
  }
  
  public int getHP() {
    return 0;
  }
  public void setHP(int hp) {    
  }
  
  public boolean isAlive() {
    return false;
  }
  public boolean isDead() {
    return false;
  }
  
  public void wearArmor() {
  }
  public void removeArmor() {
  }
  public boolean isOnArmor() {
    return false;
  }
  
  public void getHit() {
  }
  
  public void heal() {
  }  
  public void superHeal() {
  }
}