
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 m các 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 và 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();
}
}

