IF34348 - PEMROGRAMAN LANJUT OBJECT ORIENTED PROGRAMMING (OOP) 06 Oleh : Andri Heryandi, M.T.
LATIHAN MEMBUAT CLASS Oleh : Andri Heryandi, M.T. 2
CLASS KARAKTER Class ini digunakan untuk objek-objek yang digunakan dalam game perang. Atribut dari class ini adalah : nama darah : nama objek/karakter : menyimpan darah/kesehatan. dayahancur : besarnya kehancuran jika objek ini mengenai objek lain. Jika suatu karakter mempunyai darah 90, kemudian terkena oleh objek ini, maka darah objek lain akan berkurang sebesar daya hancurnya. Oleh : Andri Heryandi, M.T. 3
CLASS KARAKTER Method dari class ini adalah : Karakter(String nama) : Constructor dengan parameter nama saja. Jika constructor ini dipanggil maka nama akan terisi sesuai parameter, darah akan berisi 100 dan dayahancur akan bernilai 1. Karakter(String nama, int dayahancur) : Constructor dengan parameter nama dan dayahancur. Jika constructor ini dipanggil maka nama akan terisi sesuai parameter, darah akan berisi 100 dan dayahancur akan bernilai sesuai parameter. getnama() : Mereturnkan atribut nama getdarah() : Mereturnkan atribut darah getdayahancur() : Mereturnkan atribut dayahancur tambahdarah() : Menambah banyak darah dengan nilai parameter. Maksimum hasil penjumlahan adalah 100. kurangidarah() : Mengurangi banyak darah sesuai nilai parameter. Minimum hasil pengurangan adalah 0 (tidak boleh minus) Oleh : Andri Heryandi, M.T. 4
CLASS KARAKTER Method dari class ini adalah : (lanjutan) hidup() : Mereturnkan true jika darah lebih dari 0. mati() : Mereturnkan true jika dari sama denagn 0. terkenamusuh() : mengurangi darah sesuai dengan daya hancur dari objek parameternya. Jika daya hancur objek parameter adalah 5, maka darahnya berkurang 5. Oleh : Andri Heryandi, M.T. 5
CLASS KARATER TESTER p a c k a g e g a m e ; p u b l i c class K a r a k t e r T e s t e r { p u b l i c static void main(string[] a r g s ) { K a r a k t e r player1,player2; p l a y e r 1 = n e w K a r a k t e r ( " P l a y e r 1 " ) ; p l a y e r 2 = n e w K a r a k t e r ( " P l a y e r 2 ", 8 ) ; S y s t e m. o u t. p r i n t l n ( " 1. " + p l a y e r 1. g e t N a m a ( ) + " : " + p l a y e r 1. g e t D a r a h ( ) + " % " ) ; S y s t e m. o u t. p r i n t l n ( " 2. " + p l a y e r 2. g e t N a m a ( ) + " : " + p l a y e r 2. g e t D a r a h ( ) + " % " ) ; S y s t e m. o u t. p r i n t l n ( " P l a y e r 1 terkena P l a y e r 2 " ) ; p l a y e r 1. t e r k e n a M u s u h ( p l a y e r 2 ) ; S y s t e m. o u t. p r i n t l n ( " 3. " + p l a y e r 1. g e t N a m a ( ) + " : " + p l a y e r 1. g e t D a r a h ( ) + " % " ) ; S y s t e m. o u t. p r i n t l n ( " P l a y e r 2 terkena P l a y e r 1 " ) ; p l a y e r 2. t e r k e n a M u s u h ( p l a y e r 1 ) ; S y s t e m. o u t. p r i n t l n ( " 4. " + p l a y e r 2. g e t N a m a ( ) + " : " + p l a y e r 2. g e t D a r a h ( ) + " % " ) ; S y s t e m. o u t. p r i n t l n ( " P l a y e r 1 terkena P l a y e r 2 sebanyak 1 0 k a l i " ) ; for(i n t i=1;i<=10;i++) p l a y e r 1. t e r k e n a M u s u h ( p l a y e r 2 ) ; S y s t e m. o u t. p r i n t l n ( " 5. " + p l a y e r 1. g e t N a m a ( ) + " : " + p l a y e r 1. g e t D a r a h ( ) + " % " ) ; S y s t e m. o u t. p r i n t l n ( " P l a y e r 1 dapat b o n u s d a r a h 25"); p l a y e r 1. t a m b a h D a r a h ( 2 5 ) ; S y s t e m. o u t. p r i n t l n ( " 6. " + p l a y e r 1. g e t N a m a ( ) + " : " + p l a y e r 1. g e t D a r a h ( ) + " % " ) ; int i = 0 ; w h i l e ( p l a y e r 1. h i d u p ( ) ) { p l a y e r 1. t e r k e n a M u s u h ( p l a y e r 2 ); i + + ; S y s t e m. o u t. p r i n t l n ( p l a y e r 1. g e t N a m a ()+" t e r k e n a " + i + " k a l i, d a r a h " + p l a y e r 1. g e t D a r a h ( ) ) ; Oleh : Andri Heryandi, M.T. 6
CLASS KARATER TESTER Hasil Run: ---------------------------------------------- 1.Player 1 : 100% 2.Player 2 : 100% Player 1 terkena Player 2 3.Player 1 : 92% Player 2 terkena Player 1 4.Player 2 : 99% Player 1 terkena Player 2 sebanyak 10 kali 5.Player 1 : 12% Player 1 dapat bonus darah 25 6.Player 1 : 37% Player 1 terkena 1 kali, darah 29 Player 1 terkena 2 kali, darah 21 Player 1 terkena 3 kali, darah 13 Player 1 terkena 4 kali, darah 5 Player 1 terkena 5 kali, darah 0 Oleh : Andri Heryandi, M.T. 7
CLASS PEMANAH Class ini digunakan untuk objek berkarater Pemanah. Seorang pemanah mempunyai daya hancur 10. Atribut dari class ini adalah : banyakpanah Method dari class ini adalah : : banyak panah yang masih dimiliki oleh objek. Pemanah(String nama) : Constructor dengan parameter nama saja. Jika constructor ini dipanggil maka nama akan terisi sesuai parameter, daya hancur terisi 10 dan banyak panah diisi 10. Pemanah(String nama, int banyakpanah) : constructor dengan parameter nama dan banyak panah. Jika constructor ini dipanggil maka nama akan terisi sesuai parameter, daya hancur terisi 10 dan banyak panah akan terisi sesuai parameter. Oleh : Andri Heryandi, M.T. 8
CLASS PEMANAH Method dari class ini adalah : getbanyakpanah() : Mereturnkan nilai atribut banyakpanah tambahpanah() : Menambahkan banyak panah sesuai parameter. Maksimum banyak panah yang bisa diisi adalah 20. kurangipanah() : Mengurangi banyak panah sesuai parameter. Minimum banyak panah adalah 0. Method ini harus private karena hanya boleh dipanggil oleh method memanah(). memanah() : Jika masih memiliki panah, maka akan melepas panah (memanggil kurangipanah(1)), dan jika tidak memiliki panah akan menulis Panah Habis. Oleh : Andri Heryandi, M.T. 9
CLASS PEMANAH TESTER package game; public class PemanahTester { public s t a tic void main(string[] args) { Pemanah arjuna=new Pemanah("Arjuna"); System.out.println("Hallo n ama saya "+a r j una.getnama ()); System.out.println("Darah : "+arjuna.getdarah()); System.out.println("Daya H a ncur : "+a r j u n a.getdayahancur()); System.out.println("Banyak Panah : "+a r j u na.getbanyakpanah ()); System.out.println("-------------------------"); Karakter lawan=new Karakter("Lawan"); arjuna.terkenamusuh( lawan); arjuna.memanah(); lawan.terkenamusuh( arjuna); System.out.println("Darah A rjuna : "+a r j u na.getdarah ()); System.out.println("Darah L awan : "+l a w a n.getdarah ()); System.out.println("Panah A rjuna : "+a r j una.getbanyakpanah ()); arjuna.tambahpanah(100); System.out.println("Panah A rjuna : "+a r j una.getbanyakpanah ()); Oleh : Andri Heryandi, M.T. 10
CLASS PEMANAH TESTER Hasil Run: ---------------------------------------------- Hallo nama saya Arjuna Darah : 100 Daya Hancur : 10 Banyak Panah : 10 ------------------------- Darah Arjuna : 99 Darah Lawan : 90 Panah Arjuna : 9 Panah Arjuna : 20 Oleh : Andri Heryandi, M.T. 11
CLASS PENEMBAK Class ini digunakan untuk objek berkarater Penembak. Seorang pemanah mempunyai daya hancur 20. Atribut dari class ini adalah : banyakpeluru Method dari class ini adalah : : banyak peluru yang masih dimiliki oleh objek. Penembak(String nama) : Constructor dengan parameter nama saja. Jika constructor ini dipanggil maka nama akan terisi sesuai parameter, daya hancur terisi 20 dan banyak peluru diisi 6. Penembak(String nama, int banyakpeluru) : constructor dengan parameter nama dan banyak peluru. Jika constructor ini dipanggil maka nama akan terisi sesuai parameter, daya hancur terisi 20 dan banyak peluru akan terisi sesuai parameter. Oleh : Andri Heryandi, M.T. 12
CLASS PEMANAH Method dari class ini adalah : getbanyakpeluru() : Mereturnkan nilai atribut banyakpeluru tambahpeluru() : Menambahkan banyak peluru sesuai parameter. Maksimum banyak peluru yang bisa diisi adalah 6. kurangipeluru() : Mengurangi banyak peluru sesuai parameter. Minimum banyak peluru adalah 0. Method ini harus private karena hanya boleh dipanggil oleh method menembak() saja. menembak() : Jika masih memiliki peluru, maka akan melepas 1 peluru (memanggil kurangipeluru(1)), dan jika tidak memiliki otomatis reload (banyak peluru kembali menjadi 6) akan menulis Peluru Reloaded!!!. Oleh : Andri Heryandi, M.T. 13
CLASS PEMANAH TESTER p a c k a g e g a m e ; p u b l i c c l a s s P e n e m b a k T e s t e r { public s t a t i c v oid main(string[] args ) { P e n e m b a k s n i p e r = n e w P e n e m b a k ( " S n i p e r " ) ; S y s t e m. o u t. p r i n t l n ( " H a l l o n a m a s a y a "+s n i p e r. g e t N a m a ( ) ) ; S y s t e m. o u t. p r i n t l n ("D a r a h : " + s n i p e r. g e t D a r a h ( ) ) ; S y s t e m. o u t. p r i n t l n ("D a y a H a n c u r : " + s n i p e r. g e t D a y a H a n c u r ( ) ) ; S y s t e m. o u t. p r i n t l n ("B a n y a k P e l u r u : " + s n i p e r. g e t B a n y a k P e l u r u ( ) ) ; S y s t e m. o u t. p r i n t l n ("- - - - - - - - - - - - - - - - - - - - - - - - - "); K a r a k t e r l a w a n = n e w K a r a k t e r ("L a w a n " ) ; s n i p e r. t e r k e n a M u s u h ( l a w a n ); s n i p e r. m e n e m b a k (); l a w a n. t e r k e n a M u s u h ( s n i p e r ); S y s t e m. o u t. p r i n t l n ("D a r a h S n i p e r : " + s n i p e r. g e t D a r a h ( ) ) ; S y s t e m. o u t. p r i n t l n ("D a r a h L a w a n : " + l a w a n. g e t D a r a h ( ) ) ; S y s t e m. o u t. p r i n t l n ("P e l u r u S n i p e r : " + s n i p e r. g e t B a n y a k P e l u r u ( ) ) ; s n i p e r. t a m b a h P e l u r u ( 1 0 ); S y s t e m. o u t. p r i n t l n ("P e luru Sniper : " + s n i per.getbanyakpeluru ( )); f o r ( i n t i = 1 ; i < = 1 3 ; i + + ) { s n i p e r. m e n e m b a k (); S y s t e m. o u t. p r i n t l n ("T e m b a k a n ke- " + i + " P e l u r u : "+s n i p e r. g e t B a n y a k P e l u r u ( ) ) ; Oleh : Andri Heryandi, M.T. 14
CLASS PEMANAH TESTER Hasil Run: ---------------------------------------------- H a l l o n a m a s a y a S n i p e r D a r a h : 1 0 0 D a y a H a n c u r : 2 0 B a n y a k P e l u r u : 6 - - - - - - - - - - - - - - - - - - - - - - - - - D a r a h S n i p e r : 9 9 D a r a h L a w a n : 8 0 P e l u r u S n i p e r : 5 P e l u r u S n i p e r : 6 T e m b a k a n ke- 1 P e l u r u : 5 T e m b a k a n ke- 2 P e l u r u : 4 T e m b a k a n ke- 3 P e l u r u : 3 T e m b a k a n ke- 4 P e l u r u : 2 T e m b a k a n ke- 5 P e l u r u : 1 P e l u r u R e l o a d e d!!! T e m b a k a n ke- 6 P e l u r u : 6 T e m b a k a n ke- 7 P e l u r u : 5 T e m b a k a n ke- 8 P e l u r u : 4 T e m b a k a n ke- 9 P e l u r u : 3 T e m b a k a n ke- 10 P e l u r u : 2 T e m b a k a n ke- 11 P e l u r u : 1 P e l u r u R e l o a d e d!!! T e m b a k a n ke- 12 P e l u r u : 6 T e m b a k a n ke- 13 P e l u r u : 5 Oleh : Andri Heryandi, M.T. 15
CLASS ALL KARAKTER TESTER p a c k a g e g a m e 1 ; p u b l ic class AllKarakterTester { p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) { P e m a n a h a r j u n a = n e w P e m a n a h ("A r j u n a " ) ; P e n e m b a k s n i p e r = n e w P e n e m b a k ( " S n i p e r " ) ; S y s t e m. o u t. p r i n t l n ("A r j u n a : D a r a h "+a r j u n a. g e t D a r a h ( ) ) ; S y s t e m. o u t. p r i n t l n ( " S n i p e r : D a r a h "+s n i p e r. g e t D a r a h ( ) ) ; S y s t e m. o u t. p r i n t l n ("- A R J U N A M E M A N A H - S N I P E R M E N E M B A K - " ) ; s n i p e r. m e n e m b a k (); a r j u n a. t e r k e n a M u s u h ( s n i p e r ) ; a r j u n a. m e m a n a h ( ) ; s n i p e r. t e r k e n a M u s u h ( a r j u n a ); S y s t e m. o u t. p r i n t l n ("A r j u n a : D a r a h "+a r j u n a. g e t D a r a h ( ) ) ; S y s t e m. o u t. p r i n t l n ( " S n i p e r : D a r a h "+s n i p e r. g e t D a r a h ( ) ) ; S y s t e m. o u t. p r i n t l n ("- S N I P E R D I T E M B A K D I R I N Y A --" ) ; s n i p e r. t e r k e n a M u s u h ( s n i p e r ) ; S y s t e m. o u t. p r i n t l n ( "Sniper : Darah "+s n iper.getdarah ()); Oleh : Andri Heryandi, M.T. 16
CLASS ALL KARAKTER TESTER S y s t e m. o u t. p r i n t l n ("- A R J U N A M E M A N A H S N I P E R S A M P A I P A N A H H A B I S - "); int p a n a h _ k e = 0 ; w h i l e ( a r j u n a. g e t B a n yakpanah ()>0){ p a n a h _ k e ++; a r j u n a. m e m a n a h ( ) ; S y s t e m. o u t. p r i n t l n ("P a n a h ke- "+p a n a h _ k e + " D a r a h S n i p e r " + s n i p e r. g e t D a r a h ( ) ) ; s n i p e r. t e r k e n a M u s u h ( a r j u n a ); Oleh : Andri Heryandi, M.T. 17
CLASS ALL KARAKTER TESTER Hasil Run: ---------------------------------- - A r j u n a : D a r a h 100 S n i p e r : D a r a h 100 - A R J U N A M E M A N A H - S N I P E R M E N E M B A K - A r j u n a : D a r a h 80 S n i p e r : D a r a h 90 - S N I P E R D I T E M B A K D I R I N Y A -- S n i p e r : D a r a h 70 - A R J U N A M E M A N A H S N I P E R S A M P A I P A N A H H A B I S - P a n a h ke- 1 D a r a h S n i p e r 7 0 P a n a h ke- 2 D a r a h S n i p e r 6 0 P a n a h ke- 3 D a r a h S n i p e r 5 0 P a n a h ke- 4 D a r a h S n i p e r 4 0 P a n a h ke- 5 D a r a h S n i p e r 3 0 P a n a h ke- 6 D a r a h S n i p e r 2 0 P a n a h ke- 7 D a r a h S n i p e r 1 0 P a n a h ke- 8 D a r a h S n i p e r 0 P a n a h ke- 9 D a r a h S n i p e r 0 P a n a h ke- 10 D a r a h S n i p e r 0 P a n a h ke- 11 D a r a h S n i p e r 0 P a n a h ke- 12 D a r a h S n i p e r 0 P a n a h ke- 13 D a r a h S n i p e r 0 P a n a h ke- 14 D a r a h S n i p e r 0 P a n a h ke- 15 D a r a h S n i p e r 0 P a n a h ke- 16 D a r a h S n i p e r 0 P a n a h ke- 17 D a r a h S n i p e r 0 P a n a h ke- 18 D a r a h S n i p e r 0 P a n a h ke- 19 D a r a h S n i p e r 0 Oleh : Andri Heryandi, M.T. 18