MusicTrack
Nama: Hafidz Panji Ashari
NRP: 5025231278
KELAS: PBO-A
Membuat Group Object dari MusicTrack yang menampung data-data dari tiap tracknya.
Struktur Direktori
/MusicApp
├── MusicTrack.java
├── MusicPlayer.java
├── MusicOrganizer.java
└── Main.java
1. MusicTrack.java
Kelas MusicTrack berfungsi untuk merepresentasikan satu lagu atau track musik. Fungsinya meliputi:
- Menyimpan informasi mengenai sebuah lagu seperti judul (
title), artis (artist), dan durasi lagu (duration). - Menampilkan informasi track melalui method
displayTrackInfo(), yang mencetak detail lagu seperti judul, artis, dan durasi.
public class MusicTrack { private String title; private String artist; private int duration;
public MusicTrack(String title, String artist, int duration) { this.title = title; this.artist = artist; this.duration = duration; }
public String getTitle() { return title; }
public String getArtist() { return artist; }
public int getDuration() { return duration; }
public void displayTrackInfo() { System.out.println("Title: " + title); System.out.println("Artist: " + artist); System.out.println("Duration: " + duration + " seconds"); }}
public class MusicTrack {
private String title;
private String artist;
private int duration;
public MusicTrack(String title, String artist, int duration) {
this.title = title;
this.artist = artist;
this.duration = duration;
}
public String getTitle() {
return title;
}
public String getArtist() {
return artist;
}
public int getDuration() {
return duration;
}
public void displayTrackInfo() {
System.out.println("Title: " + title);
System.out.println("Artist: " + artist);
System.out.println("Duration: " + duration + " seconds");
}
}
2. MusicPlayer.java
Kelas MusicPlayer berfungsi untuk memutar dan menghentikan pemutaran lagu. Fungsinya meliputi:
- play(MusicTrack track): Memutar lagu yang diberikan sebagai parameter (
MusicTrack). Menampilkan pesan bahwa lagu sedang diputar, termasuk judul dan artis. - stop(): Menghentikan pemutaran lagu dan mencetak pesan bahwa musik telah dihentikan.
public class MusicPlayer { public void play(MusicTrack track) { System.out.println("Now playing: " + track.getTitle() + " by " + track.getArtist()); }
public void stop() { System.out.println("Music stopped."); }}
public class MusicPlayer {
public void play(MusicTrack track) {
System.out.println("Now playing: " + track.getTitle() + " by " + track.getArtist());
}
public void stop() {
System.out.println("Music stopped.");
}
}
3. MusicOrganizer.java
Kelas MusicOrganizer bertanggung jawab untuk mengelola kumpulan objek MusicTrack. Fungsinya meliputi:
- addTrack(String title, String artist, int duration): Menambahkan lagu baru ke dalam koleksi.
- playTrack(int index): Memutar lagu dari koleksi berdasarkan indeks yang diberikan.
- stopPlaying(): Menghentikan lagu yang sedang diputar.
- displayAllTracks(): Menampilkan semua lagu dalam koleksi dengan informasi lengkap.
- getTrackCount(): Menghitung dan mengembalikan jumlah total lagu dalam koleksi.
- removeTrack(int index): Menghapus lagu dari koleksi berdasarkan indeks yang diberikan.
- searchByTitle(String title): Mencari dan menampilkan lagu yang sesuai dengan judul yang diberikan.
- searchByArtist(String artist): Mencari dan menampilkan semua lagu yang dinyanyikan oleh artis yang diberikan.
import java.util.ArrayList;
public class MusicOrganizer { private ArrayList<MusicTrack> tracks; private MusicPlayer player;
public MusicOrganizer() { tracks = new ArrayList<>(); player = new MusicPlayer(); }
public void addTrack(String title, String artist, int duration) { MusicTrack newTrack = new MusicTrack(title, artist, duration); tracks.add(newTrack); System.out.println("Track added: " + title); }
public void playTrack(int index) { if (index >= 0 && index < tracks.size()) { MusicTrack track = tracks.get(index); player.play(track); } else { System.out.println("Invalid track index."); } }
public void stopPlaying() { player.stop(); }
public void displayAllTracks() { if (tracks.isEmpty()) { System.out.println("No tracks in the organizer."); } else { for (int i = 0; i < tracks.size(); i++) { System.out.println("Track " + (i + 1) + ":"); tracks.get(i).displayTrackInfo(); System.out.println(); } } }
public int getTrackCount() { return tracks.size(); }
public void removeTrack(int index) { if (index >= 0 && index < tracks.size()) { MusicTrack removedTrack = tracks.remove(index); System.out.println("Track removed: " + removedTrack.getTitle()); } else { System.out.println("Invalid index."); } }
public void searchByTitle(String title) { boolean found = false; for (MusicTrack track : tracks) { if (track.getTitle().equalsIgnoreCase(title)) { track.displayTrackInfo(); found = true; } } if (!found) { System.out.println("Track with title '" + title + "' not found."); } }
public void searchByArtist(String artist) { boolean found = false; for (MusicTrack track : tracks) { if (track.getArtist().equalsIgnoreCase(artist)) { track.displayTrackInfo(); found = true; } } if (!found) { System.out.println("No tracks found by artist '" + artist + "'."); } }}
import java.util.ArrayList;
public class MusicOrganizer {
private ArrayList<MusicTrack> tracks;
private MusicPlayer player;
public MusicOrganizer() {
tracks = new ArrayList<>();
player = new MusicPlayer();
}
public void addTrack(String title, String artist, int duration) {
MusicTrack newTrack = new MusicTrack(title, artist, duration);
tracks.add(newTrack);
System.out.println("Track added: " + title);
}
public void playTrack(int index) {
if (index >= 0 && index < tracks.size()) {
MusicTrack track = tracks.get(index);
player.play(track);
} else {
System.out.println("Invalid track index.");
}
}
public void stopPlaying() {
player.stop();
}
public void displayAllTracks() {
if (tracks.isEmpty()) {
System.out.println("No tracks in the organizer.");
} else {
for (int i = 0; i < tracks.size(); i++) {
System.out.println("Track " + (i + 1) + ":");
tracks.get(i).displayTrackInfo();
System.out.println();
}
}
}
public int getTrackCount() {
return tracks.size();
}
public void removeTrack(int index) {
if (index >= 0 && index < tracks.size()) {
MusicTrack removedTrack = tracks.remove(index);
System.out.println("Track removed: " + removedTrack.getTitle());
} else {
System.out.println("Invalid index.");
}
}
public void searchByTitle(String title) {
boolean found = false;
for (MusicTrack track : tracks) {
if (track.getTitle().equalsIgnoreCase(title)) {
track.displayTrackInfo();
found = true;
}
}
if (!found) {
System.out.println("Track with title '" + title + "' not found.");
}
}
public void searchByArtist(String artist) {
boolean found = false;
for (MusicTrack track : tracks) {
if (track.getArtist().equalsIgnoreCase(artist)) {
track.displayTrackInfo();
found = true;
}
}
if (!found) {
System.out.println("No tracks found by artist '" + artist + "'.");
}
}
}
4. Main.java
Kelas Main berfungsi untuk menjalankan aplikasi, memberikan antarmuka berbasis teks bagi pengguna untuk berinteraksi dengan MusicOrganizer. Fungsinya meliputi:
- Menampilkan menu interaktif untuk memilih berbagai operasi seperti menambah lagu, melihat daftar lagu, memutar lagu, mencari lagu, dan menghapus lagu.
- Memanggil metode dari
MusicOrganizerberdasarkan pilihan pengguna. - Mengontrol alur program dari mulai, menjalankan, hingga menghentikan program.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
MusicOrganizer organizer = new MusicOrganizer();
Scanner scanner = new Scanner(System.in);
int choice;
do {
System.out.println("\n=== Music Organizer Menu ===");
System.out.println("1. Add Track");
System.out.println("2. View All Tracks");
System.out.println("3. Play Track");
System.out.println("4. Stop Playing");
System.out.println("5. Search Track by Title");
System.out.println("6. Search Track by Artist");
System.out.println("7. Remove Track");
System.out.println("8. Exit");
System.out.print("Choose an option: ");
choice = scanner.nextInt();
scanner.nextLine(); // Consume newline
switch (choice) {
case 1:
System.out.print("Enter title: ");
String title = scanner.nextLine();
System.out.print("Enter artist: ");
String artist = scanner.nextLine();
System.out.print("Enter duration (in seconds): ");
int duration = scanner.nextInt();
organizer.addTrack(title, artist, duration);
break;
case 2:
System.out.println("\nAll Tracks:");
organizer.displayAllTracks();
break;
case 3:
System.out.print("Enter track number to play: ");
int trackNumber = scanner.nextInt();
organizer.playTrack(trackNumber - 1);
break;
case 4:
organizer.stopPlaying();
break;
case 5:
System.out.print("Enter title to search: ");
String searchTitle = scanner.nextLine();
organizer.searchByTitle(searchTitle);
break;
case 6:
System.out.print("Enter artist to search: ");
String searchArtist = scanner.nextLine();
organizer.searchByArtist(searchArtist);
break;
case 7:
System.out.print("Enter track number to remove: ");
int removeTrackNumber = scanner.nextInt();
organizer.removeTrack(removeTrackNumber - 1); // -1 for zero-based index
break;
case 8:
System.out.println("Exiting Music Organizer...");
break;
default:
System.out.println("Invalid option. Please try again.");
break;
}
} while (choice != 8);
scanner.close();
}
}
Comments
Post a Comment