Thursday, December 12, 2024

Pertemuan 15 - Ide Final Project

Kelas     : Pemrograman Berbasis Objek (G)


KELOMPOK 20
Nama Kelompok:
  1. Yahya Ayyash Ashdaqi 5025231210
  2. Aryaka Leorgi Eprideka 5025231117
  3. Muhammad Risyad Himawan Putra 5025231205
   

    Final Project


1. Tuliskan Judul dan Deskripsi Final Project yang akan dikerjakan
2. Buatlah Desain User Interface dan Diagram Class dari aplikasi Final  Project

MUPLAR

Final Project ini adalah implementasi sederhana dari sebuah Music Player berbasis GUI menggunakan bahasa pemrograman Java. Aplikasi ini dirancang untuk memberikan pengalaman pengguna yang interaktif dan intuitif, dengan memanfaatkan pustaka seperti Swing, JLayer, dan mp3agic untuk mengelola UI pengguna, pemutaran audio, dan informasi metadata lagu yang dipilih.

DESAIN USER INTERFACE

DIAGRAM CLASS



IMPLEMENTASI CODE




Wednesday, December 11, 2024

Pertemuan 16 - EAS Final Project

 Nama: Muhammad Risyad Himawan Putra

NRP: 5025231205

Kelas: Pemrograman Berbasis Obyek (G)


Music Player
Implementation in BlueJ

 Source Code: Music Player Github

1. Apa yang dimaksud dengan Inheritance dalam Java. Bagaimana implementasi inheritance dalam Final Project yang sedang dikerjakan.

Inheritance (pewarisan) adalah salah satu konsep utama dalam pemrograman berorientasi objek (OOP), yang memungkinkan sebuah kelas (subclass atau child class) mewarisi atribut dan metode dari kelas lain (superclass atau parent class). Dengan inheritance, kode menjadi lebih terorganisir, dapat digunakan kembali, dan mudah untuk diperluas.

Dalam Java, inheritance diimplementasikan menggunakan keyword extends. Subclass akan secara otomatis memiliki semua properti dan metode dari superclass, kecuali yang dideklarasikan sebagai private. Subclass juga dapat menambahkan atribut atau metode baru, serta meng-override metode dari superclass jika diperlukan.

public class MusicPlayer extends PlaybackListener {

Kelas MusicPlayer adalah subclass dari PlaybackListener. Dengan inheritance ini semua atribut dan metode di PlaybackListener dapat digunakan langsung oleh MusicPlayer, tanpa perlu mendeklarasikannya ulang.

2. Jelaskan fitur Aplikasi yang ada dalam Final Project

1. Slider Playback (Playback Slider)

  • Fitur:
    Aplikasi dilengkapi dengan slider yang menunjukkan progres pemutaran lagu secara real-time. Slider ini memberikan pengguna gambaran visual tentang posisi lagu yang sedang dimainkan.

  • Implementasi:

    • Saat lagu diputar, nilai slider dihitung menggunakan variabel currentTimeInMilli dan currentSong.getFrameRatePerMs().
    • Metode musicPlayerGUI.setPlaybackSliderValue(calculatedFrame) digunakan untuk memperbarui posisi slider.

2. Start dan Stop Musik

  • Start:

    • Fitur:
      Memulai pemutaran lagu dari awal atau dari posisi terakhir saat lagu dijeda.
    • Implementasi:
      • Lagu diputar menggunakan AdvancedPlayer.play().
      • Jika lagu dijeda (isPaused = true), pemutaran dilanjutkan dari frame tertentu menggunakan play(currentFrame, Integer.MAX_VALUE).
  • Stop:

    • Fitur:
      Menghentikan pemutaran lagu sepenuhnya dan membersihkan sumber daya.
    • Implementasi:
      • Lagu dihentikan menggunakan advancedPlayer.stop() dan advancedPlayer.close().
      • Variabel advancedPlayer diatur menjadi null untuk mengindikasikan bahwa tidak ada pemutaran aktif.

3. Load Song

  • Fitur:
    Memuat lagu baru untuk diputar, menggantikan lagu yang sedang aktif (jika ada).
  • Implementasi:
    • Lagu baru dimuat menggunakan metode loadSong(Song song).
    • Jika ada lagu yang sedang aktif dan belum selesai diputar (!songFinished), lagu dihentikan menggunakan stopSong().
    • Variabel currentFrame dan currentTimeInMilli di-reset ke 0 untuk memulai dari awal.
    • Pemutaran lagu dimulai dengan playCurrentSong().
3. Buatlah desain Diagram Kelas dari aplikasi Final Project


App: Bagian ini digunakan untuk memulai program, dan mempunyai hubungan uses dengan musicPlayerGUI untuk menampilkan interface-nya.

musicPlayerGUI: Bagian ini digunakan untuk menampilkan interface dari pemutar Mp3. Class ini mempunyai hubungan uses dengan musicPlayer yang digunakan untuk load song, memutar, menghentikan, dan mengatur waktu musik yang ingin didengarkan. Class ini juga mempunyai hubungan uses dengan class Song yang digunakan untuk memberikan informasi pada tiap-tiap lagu yang sedang diputar.

musicPlayer: Bagian ini digunakan untuk melakukan play, pause, load song.

Song: Bagian ini digunakan memberikan informasi pada tiap tiap file mp3.

4. Implementasikan Aplikasi yang telah didesain dengan menggunakan Pemrograman Berbasis Obyek Java


4. Buat PPT presentasi yang menunjang Demo Aplikasi

Link PowerPoint: Canva.com























Thursday, December 5, 2024

Pertemuan 14 - Pemrograman GUI

 Nama: Muhammad Risyad Himawan Putra

NRP: 5025231205

Kelas: Pemrograman Berbasis Obyek (G)


GUI Programming
Implementation in BlueJ

 Source Code: MRHP1/Pertemuan_14

Class OFImage

OFImage(BufferedImage image)

    • Menginisialisasi objek OFImage dengan menyalin data dari objek BufferedImage yang sudah ada.
      • Menyalin model warna dan data gambar dari BufferedImage ke dalam objek OFImage.

OFImage(int width, int height)

    • Konstruktor untuk membuat objek OFImage dengan ukuran yang ditentukan (lebar dan tinggi), tanpa konten gambar yang spesifik.

void setPixel(int x, int y, Color col)

    • Menetapkan nilai piksel pada posisi (x, y) dengan warna yang ditentukan dalam objek Color.

Color getPixel(int x, int y)

    • Mengambil warna piksel pada posisi (x, y) dalam bentuk objek Color.

darker()

    • Menurunkan kecerahan gambar dengan memproses setiap piksel dan menerapkan metode darker() pada setiap warna piksel.

lighter()

    • Meningkatkan kecerahan gambar dengan memproses setiap piksel dan menerapkan metode brighter() pada setiap warna piksel.

threshold()

    • Melakukan operasi threshold tiga level pada gambar, mengubah warna setiap piksel menjadi hitam, abu-abu, atau putih berdasarkan kecerahannya.

Class ImagePanel

ImagePanel()

    • Menginisialisasi objek ImagePanel yang digunakan untuk menampilkan gambar. Panel ini memiliki ukuran default 360x240 piksel.

void setImage(OFImage image)

    • Menetapkan gambar yang akan ditampilkan pada panel, serta memperbarui ukuran panel sesuai dengan ukuran gambar yang baru.

void clearImage()

    • Membersihkan gambar yang ditampilkan dengan mengisi panel dengan warna latar belakang terang.

void paintComponent(Graphics g)

    • Digunakan untuk menggambar ulang panel dan menampilkan gambar yang ada pada ImagePanel.

Class ImageViewer

ImageViewer()

    • Menginisialisasi objek ImageViewer yang berfungsi sebagai aplikasi tampilan gambar dan memungkinkan pengguna untuk membuka, mengedit, dan menyimpan gambar.

void openFile()

    • Menampilkan dialog pemilih file untuk memilih dan membuka gambar baru. Jika gambar berhasil dimuat, maka gambar tersebut ditampilkan pada panel.

void close()

    • Menutup gambar yang sedang ditampilkan dan membersihkan panel gambar.

void quit()

    • Menutup aplikasi ImageViewer.

void makeDarker()

    • Memproses gambar untuk membuatnya lebih gelap dengan menggunakan metode darker() yang telah disediakan dalam objek OFImage.

void makeLighter()

    • Memproses gambar untuk membuatnya lebih terang dengan menggunakan metode lighter() yang telah disediakan dalam objek OFImage.

void applyThreshold()

    • Memproses gambar dengan metode threshold() untuk membuat gambar dengan tiga level warna berdasarkan kecerahan piksel.

Class FileManager

FileManager()

    • Menginisialisasi objek FileManager yang digunakan untuk mengelola operasi file seperti membuka, membaca, menyimpan, dan menulis gambar.

File openFile(String fileName)

    • Membuka file gambar yang ditentukan dengan nama file fileName. Mengembalikan objek File yang merepresentasikan file gambar tersebut.

void saveImage(File file, OFImage image)

    • Menyimpan gambar yang ada dalam objek OFImage ke dalam file yang ditentukan. Operasi ini akan menulis file ke disk dengan format gambar yang sesuai.

OFImage loadImage(File file)

    • Memuat gambar dari file yang ditentukan. Mengembalikan objek OFImage yang memuat data gambar yang ada dalam file tersebut.


Testing

Class Login

Login()

    • Menginisialisasi objek Login dengan username dan password yang telah ditentukan.

void go()

    • Menginisialisasi JFrame sebagai tampilan utama aplikasi.
    • Mengatur JPanel dengan layout GridLayout untuk menata komponen secara vertikal.
    • Menambahkan komponen-komponen seperti label untuk username dan password, serta tombol Login dan Cancel.

class LoginListener implements ActionListener

    • Menangani aksi yang terjadi ketika tombol Login ditekan.
    • Memeriksa apakah username dan password yang dimasukkan sesuai dengan yang telah ditentukan.
    • Menampilkan pesan Login Granted! jika berhasil, atau Login Denied jika gagal.

class CancelListener implements ActionListener

    • Menangani aksi yang terjadi ketika tombol Cancel ditekan.
    • Membersihkan teks yang ada di JTextField untuk username dan password.
    • Fokus kembali di txtUsername agar pengguna bisa langsung memasukkan username baru.

Penjelasan Fungsi Utama

Login

    • Merupakan class utama yang memuat logika untuk tampilan dan interaksi pada jendela login.
    • Username dan password yang dimasukkan akan dibandingkan dengan nilai yang telah ditentukan di dalam kode, yaitu risyad dan 123.

LoginListener

    • Class ini berfungsi untuk memproses login dan memberikan feedback kepada pengguna setelah memeriksa data login.
    • Jika username dan password sesuai, maka akan muncul pesan Login Granted! sebagai pemberitahuan berhasil.
    • Jika username atau password salah, maka akan muncul pesan Login Denied.

CancelListener

    • Class ini menangani aksi pembatalan, yang menghapus teks di kolom input dan mengatur fokus kembali ke kolom username.

Testing








Pertemuan 13 - Abstraksi

 Nama: Muhammad Risyad Himawan Putra

NRP: 5025231205

Kelas: Pemrograman Berbasis Obyek (G)


Abstract Class
Implementation in BlueJ

 Source Code: MRHP1/Pertemuan_13

1. Tuliskan implementasi dari program kecil Abstract Class Makhluk hidup yang diwariskan kepada manusia, hewan, dan tumbuhan

Class MakhlukHidup

abstract class MakhlukHidup

  • Menjadi blueprint untuk semua makhluk hidup, yang mendefinisikan perilaku umum seperti bernafas dan makan.
  • Memiliki metode konkret info() untuk memberikan informasi umum tentang makhluk hidup.

Manusia, Hewan, Tumbuhan

    • Subclass dari MakhlukHidup yang mengimplementasikan metode abstrak seperti bernafas() dan makan().
    • Setiap subclass memiliki implementasi spesifik yang sesuai dengan jenis makhluk hidup tersebut.

info()

    • Merupakan metode konkret di abstract class MakhlukHidup untuk menampilkan informasi dasar bahwa objek tersebut adalah makhluk hidup.

Class Main & Testing


2. Pelajari dan baca simulasi Foxes and Rabbit yang ada di buku. Kemudian buat program perubahan dari struktur class umum menjadi bentuk Abstract Class.

Class Foxes and Rabbits Simulation

abstract class Animal

  • Blueprint untuk semua hewan dalam simulasi.
  • Mengelola properti umum seperti age dan alive untuk menentukan usia dan status hidup hewan.
  • Memiliki metode abstrak seperti act() dan getMaxAge() untuk perilaku spesifik subclass.

class Rabbit

    • Subclass dari Animal yang mewakili kelinci.
    • Mengimplementasikan metode act() untuk perilaku kelinci (melompat).
    • Menentukan usia maksimal kelinci sebagai 5 tahun dengan metode getMaxAge().

class Fox

    • Subclass dari Animal yang mewakili rubah.
    • Mengimplementasikan metode act() untuk perilaku rubah (berburu).
    • Menentukan usia maksimal rubah sebagai 10 tahun dengan metode getMaxAge().

class Simulation

    • Mengelola logika utama simulasi interaksi antar kelinci dan rubah selama beberapa hari.
    • Memantau usia dan status kehidupan hewan dan menambahkan event acak seperti kelinci mati atau lahir baru.

Class Main & Testing

PPB EAS - Aplikasi Member Timezone

Manajemen Keanggotaan & Loyalty Program Timezone dengan Room Database dan Jetpack Compose Aryaka Leorgi Epridaka - 5025231117 Muhammad ...