12.6 (Student Inheritance Hierarchy)
Gambarkan inheritance hierarchy untuk students di sebuah university seperti hierarchy pada gambar 12.2.
Gunakan Student sebagai base class pada hierarchy, lalu class-class UndergraduateStudent dan GraduateStudent yang diturunkan dari Student. Kemudian
extend hierarchy tersebut sedalam mungkin (beberapa level). For example, Freshman, Sophomore, Junior dan Senior menjadi turunan dari UndergraduateStudent, dan DoctoralStudent serta MastersStudent menjadi turunan dari GraduateStudent.
Setelah menggambarkan hierarchy, buatlah relationship
antara class-class tersebut. [Catatan: Anda tidak perlu menuliskan code untuk soal ini]
12.10 (Account Inheritance Hierarchy)
Buatlah inheritance hierarchy sebuah bank yang mewakili account-account dari customer bank accounts.
Semua customer dapat melakukan deposit (atau credit) uang ke dalam accountnya dan menarik (debit) uang dari accountnya.
Buatlah jenis account yang lebih spesifik: Savings accounts, earn interest, Checking accounts, charge a fee per transaction , dan lain lain.
Buatlah inheritance hierarchy berisi base class Account dan derived classes Savings-
Account dan CheckingAccount yang diturunkan dari class Account.
Base class Account terdiri dari 1 data member dengan type double untuk mewakili account balance.
Berikan constructor pada Class tersebut untuk menerima initial balance dan initialisasi data member.
Constructor juga dapat memvalidasi initial balance untuk memastikan nilai balance lebih besar atau sama dengan 0.0.
Jika tidak maka balance di-set = 0.0 dan constructor menampilkan error message bahwa initial balance invalid.
Class tersebut juga memiliki 3 member functions. Member function credit
untuk menambah jumlah current balance. Member function debit untuk penarikan uang dari Account Nasabah dan memastikan jumlah yang di-debittidak melebihi Account’s balance. Jika lebih maka balance tidak berubah dan menampilkan pesan "Jumlah Debit melebihi account balance." Lalu ada member function getBalance untuk return current balance.
Class turunan SavingsAccount akan menurunkan functionality dari sebuah Account,termasuk data member bertype double yang mengindikasikan interest rate (percentage) yang diberikan pada Account tersebut.
Constructor dari class SavingsAccount mendapatkan initial balance, sebagai initial value untuk SavingsAccount’s interest rate. SavingsAccount memiliki public member function
calculateInterest yang me-return tipe double untuk jumlah interest earned dari sebuah account.
Member function calculateInterest akan menghitung jumlah perkalian antara interest
rate dengan account balance. [Catatan: SavingsAccount akan meng-inherit member functions credit dan debit tanpa mendefinisikannya.]
Class turunan CheckingAccount inherit dari base class Account dan ditambah data member ber-type double yang merepresentasi fee charged per transaction.
Constractor Checking-Account’s akan menerima initial balance sebagai parameter yangmeng-indikasikan fee amount. Class CheckingAccount akan redefine member functions credit dan debit sehingga akan mengurangi fee dari account balance saat transaction terjadi.
CheckingAccount version akan memanggil base-class Account version untuk melakukan update terhadap account balance.
[Hint: Define Account’s debit function so that it returns a bool indicating whether money was withdrawn. Then use the return value to determine whether a fee should be charged.]
Setelah menuliskan class hierarchy, buatlah program dengan beberapa object dari tiap class dan lakukan test menjalankan member function-nya.
Tambahkan interest ke SavingsAccount object dengan terlebih dahulu memanggil fungsi calculateInterest, kemudian passing jumlah interest yang di-return ke fungsi credit object tersebut.