Showing posts with label PBO. Show all posts
Showing posts with label PBO. Show all posts

Sunday, January 10, 2021

EVALUASI AKHIR SEMESTER PEMROGRAMAN BERBASIS OBJEK (PBO)

 Snake Game

Zaman sekarang, teknologi bermain game menggunakan handphone sudah sangat maju. Bahkan engine game yang digunakan untuk game besar seperti Battlefield 4 saja bisa “dijalankan” dengan menggunakan device berbasiskan iOS. Tapi 20 tahun yang lalu, hal seperti ini jelas tidak terbayangkan oleh banyak orang.

Semuanya berubah ketika Nokia mulai merilis handphone dengan berbagai fitur seperti jam, alarm, dan bahkan game. Kalau kamu lahir sebelum pertengahan 90-an, tentunya kamu mengenal game Snake di handphone Nokia yang sangat simpel, tapi di waktu yang sama juga merupakan sebuah katalis untuk perubahan yang besar.

Abstraksi
Snake adalah sebuah game dimana kita mengendalikan sebuah garis atau line. Garis tersebut akan bertambah panjang jika mengenai / memakan sebuah objek berupa titik atau dot. Tujuan dari game ini bukan untuk mencari pemenang, tetapi mengumpulkan skor setinggi - tingginya sampai garis (ular) yang kita kendalikan menjadi terlalu panjang sehingga sulit dikendalikan dan menabrak dirinya sendiri. Saat ular menabrak dirinya sendiri, maka kita dinyatakan kalah dan skor berhenti.

Untuk memenuhi tugas Final Project dan EAS PBO, maka kami membuat sebuah game Snake dengan menggunakan bahasa Java. Untuk diagram dari kodingan game Snake itu sendiri bisa dilihat sebagai berikut :

Food
Class Food berfungsi untuk melakukan pengaturan segala sesuatu yang membentuk elemen dari food / makanan dari ular, seperti pengaturan warna dari makanan / food, penempatan lokasi makanan / food di dalam game, hingga melakukan pengaturan rumus bagaimana lokasi makanan / food di dalam game bisa berpindah - pindah dan tidak static.

Location
Class Location berfungsi untuk mendeklarasikan setiap koordinat yang akan dibutuhkan untuk ular / snake dan makanan / food.

GamePlay
Class GamePlay berfungsi untuk melakukan penataan layout menu dari game mulai dari font style huruf hingga penempatan setiap elemen. Kemudian class GamePlay juga berfungsi untuk mengatur penambahan score setiap ular / snake memakan makanan dan mensinkronkan kontrol keypad keyboard dengan ular (mengatur cara pemain mengendalikan jalannya ular dengan keypad keyboard.

Snake
Class Snake berfungsi untuk melakukan pengaturan segala sesuatu yang membentuk elemen ular / snake, seperti melakukan input file berupa gambar bertipe PNG yang membentuk kepala serta badan ular / snake. Kemudian class Snake juga berfungsi untuk melakukan pengaturan jika ular sudah mencapat panjang tertentu, maka akan diinput gambar lain untuk mengganti warna badan ular / snake. Terakhir class Snake juga berfungsi untuk melakukan pengaturan rumus bagaimana ular bergerak di dalam game.

Renderer
Class Renderer berfungsi untuk melakukan rendering gambar ke dalam aplikasi game. Di dalam class ini dilakukan pengaturan mulai dari KeyListener sebagai interface untuk menerima inputan dari keyboard, hingga melakukan pengaturan warna aplikasi game.

Main
Class Main merupakan class utama atau main dari program. Class Main berfungsi untuk membangun dan menampilkan aplikasi game, seperti melakukan pengaturan seberapa besar window dari game, menginisiasi komponen renderer, mengeset judul dari game, dan lain - lain.

Jika semua program diatas dihubungkan, dicompile dan di-run di main class maka akan didapatkan output sebagai berikut :

Video Penjelasan source code dan penggunaan aplikasi

Link Download Game :
Link Download Disini

Catatan : Dimohon untuk file jar didalam file zip untuk di extract terlebih dahulu

Anggota Kelompok :
1. Arvel Gavrilla Raissananda (05111940000040)
2. Raihan Alifianto (05111940000213)

Kelas : PBO - A











Share:

Sunday, December 27, 2020

PENUGASAN 10 PEMROGRAMAN BERORIENTASI OBJEK (PBO)

Membuat Aplikasi Notepad dengan Menggunakan Java 

Microsoft Notepad atau biasa kita sebut dengan Notepad adalah sebuah aplikasi editor teks untuk membuat file teks sederhana. Microsoft Notepad telah ada di semua versi sistem operasi Microsoft Windows dimulai sejak Microsoft Windows 1.0 tahun 1985

Fungsi atau kegunaan utama dari Notepad adalah untuk melihat atau mengedit file teks (text file). Notepad hanya mendukung pemformatan dasar sehingga tidak dapat melakukan pemformatan yang kompleks seperti pada Microsoft Word. Notepad juga tidak mendukung penyisipan gambar.

Di Notepad, diperbolehkan menggunakan jenis font tertentu (font setting) ketika membuat file teks. Yang perlu diingat di sini adalah bahwa penggunaan font tertentu hanya mempengaruhi bagaimana teks ditampilkan dan dicetak, tetapi tidak berpengaruh pada bagaimana file disimpan di diks atau media penyimpanan lainnya.

Pada kesempatan ini kita akan membahas bagaimana cara untuk membuat Aplikasi Notepad dengan menggunakan bahasa pemrograman Java. Di dalam program Notepad ini hanya terdapat terdapat 1 class, yaitu Editor.

Editor

Setelah class diatas di-compile dan di run maka akan ditampilkan program Notepad sebagai berikut :

Di dalam program Notepad terdapat berbagai macam menu yang dapat dipilih oleh pengguna sesuai dengan kebutuhannya, menu - menu tersebut adalah :

File

Di dalam menu File terdapat 4 macam opsi pilihan yang dapat dipilih pengguna sesuai dengan kebutuhan yaitu opsi New (membuat file baru), opsi Open (membuka file yang sudah ada), opsi Save (menyimpan file), dan opsi Print (mencetak file).

Edit

Di dalam menu Edit terdapat 3 macam opsi pilihan yang dapat dipilih pengguna sesuai dengan kebutuhan yaitu opsi Cut (memindahkan teks), opsi Copy (menggandakan teks), dan opsi Paste (menempelkan teks).

Close

Di dalam menu Edit tidak ada opsi pilihan, karena menu ini hanya berfungsi untuk menutup file yang sedang terbuka.

Untuk mempermudah dalam memahami bagaimana cara untuk mengoperasikan program Notepad tersebut, berikut adalah sebuah video tutorial yang saya buat untuk mendemonstrasikan penggunaan program tersebut.






Share:

Tuesday, December 22, 2020

PENUGASAN 9 PEMROGRAMAN BERORIENTASI OBJEK (PBO)

 Exception Handling

WHAT IS?
Error dapat muncul secara tidak terduga dan bisa mengganggu aliran eksekusi program. Ini adalah sesuatu yang dihadapi setiap programmer pada satu titik atau yang lain saat melakukan coding. Java, sebagai object oriented language yang paling menonjol, menyediakan mekanisme yang ampuh untuk menangani kesalahan / pengecualian ini.

Exception Handling adalah mekanisme yang paling diperlukan dalam menangani error yang terjadi pada saat runtime (program berjalan) atau yang lebih dikenal dengan sebutan runtime error.

Ketika Exception terjadi dan tidak ditangani, maka program akan berhenti secara tiba-tiba (potongan kode setelah baris yang menyebabkan Exception tidak akan dijalankan).

WHY?
Exception adalah masalah yang terjadi ketika program berjalan dan bisa terjad karena beberapa hal yaitu :
a. User melakukan input data yang invalid.
b. File tidak ditemukan.
c. Di tengah komunikasi terjadi masalah jaringan
d. JVM kehabisan memori.

HOW?
Secara umum Exception Handling dapat dilakukan menggunakan keyword try-catch, dimana selain keyword try-catch terdapat kata kunci lain yang juga bisa digunakan yaitu :

Penerapan berbagai macam keyword di atas di dalam kodingan dapat dilihat sebagai berikut :

Try
Jika source code di atas di-compile dan di run, maka akan didapatkan output sebagai berikut :

Catch

Throw
Throw bisa digunakan untuk melempar 1 atau beberapa pengecualian, dengan syarat menggunakan tanda koma sebagai pemisah antar pengecualian.

Misalkan, metode berikut deklarasi throw untuk RemoteException dan InsufficientFundsException :

Finally

Jika source code di atas di-compile dan di run, maka akan didapatkan output sebagai berikut :

EXAMPLE
Beberapa exception yang sering terjadi pada bahasa pemrograman Java adalah sebagai berikut :

Arithmetic Exception
Untuk perhitungan aritmatika, misalkan sebuah angka dibagi 0.

Jika source code di atas di-compile dan di run, maka akan didapatkan output sebagai berikut :

Null Pointer Exception
Bila objek yang ingin diakses masih null, maka tidak bisa mengakses method dari object tersebut.

IO Exception
Bila yang diminta berupa angka, tetapi yang diinputkan berupa string.

Array Index out Of Bounds Exception
Mengakses elemen array melebihi batas size yang telah di definisikan sebelumnya.

Kodingan di atas dapat menyebabkan terjadinya exception pada saat runtime, yaitu indeks yang diakses melebihi dari size yang telah didefinisikan sebelumnya. Untuk menanganinya, Exception Handling dapat dilakukan dengan cara : 

Sumber :
Penanganan Exception di Dalam Java
Share:

Tuesday, December 15, 2020

PENUGASAN 8 PEMROGRAMAN BERORIENTASI OBJEK (PBO)

 Pong Game

Game Pong adalah sebuah game arcade yang dianggap sebagai cikal bakal video game, game ini sendiri dikembangkan oleh Atari Inc. pada tanggal 29 November 1972. Mekanisme Game Pong didasarkan pada olahraga tenis meja (Ping Pong). Kali ini kita akan membahas bagaimana cara untuk membuat Game Pong dengan menggunakan bahasa pemrograman Java.

Di dalam program game ini terdapat 4 macam class, yaitu :
a. Pong              c. Renderer     
b. Paddle          d. Ball

Pong

Ball

Paddle

Renderer

Setelah keempat class diatas di-compile, dihubungkan, dan di run pada main class dari program yaitu class Pong maka akan ditampilkan program Game Pong sebagai berikut :


Di dalam program Game Pong terdapat berbagai macam menu yang dapat dipilih oleh pengguna sesuai dengan kebutuhannya, menu - menu tersebut adalah :

Press Space to play
Di sini pemain akan langsung masuk ke dalam permainan, dimana suatu pemain (player 1) akan melawan pemain lainnya (player 2). Player 1 bergerak dengan w dan s, sedangkan player 2 bergerak dengan panah atas dan bawah.

Press Shift to Play with Bot

Jika suatu player memilih menu tersebut, maka player akan di arahkan ke menu lain. Di menu tersebut player dapat memilih tingkat kesulitan bot sesuai dengan yang diinginkan, dimana jika sudah sesuai player tinggal menekan tombol space untuk memulai permainan.

Score Limit
Di sini pemain bisa menetapkan jumlah maksimal score dari masing - masing player ataupun bot untuk memenangkan permainan.

Untuk mempermudah dalam memahami bagaimana cara untuk mengoperasikan program Game Pong tersebut, berikut adalah sebuah video tutorial yang saya buat untuk mendemonstrasikan saat saya memainkan Game Pong melalui program tersebut.

















Share:

Sunday, December 13, 2020

PENUGASAN 7 PEMROGRAMAN BERORIENTASI OBJEK (PBO)

Java FX & Java Applet 


Java FX
JavaFX adalah adalah salah satu library Java yang dapat digunakan untuk membangun Rich Internet Applications seperti grafis, sound, effect, dan video yang diintegrasikan ke dalam website dan berjalan di dalam jaringan internet. Aplikasi yang dikembangkan dengan menggunakan JavaFX biasanya bersifat multi platform (dapat berjalan di berbagai perangkat seperti PC, Mobile Phones, TV, Tablet, dan lain - lain) dan mendukung berbagai macam OS seperti Windows, Linux, dan MacOS

Untuk mengembangkan Aplikasi GUI menggunakan bahasa pemrograman Java, programmer biasanya mengandalkan library seperti Advanced Windowing Toolkit dan Swings. Setelah munculnya library JavaFX, programmer java sekarang dapat mengembangkan aplikasi GUI dengan konten yang lebih bervariasi. Dengan menggunakan teknologi Java, aplikasi ini memiliki tingkat penetrasi browser sebesar 76%. Untuk mempelajari JavaFX, beberapa compiler baru dan modern seperti Intellij tidak bisa dipakai karena JDK di atas JDK 11 sudah tidak mendukung JavaFX. OLeh karena itu kita harus menggunakan compiler yang lebih lawas seperti BlueJ atau Eclipse.

Untuk mempermudah dalam memahami JavaFX, berikut adalah contoh program sederhana dalam bahasa Java untuk memvisualisasikan pengaplikasian Library JavaFX yaitu sebuah program bernama Fortune_Teller. Sesuai dengan namanya, program dibawah ini berfungsi untuk mencetak ramalah - ramalan random untuk pengguna sesuai dengan sektor - sektor yang diinginkan oleh pengguna (kesehatan, percintaan, dan keuangan).

Di dalam program game hanya terdapat 1 class yang juga berfungsi sebagai main class, yaitu Fortune_Teller.

Setelah class diatas di-compile dan di run  maka akan ditampilkan program Fortune_Teller sebagai berikut :

Di dalam program Fortune_Teller terdapat berbagai macam menu ramalan yang dapat dipilih oleh pengguna sesuai dengan keinginannya, dimana saat menu tertentu dipilih maka program akan menampilkan ramalan random sesuai dengan tema ramalan yang dipilih pengguna.

Ramalan Kesehatan

Ramalan Percintaan

Ramalan Keuangan

Java Applet
Java Applet adalah sebuah aplikasi java yang dapat disisipkan ke dalam halaman HTML untuk kemudian dapat diakses oleh pengguna melalui halaman web. Java Applet juga dapat didownload terlebih dahulu oleh pengguna dan kemudian dijalankan melalui sebuah browser. Secara default, Java Applet tidak bisa mengakses resource pada komputer lokal. Java Applet biasanya digunakan untuk membuat website lebih dinamis dan menghibur dengan cara menambahkan beberapa fungsi kepada halaman web yang bersifat statis, dengan syarat bahwa perangkat yang digunakan memiliki browser yang mendukung Java seperti Microsoft Internet Explorer 4.0 ke atas, Netscape Navigator, Mozilla Firefox, Chrome, dan Opera.

Untuk mempermudah dalam memahami Java Applet, berikut adalah contoh program dalam bahasa Java untuk memvisualisasikan pengaplikasian Java Applet yaitu sebuah program bernama Clock. Program dibawah ini berfungsi untuk membuat sebuah jam analog yang mampu memberikan informasi waktu secara real time (tidak statis).

Setelah class diatas di-compile dan di run  maka akan ditampilkan program Clock sebagai berikut :

Di dalam program Clock diameter dan ukuran dari jam dapat diatur oleh pengguna, dimana jika height dan width dari jam di set masing - masing sebesar 500 maka akan didapatkan output sebagai berikut :



























Share:

Friday, December 11, 2020

PENUGASAN 6 PEMROGRAMAN BERORIENTASI OBJEK (PBO)

 Pemrograman GUI : Image Viewer dengan Menggunakan Java

Definisi
GUI (Graphical User Interface) adalah sebuah desain aplikasi dengan tampilan visual yang berfungsi untuk mempermudah pengguna ketika menggunakan sebuah aplikasi. Pemrograman GUI dibuat dengan menggunakan sebuah aplikasi berbasis GUI, dimana tujuan dari program ini adalah untuk menambahkan komponen - komponen yang tidak berbasis text seperti gambar, video, dan lain - lain. Hal ini diperlukan karena pengguna cenderung lebih mudah dalam memahami tata cara penggunaan sebuah aplikasi melalui abstraksi visual dibandingkan jika hanya berupa narasi berupa text.

Untuk mempermudah dalam memahami GUI (Graphical User Interface), berikut adalah contoh program sederhana dalam bahasa Java untuk memvisualisasikan pengaplikasian GUI (Graphical User Interface) dengan nama Image Viewer. Program di bawah memiliki fungsi untuk mempermudah pengguna dalam melakukan penampilan dan pengeditan gambar melalui filter - filter yang tersedia seperti lighter, darker, dan threshold.

Di dalam program game ini terdapat 4 macam class, yaitu :
a. OFImage                            c. ImagePanel        
b. ImageFileManager             d. ImageViewer


ImageViewer
Class ImageViewer adalah kelas utama atau main class dari program. Fungsi dari class ini adalah membangun dan menampilkan aplikasi GUI serta menginisialisasi komponen - komponen yang lain

OFImage
Class OFImage adalah subclass dari program. Fungsi dari class ini adalah mendefinisikan gambar dalam OF (Object First)

ImageFileManager
Class ImageFileManager adalah subclass dari program. Class ini adalah class utilitas kecil dengan metode statis yang berfungsi untuk memuat dan menyimpan gambar (format jpg atau png). File yang dituliskan oleh class ini formatnya ditentukan oleh IMAGE_FORMAT konstan.

ImagePanel
Class ImagePanel adalah subclass dari program. Class ini adalah komponen swing yang berfungsi untuk menampilkan gambar OFI

Setelah keempat class diatas di-compile, dihubungkan, dan di run pada main class dari program yaitu class ImageViewer maka akan ditampilkan program ImageViewer sebagai berikut :

Di dalam program ImageViewer terdapat berbagai macam menu yang dapat dipilih oleh pengguna sesuai dengan kebutuhannya, menu - menu tersebut adalah :

File

Di dalam menu file terdapat 3 macam opsi yaitu menu open (untuk membuka file gambar yang tersimpan di laptop / pc), menu close (untuk menghapus gambar yang telah di buka), dan menu quit (untuk keluar dari program).

Filter

Di dalam menu filter terdapat 3 macam opsi filter yang dapat dipilih oleh pengguna untuk melakukan pengeditan gambar yaitu menu darker (untuk membuat gambar menjadi lebih gelap), menu lighter (untuk membuat gambar menjadi lebih terang), dan menu threshold (untuk mengubah warna gambar menjadi hitam-putih).

Help

Menu help berfungsi untuk menampilkan versi dari program

Untuk mempermudah dalam memahami bagaimana cara untuk mengoperasikan program ImageViewer tersebut, berikut adalah sebuah video tutorial yang saya buat dengan menggunakan gambar disney.















Share:

Tuesday, November 17, 2020

PENUGASAN 5 PEMROGRAMAN BERORIENTASI OBJEK (PBO)

  World of Zuul

Dalam mempelajari bahasa pemrograman Java hal yang perlu kita pelajari selanjutnya adalah designing classes. Sekarang kita akan mempelajari beberapa bentuk designing classes di dalam Java, yaitu coupling dan cohesion.

Coupling  adalah derajat  ketergantungan suatu modul terhadap modul lainnya. Kita harus pastikan bahwa suatu modul seminimal mungkin tergantung atau berpengaruh terhadap modul lainnya. Tujuannya jika ada update secara internal di dalam suatu modul, modul-modul lainnya tidak akan terlalu kena pengaruh

Sedangkan cohesion adalah keterikatan fungsi-fungsi di dalam suatu modul. Maksudnya adalah modul yang dibuat memiliki fungsi-fungsi yang serupa untuk satu tanggung jawab. Karena itu high cohesion sangat penting dalam perancangan software.

Untuk mempermudah dalam memahami Coupling dan cohesion, berikut adalah contoh program dalam bahasa Java yang mengimplementasikan kedua hal tersebut yaitu program game dengan nama "World of Zuul". World of Zuul adalah sebuah game sederhana bertema adventure dimana pemain diharuskan untuk mencari jalan keluar dari sebuah map. 

Di dalam program game ini terdapat 3 macam class, yaitu :
a. Game      c. Room            e. CommandWords  
b. Parser    d. Command 

GamE
Class Game adalah kelas utama atau main class dari program. Fungsi dari class ini adalah mengatur jalannya permainan dan memasuki loop untuk membaca dan menjalankan perintah dari user. Di dalam class ini juga terdapat kode yang berfungsi untuk mengimplementasikan perintah dari pengguna.

Parser
Class Parser berfungsi untuk membaca baris input dari terminal dan mencoba menerjemahkannya sebagai sebuah Command. Ini menjadikan objek dari class Command yang mewakili perintah tersebut. Saat dipanggil, class ini akan membaca baris input dari terminal dan menerjemahkannya sebagai 2 kata Command, dan me-return Command sebagai objek dari Class Command. Selain itu class ini juga berfungsi untuk melakukan pengecekan terhadap input dari user, dimana jika input berupa command tidak ada di dalam program (class command) maka akan dicetak sebagai perintah yang tidak diketahui

RooM
Class Room merupakan objek yang mewakili lokasi di dalam game. Setiap lokasi atau dalam hal ini ruangan di dalam game memiliki pintu keluar (north, south, east, west) yang mengarah ke lokasi atau ruangan lainnya. Untuk setiap input game akan mengarahkan player untuk menuju ruangan yang bersebelahan dengan mencetak jalan keluar dari empat arah mata angin di atas, namun jika tidak ada jalan keluar menuju ruangan tersebut maka akan dianggap null.

Command
Class Command merupakan sebuah objek perintah dan mewakili perintah yang dimasukkan oleh pengguna. Kelas ini memudahkan user untuk melakukan pengecekan apakah command yang di-input adalah command yang valid, selain itu class ini juga berfungsi untuk mendapatkan kata pertama serta kedua dari perintah tersebut sebagai string yang terpisah

CommandWords
Class CommandWords mendefinisikan command apa saja yang valid di dalam game, dimana command yang dianggap valid adalah "go, help, quit". Ini dilakukan dengan menyimpan array objek string yang mewakili kata-kata perintah. Di dalam class ini juga dilakukan enumerasi (pencacahan satu persatu/penjumlahan) pada semua kata perintah yang dikenal dalam game dimana hal ini dilakukan untuk mengenali command dalam pengetikan oleh user.           

Setelah kelima class diatas di-compile, dihubungkan, dan di run pada main class dari program yaitu class Game maka dengan melakukan input - input tertentu akan didapatkan output seperti berikut :



Nama : Arvel Gavrilla Raissananda
NRP   : 05111940000040
Kelas : PBO - A




Share:

Tuesday, November 10, 2020

PENUGASAN 4 PEMROGRAMAN BERORIENTASI OBJEK (PBO)

 Tech Support System


Technical Support System adalah layanan yang diberikan oleh suatu perusahaan untuk membantu mengatasi masalah klien dalam pemakaian ataupun penerapan dari perangkat keras/perangkat lunakTechnical Support System pada umumnya diberikan dalam bentuk email, tiket, SMS, chat, website, ataupun melalui layanan telepon.

Untuk memberikan gambaran bagaimana layanan Technical Support System yang disediakan oleh perusahaan dapat membantu klien dalam mengatasi permasalahan yang sedang dihadapi, berikut saya lampirkan contoh program dengan menggunakan Java yang bertujuan untuk mensimulasikan klien yang sedang menggunakan layanan Technical Support System.

Di dalam program ini saya membuat 3 macam class, dimana class - class tersebut adalah :
a. SupportSystem : Berfungsi sebagai class utama tempat program di-run
b. InputReader      : Berfungsi untuk menerima inputan berupa pertanyaan dari user / klien
c. Responder         : Berfungsi untuk memberikan respon berupa jawaban sesuai dengan inputan dari user / klien

Diagram Class

Support System

Input Reader

Responder

Output

Nama : Arvel Gavrilla Raissananda
NRP   : 05111940000040
Kelas : PBO - A



Share: