Bài t p 2: Inheritance and Interfaces
T o ng d ng đ tính toán thu nh p cho các c u th bong chày. ng d ng g mc l p sau:
Player:
Abstract class
Thu c tính: Tên c u th
Constructor: gán giá tr cho Tên c u th
Abstract Method: displayDetail: Hi n th tên c u th
Tax
Interface
Ch a Constant TAX_PERCENT
Abstract Method: calculateTax() tính thu thu nh p c a c u th ế
PlayerIncome:
Th a k l p ế Player và th c thi (implement) l p Tax
Thu c tính: Thu nh p c a c u th (income)
Constructor: có hai tham s ch a tên và thu nh p c a c u th .
oGán giá tr cho thu c tính thu nh p
oG i Constructor c a l p Player đ gán giá tr cho thu c tinh tên c u th
Vi t code(implement) cho ph ng th c ế ươ calculateTax { return TAX_PERCENT* income; }
Vi t code(implement) cho ph ng th c ế ươ displayDetail: hi n th tên ,thu nh p thu ế
thu nh p c a c u th xu t (name + “, income=” + income + “tax=” + calculateTax() );
GradeBonus:
Interface
Constant: GRADE_BONUS_PERCENT: t l th ng cho c u th (giá tr =0.3) ưở
Abstract method: calculateGradeBonus: tính ti n th ng cho c u th ưở
TournamentIncome:
Th a k l p ế Player và th c thi Interface GradeBonus
Thu c tính: grade (h ng c u th ), rate(m c đáng giá c a c u th )
Constructor: có ba tham s : ch a tên, h ng và đánh giá c a c u th :
oGán giá tr cho thu c tính h ng, đánh giá
oG i Constructor c a l p Player đ gán giá tr cho thu c tinh tên c u th
Vi t code(implement) cho ph ng th c ế ươ
ocalculateGradeBonus:
if (grade>=2 && rate>=2) return GREAT_BONUS_PERCENT * grade;
return 0; // code t n đ nh
odisplayDetail:
xu t (name + “,Bonus=” + calculateGreatBonus());
PlayerTest:
{ main()
{ PlayerIncom p1= new PlayerIncome( “Albert”, 10000);
TournamentIncome p2= new TournamentIncome (“Alberto”,3,2);
p1.displayDetail();
p2.displayDetail();
}
}