KEMENTERIAN AGAMA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI (UIN) MAULANA MALIK IBRAHIM MALANG
Alamat: Jl. Gajayana No. 50 Malang Jawa Timur 64144 Indonesia
E-mail : saintek@uin-malang.ac.id Telepon : 0341-558933 Faks : 0341-558933
NAMA : Helmi Zulfan Fanani
NIM : 19650125
Kelas : Praktikum Pemrograman Berorientasi Obyek – E
DOKUMENTASI PROJECT PBO
1. Judul dan diskripsi program
Judul : “Game Klik Bola”
Deskripsi : Dalam memenuhi tugas project Ujian Akhir Semester mata kuliah
praktikum pemrograman berorientasi obyek ini saya mengangkat project dengan judul
“Game Klik Bola”. Yang mana dalam project ini saya membuat sebuah permainan
dimana pemain akan menangkap bola yang muncul di dalam layar, dengan cara men-
klik pada objek bola tersebut. Dan Ketika pemain berhasil men-klik tepat pada bola
tersebut maka pemain akan mendapatkan skor. Untuk membuat permainan ini lebih
seru, objek bola yang akan di tangkap tesebut akan berpindah-pindah secara acak
selama waktu yang ditentukan. Dan kecepatan perpindahan bola ini dapat juga di atur.
Jadi Ketika kita memilih level susah, maka perpindahan bola akan semakin cepat.
Dalam program ini saya menerapkan beberapa materi yang telah saya peroleh dalam
pembelajaran mata kuliah pemrograman berorientasi obyek dan algoritma
pemroraman.
2. Desain class
Animasi extends thread
x : int Animasi2 extends animasi
y : int -
dx : int Void run()
dy : int Public animasi2(objek)
Void run()
Public animasi(objek)
Susah extends player
player
-
Name : String
Public susah(string name)
Score : int
Void setSpeed()
Speed : int
String getName()
Void setScore()
Int getScore() Main
Int getSpeed() -
Void main(String args)
Mudah exends player
-
Public mudah(string
name)
Void setSpeed()
Objek extends canvas GUI extends JFrame
X : int + int xx;
Y : int + int yy;
L : int + public String ting;
T : int + Public void setTingkat()
Dx : int + public String getTingkat()
Dy : int + public void klikKanvas()
posX : int + public void countdown()
posY : int + public void reset()
Public objek()
Void setLocation(int x, int y, int dx, int
dy)
Void setLocation(int x, int y)
Int getX()
Int getY()
Int getDX()
Int getDY()
Void paint(Graphics)
Void mouseClicked()
Int posX()
Int posY()
Dari desain class yang telah saya ajukan di pengajuan project UAS dan yang saya
jelaskan di dalam UTS mata kuliah raktikum pemrograman berorientasi obyek,
terdapat perbedaan class, yang mana terdapat tambahan beberapa class untuk
mendukung program ini agar dapat berjalan lebih baik.
3. Object, behavior/method, dan state/instance variable
Jelaskan setiap objek, method, dan instance variable yang ada pada desain class
anda!
Objek dapat dikatakan sebagai sesuatu yang memiliki ciri (state) dan kemampuan
melakukan sesuatu (behavior)
Class Animasi
Animasi extends thread
+ protected int x;
+ protected int y;
+ protected int dx;
+ protected int dy;
+ Public void run()
+ Public animasi(objek)
Pada class animasi akan membentuk sebuah objek yang terbentuk dari instance
variable seperti x, y, dx, dan dy. Class ini memiliki method yang dapat
dijalankan seperti method animasi yang Dan class ini akan mengatur animasi
yang akan berjalan dalam program dan thread nya. Yang dimaksud mengatur
animasi adalah dalam mengatur objek bola dalam bergerak di dalam canvas.
Class Animasi2
Animasi2 extends animasi
-
+ Public void run()
+ Public animasi(objek)
Pada class animasi 2 ini kurang lebih sama seperti class animasi, hanya saja di
dalam kelas ini memiliki reference variable yang berbeda dengan class
animasi.
Class Objek
Objek extends Canvas
+ private int x;
+ private int y;
+ private int l;
+ private int t;
+ private int dx;
+ private int dy;
+ private int posX;
+ private int posY;
+ Public objek()
+ public void setLocation(int x, int y, int dx, int dy)
+ public void setLocation(int x, int,y)
+ public int getX()
+ public int getY()
+ public int getDX()
+ public int getDY()
+ public void paint(Graphics)
+ public void mouseClicked(MouseEvent)
+ public int posX()
+ public int posY()
Sesuai dengan namaya class objek ini adalah class yang memiliki fungsi dalam
membangun objek, yang mana objek dalam program ini adalah bola, dan class
ini juga akan mencatat koordinat dari bola tersebut, dalam pembentukan objek
bola terdapat komponen yaitu int l dan int t dan juga variable untuk
koordinatnya seperti int x, int y dll.
Class Player
Player
+ protected String name;
+ private int score;
+ protected int speed;
+ Public String getName()
+ public void setScore()
+ public int getScore()
+ public int getSpeed()
Dalam class player akan terdapat instance variable yang mengidentifikasi user
atau pemain, seperti nama, score, dan speed. Terdapat juga method untuk
mengakses variable yang bersifat private dan protected seperti method
getName, getScore, setScore, dan getSpeed.
Class Mudah
Mudah extends player
-
+ Public mudah(String name)
+ public void setSpeed()
Dalam class ini memiliki semua instance variabel yang ada di dalam class
player karena class ini adalah subclass dari class player, dalam class ini
terdapat method setSpeed dan juga class mudah yang memiliki parameter
bertipe string.
Class Susah
Susah extends player
-
+ Public susah(String name)
+ public void setSpeed()
Dalam class ini memiliki semua instance variabel yang ada di dalam class
player karena class ini adalah subclass dari class player, dalam class ini
terdapat method setSpeed dan juga class mudah yang memiliki parameter
bertipe string. Perbedaan class ini dengan class mudah adalah terdapat pada
argumen di dalam method setSpeed().
Class Main
Mudah extends player
-
+ Public static void main
(String[]args)
Class ini berfungsi untuk memulai program dan memanggil class lain untuk
dijalankan dan memiliki method main.
Class GUI
GUI extends JFrame
+ int xx;
+ int yy;
+ private String ting;
+ Public void setTingkat()
+ public String getTingkat()
+ public void klikKanvas()
+ public void countdown()
+ public void reset()
Class ini adalah class yang mengatur tampilan interface dan menggabungan
dengan class lain untuk dapat mendukung tampilan agar dapat berfungsi
sebagaimana fungsinya. Memiliki berbagai instance variabel seperti int xx, int
yy, dan string ting dan berbagai method.
4. Reference variable
Sebutkan variable referensi pada program anda dan tunjukkan bagaimana
penggunaannya!
Reference variabel atau variabel referensi adalah sebuah variabel yang mereferensikan
objek atau class. Berikut variabel referensi yang saya gunakan dalam program ini.
Reference variabel pada class GUI
Dalam gambar di atas penggunaan variabel referensi terdapat pada baris yang
telah saya tandai dengan highlighter warna kuning, terdapat nama class dan
terdapat variabel referensi yang berwarna hijau. Dalam penggunaanya variabel
ini memiliki berbagai fungsi seperti variabel objek untuk menjadi parameter
pada variabel anime dan anim, sementara variabel anime dan anim memiliki
fungsi untuk pemanggilan atau mereferensikan program yang ada di dalam
class animasi dan animasi2.
Reference variabel pada class animasi
Pada gambar di atas penggunaan variabel referensi terdapat pada baris yang
telah saya tandai dengan highlighter berwarna kuning. Variabel p yang
mereferensian class mudah dan variabel pr yang mereferensikan class player.
Dalam penggunaannya variabel ini berfungsi untuk memanggil method yang
ada pada class yang di referensikan, seperti class getSpeed() dan setSpeed().
Untuk nantinya nilai tersebut akan digunakan untuk menjalankan pada class
animasi ini.
Reference variabel pada class animasi2
Pada gambar di atas penggunaan variabel referensi terdapat pada baris yang
telah saya tandai dengan highlighter berwarna kuning. Variabel s yang
mereferensian class mudah. Dalam penggunaannya variabel ini berfungsi
untuk memanggil method yang ada pada class yang di referensikan, seperti
class getSpeed() dan setSpeed(). Untuk nantinya nilai tersebut akan digunakan
untuk menjalankan pada class animasi2 ini.
5. Enkapsulasi
Apakah anda menerapkan teknik pengkapsulan pada program anda? Tunjukkan!
Di dalam program saya menerapkan Teknik enkapsulasi, Enkapsulasi adalah sebuah
cara untuk membatasi atau menyembunyikan suatu proses data agar data tidak data
diubah secara langsung, dan untuk mengubah nilai dapat dibuat method untuk
mengatur variabel data tersebut (setter & getter).
Enkapsulasi pada class GUI
Enkapsulasi pada class Objek
Enkapsulasi pada class player
Pada gambar di atas dapat dibuktikan dalam penggunaan enkapsulasi pada program
yang telah saya buat dengan adanya acces modifier private dan protected. Yang mana
akan membatasi akses untuk variabel yang ada, seperti private yang hanya dapat
diakses oleh class itu, dan protected yang hanya dapat diakses oleh class itu sendiri
dan subclassnya.
6. Inheritance
Apakah anda menerapkan teknik pewarisan pada program anda?
Jika iya, Tunjukkan superclass dan subclass dari desain anda baik menggunakan
tabel perwarisan maupun diagram class pewarisan!
Dalam program saya menerapkan Teknik pewarisan dan berikut table
pewarisannya.
Class SuperClass Subclass
Player - Mudah, Susah
Mudah Player -
Susah Player -
Animasi - Animasi2
Animasi2 Animasi -
Dan berikut adalah diagram class pewarisannya.
Player
+ protected String name;
+ private int score;
+ protected int speed;
+ Public String getName()
+ public void setScore()
+ public int getScore()
+ public int getSpeed()
Mudah extends player
- Susah extends player
+ Public mudah(String -
name) + Public susah(String name)
+ public void setSpeed() + public void setSpeed()
Animasi extends thread
+ protected int x;
+ protected int y;
+ protected int dx;
+ protected int dy;
+ Public void run()
+ Public animasi(objek)
Animasi2 extends animasi
-
+ Public void run()
+ Public animasi(objek)
Tunjukkan jika ada method yang harus di-override pada subclass.
Pada class objek yang menjad subclass dari java Canvas terdapat fungsi yang saya
Override seperti method setLocation(), getX(), dan getY().
Selain itu pada class animasi yang men-extends Thread juga saya lakukan
override pada method run()
Lakukan pengujian desain pohon pewarisan anda menggunakan IS-A test
Hasil pengujian:
(player)Mudah IS-A player? Yes
(player)Susah IS-A player? Yes
Animasi2 IS-A animasi? Yes
Apakah ada hubungan HAS-A pada desain anda? Jika iya, tunjukkan referensi
pada class tsb
Tidak ada.
7. Tingkat akses
Sebutkan penggunaan akses level pada program Anda dan jelaskan alasannya!
Akses level yang saya gunakan dalam program saya adalah public, private, dan
protected.
Akses level public
Alasan saya mengunakan akses level public adalah untuk memberi akses yang
bebas, akan tetapi penggunaan akses ini hanya saya gunakan pada sedikit
method yang umum agar dapat di akses dalam class lain.
Akses level private
Alasan saya dalam menggunakan akses level private adalah agar variabel atau
data yang penting tidak dapat dengan mudah di akses dari mana saja, untuk
pengaksesannya pun dapat dilakukan oleh class itu sendiri dengan
menggunakan setter dan getter untuk mengubah dan mengakses variabel atau
data tersebut.
Akses level protected
Alasan saya dalam menggunakan akses level protected adalah agar akses
variabel atau data yang penting tidak dapat di akses dengan mudah dari mana
saja, untuk pengaksesannya hanya dapat dilakukan oleh kelas itu sendiri dan
juga oleh subclass dari class tersebut.
8. Polimorfisme
Apakah anda menerapkan teknik polimorfis pada program anda?
Ya, dalam program saya menerapkan Teknik polimorfisme.
Jika iya, tampilkan source code program anda yang menunjukkan penerapan
polimorfisme
Dalam program yang saya buat saya menerapkan polimorfisme dinamis
menggunakan method overriding
Sebutkan variable referensi dan objek pada implementasi polimorfisme anda
Dalam method overriding tersebut terdapat variabel referensi yakni picture yang
mereferensikan pada class objek, dan objek yang dalam hal ini objeknya adalah
bola.
Tunjukkan tipe return dan argumen polimorfik pada program anda!
Pada method overriding tersebut akan mengubah method run pada thread yang
argumennya terdapat Langkah untuk menetapkan koordinat objek bola yang akan
berpindah dan sebagai pengembaliannya akan melakukan setSpeed pada variabel
p yang tehubung pada class mudah untuk men-setting speed menjadi nilai yang
telah ditetapkan, dan melakukan sleep dengan parameter yang dapatkan dengan
method getSpeed().
9. Overriding dan Overloading methode
Sebutkan method override pada program anda dan jelaskan kesesuaiannya
dengan aturan overriding.
Di dalam program saya menerapkan override, dan berikut adalah source code
penerapan override pada program saya.
Pada class Player (Superclass)
Pada class Mudah (Subclass)
Pada class Susah (Subclass)
Pada class Objek
Pada class Animasi
Penjelasan : Penggunaan overriding pada program saya dapat dikatakan sesuai
dengan ketentuan aturan override yang mana dalam aturan overriding argument
harus sama dan juga tipe return yang di override harus sesuai. Dan seperti gambar
diatas argumen yang digunakan pada superclass memiliki argument yang sama
dengan subclass yang meng-overridenya. Jadi jika dikembalikan ke aturan penting
mengenai overriding yang mana argument harus sama dan tipe return harus
sesuai, maka override yang saya gunakan telah sesuai dengan aturan tersebut.
Sebutkan method overload pada program anda (jika ada) dan jelaskan perbedaan
antar method tersebut
Method overload pada program ini terdapat pada class objek, berikut bukti dari
penggunaannya.
Penjelasan : yang dimaksud dengan overloading adalah Ketika ada dua atau lebih
method yang memiliki nama sama akan tetapi memiliki tipe data dan parameter
yang berbeda. Dengan overloading kita dapat membuat banyak method dengan
nama yang sama akan tetapi versi yang berbeda karena perbedaan dalam tipe data
dan parameternya. Seperti dalam contoh diatas terdapat metho setLocation
sebanyak 2 kali, akan tetapi memiliki perbedaan pada parameternya.
10. Abstract class (optional)
Sebutkan abstract class pada program anda dan jelaskan!
Tidak ada
“Bismillah, dengan ini saya menyatakan bahwa apa yang saya kerjakan sebagai
project UAS matakuliah parktikum PBO baik desain, implementasi program, video,
dan dokumentasi ini adalah benar-benar hasil pekerjaan saya”
Gresik, 29 desember
2020
Yang menyatakan,
(Helmi Zulfan Fanani)
NIM. 19650125