Tugas Rumah PBO-B: Membuat Music Organizer dan Program Pelelangan

Nama: Paramastri Ardiningrum
NRP: 05111740000019
Kelas: PBO B

Halo! Kali ini, saya punya 2 tugas. Pertama yaitu membuat program pelelangan dan program membuat database lagu-lagu atau yang disebut Music Organizer.

TUGAS 1: MUSIC ORGANIZER (PENYIMPAN DAN PEMUTAR MUSIK)

Pada tugas yang satu ini, saya membuat program yang bisa menyimpang list musik atau lagu-lagu yang nantinya juga bisa diputar atau dihentikan pemutarannya.

Terdapat 2 class, yakni MusicOrganizer dan MusicPlayer.



Class MusicOrganizer


 /**  
  * Music Organizer: menyimpan lagu-lagu (playlist)  
  *  
  * @author (Paramastri A)  
  * @version (8/10/18)  
  */  
 import java.util.ArrayList;  
 public class MusicOrganizer  
 {  
   private ArrayList<String> files;  
   private MusicPlayer player;  
   // membuat music organizer  
   public MusicOrganizer()  
   {  
     files = new ArrayList<String>();  
     player = new MusicPlayer();  
   }  
   //nambah file  
   public void tambahFile(String namafile)  
   {  
     files.add(namafile);  
   }  
   // input jumlah file pada koleksi  
   public int jumlahFile()  
   {  
     return files.size();  
   }  
   // list file pada koleksi  
   public void listFile(int index)  
   {  
     if(index >= 0 && index < files.size())  
     {  
       String namafile = files.get(index);  
       System.out.println("Lagu ke-" + index + ": " +namafile);  
     }  
   }  
   // hapus file dari koleksi  
   public void hapusFile(int index)  
   {  
     if(index >= 0 && index < files.size())  
     {  
       files.remove(index);  
     }  
   }  
   public void startPlaying(int index)  
   {  
     String namafile = files.get(index);  
     player.startPlaying(namafile);   
   }  
   public void stopPlaying()  
   {  
     player.stopPlaying();  
   }  
 }  


Class MusicPlayer


 /**  
  * Memutar playlist yang sudah terdaftar  
  *  
  * @author (Paramastri A)  
  * @version (8/10/18)  
  */  

 public class MusicPlayer  
 {  
   private String lagu;  
   public MusicPlayer()  
   {  
     lagu = null;  
   }  
   public void startPlaying(String namafile)  
   {  
     lagu = namafile;  
     System.out.println(lagu+ " IS NOW ON PLAYING");  
   }  
   public void stopPlaying()  
   {  
     System.out.println("THE MUSIC STOPS PLAYING.");  
   }  
 }  

Nah, bagaimana cara menyimpan musik dan memutarnya sesuai index lagu tersebut? Simak screen capture dari jalannya program berikut ini:

Run

Masukkan terlebih dulu file lagu-lagu pada fungsi tambahFile() yang ada pada class MusicOrganizer






Setelahnya, cek/lihat list yang sudah tersimpan dengan memasukkan index. Caranya dengan memanggil fungsi listFile() pada class MuscOrganizer


Ketika ditekan "OK", akan menampilkan list-list lagu yang telah tersimpan sesuai indexnya.


Kemudian, putar lagu yang anda mau. Caranya dengan memanggil fungsi startPlaying() pada class MusicOrganizer. Masukkan angka index lagu yang ingin anda dengarkan


Misal saya ingin memutar lagu pada index ketiga, yang nantinya akan diputar adalah lagu dari Adhitia Sofyan yang berjudul Reality


Apabila ingin stop lagu yang sedang diputar, cukup panggil fungsi stopPlaying()



TUGAS 2: AUCTION (PELELANGAN)

Lelang adalah proses membeli dan menjual barang atau jasa dengan cara menawarkan kepada penawar, menawarkan tawaran harga lebih tinggi dan kemudian menjual barang itu kepada penawar harga tertinggi.

Dari pengertian di atas, kita tahu bahwa ada beberapa komponen dalam melakukan pelelangan. Hal-hal tersebut seperti: person (orang), bid (tawaran), lot (barang yang dijual). Maka, disini saya menggunakan komponen tersebut untuk dijadikan class pada program java saya.



Class Auction


 /**  
  * Program pelelangan  
  *  
  * @author (Paramastri A)  
  * @version (8/10/18)  
  */  
 import java.util.ArrayList;  
 public class Auction  
 {  
   // The list of Lots in this auction.  
   private ArrayList<Lot> lots;  
   // The number that will be given to the next lot entered  
   // into this auction.  
   private int nextLotNumber;  
   /**  
    * Create a new auction.  
    */  
   public Auction()  
   {  
     lots = new ArrayList<>();  
     nextLotNumber = 1;  
   }  
   /**  
    * Enter a new lot into the auction.  
    * @param description A description of the lot.  
    */  
   public void enterLot(String description)  
   {  
     lots.add(new Lot(nextLotNumber, description));  
     nextLotNumber++;  
   }  
   /**  
    * Show the full list of lots in this auction.  
    */  
   public void showLots()  
   {  
     for(Lot lot : lots) {  
       System.out.println(lot.toString());  
     }  
   }  
   /**  
    * Make a bid for a lot.  
    * A message is printed indicating whether the bid is  
    * successful or not.  
    *   
    * @param lotNumber The lot being bid for.  
    * @param bidder The person bidding for the lot.  
    * @param value The value of the bid.  
    */  
   public void makeABid(int lotNumber, Person bidder, long value)  
   {  
     Lot selectedLot = getLot(lotNumber);  
     if(selectedLot != null) {  
       Bid bid = new Bid(bidder, value);  
       boolean successful = selectedLot.bidFor(bid);  
       if(successful) {  
         System.out.println("Tawaran untuk nomor lot" +  
                   lotNumber + " telah sukses.");  
       }  
       else {  
         // Report which bid is higher.  
         Bid highestBid = selectedLot.getHighestBid();  
         System.out.println("Nomor lot: " + lotNumber +  
                   " sudah memiliki tawaran: " +  
                   highestBid.getValue());  
       }  
     }  
   }  
   /**  
    * Return the lot with the given number. Return null  
    * if a lot with this number does not exist.  
    * @param lotNumber The number of the lot to return.  
    */  
   public Lot getLot(int lotNumber)  
   {  
     if((lotNumber >= 1) && (lotNumber < nextLotNumber)) {  
       // The number seems to be reasonable.  
       Lot selectedLot = lots.get(lotNumber - 1);  
       // Include a confidence check to be sure we have the  
       // right lot.  
       if(selectedLot.getNumber() != lotNumber) {  
         System.out.println("Eror internal: nomor lot " +  
                   selectedLot.getNumber() +  
                   " telah diganti " +  
                   lotNumber);  
         // Don't return an invalid lot.  
         selectedLot = null;  
       }  
       return selectedLot;  
     }  
     else {  
       System.out.println("Nomor lot: " + lotNumber +  
                 " tidak tersedia.");  
       return null;  
     }  
   }  
   public void close()    
   {    
     System.out.println("Pelelangan telah dihentikan.");    
     for(Lot lot : lots)    
     {    
     System.out.println(lot.getNumber() + ": " +lot.getDescription());    
     Bid bid = lot.getHighestBid();    
     if (bid==null)    
     {    
       System.out.println("Tidak ada tawaran untuk Lot ini");    
     }    
     else    
     {    
       System.out.println("Lot ini telah dijual kepada " +    
       bid.getBidder().getName() + " dengan harga :\t"    
       + bid.getValue());    
     }    
   }    
   }   
 }  


Class Lot


 /**  
  * Class Lot  
  *  
  * @author (Paramastri A)  
  * @version (8/10/18)  
  */  
 public class Lot  
 {  
   // A unique identifying number.  
   private final int number;  
   // A description of the lot.  
   private String description;  
   // The current highest bid for this lot.  
   private Bid highestBid;  
   /**  
    * Construct a Lot, setting its number and description.  
    * @param number The lot number.  
    * @param description A description of this lot.  
    */  
   public Lot(int number, String description)  
   {  
     this.number = number;  
     this.description = description;  
     this.highestBid = null;  
   }  
   /**  
    * Attempt to bid for this lot. A successful bid  
    * must have a value higher than any existing bid.  
    * @param bid A new bid.  
    * @return true if successful, false otherwise  
    */  
   public boolean bidFor(Bid bid)  
   {  
     if(highestBid == null) {  
       // There is no previous bid.  
       highestBid = bid;  
       return true;  
     }  
     else if(bid.getValue() > highestBid.getValue()) {  
       // The bid is better than the previous one.  
       highestBid = bid;  
       return true;  
     }  
     else {  
       // The bid is not better.  
       return false;  
     }  
   }  
   /**  
    * @return A string representation of this lot's details.  
    */  
   public String toString()  
   {  
     String details = number + ": " + description;  
     if(highestBid != null) {  
       details += "  Tawaran: " +   
             highestBid.getValue();  
     }  
     else {  
       details += "  (Tidak ada tawaran)";  
     }  
     return details;  
   }  
   /**  
    * @return The lot's number.  
    */  
   public int getNumber()  
   {  
     return number;  
   }  
   /**  
    * @return The lot's description.  
    */  
   public String getDescription()  
   {  
     return description;  
   }  
   /**  
    * @return The highest bid for this lot.  
    *     This could be null if there is  
    *     no current bid.  
    */  
   public Bid getHighestBid()  
   {  
     return highestBid;  
   }  
 }  


Class Bid


 /**  
  * Class Bid  
  *  
  * @author (Paramastri A)  
  * @version (8/10/18)  
  */  
 public class Bid  
 {  
   // The person making the bid.  
   private final Person bidder;  
   // The value of the bid. This could be a large number so  
   // the long type has been used.  
   private final long value;  
   /**  
    * Create a bid.  
    * @param bidder Who is bidding for the lot.  
    * @param value The value of the bid.  
    */  
   public Bid(Person bidder, long value)  
   {  
     this.bidder = bidder;  
     this.value = value;  
   }  
   /**  
    * @return The bidder.  
    */  
   public Person getBidder()  
   {  
     return bidder;  
   }  
   /**  
    * @return The value of the bid.  
    */  
   public long getValue()  
   {  
     return value;  
   }  
 }  


Class Person

 /**  
  * Class Person  
  *  
  * @author (Paramastri A)  
  * @version (8/10/18)  
  */  
 public class Person  
 {  
   // The name of this person.  
   private final String name;  
   /**  
    * Create a new person with the given name.  
    * @param name The person's name.  
    */  
   public Person(String name)  
   {  
     this.name = name;  
   }  
   /**  
    * @return The person's name.  
    */  
   public String getName()  
   {  
     return name;  
   }  
 }  


Ketika dijalankan, program tampak seperti saat pelelangan dilakukan. Berikut screen capture nya.

Run


Memasukkan nama barang yang akan dilelang
pada fungsi enterLot() di class auction 
Memasukkan nama penawar pertama
pada fungsi person() di class person
Memasukkan tawaran dari penawar
pada fungsi makeABid() di class auction
Memasukkan nama penawar kedua
pada fungsi person() di class person
Memasukkan tawaran dari penawar
pada fungsi makeABid() di class auction
Akan ada keterangan bahwa tawaran sudah sukses dilakukan
Program akan mengambil tawaran terakhir (yang paling tinggi nominalnya)
untuk dijual kepada penawar tertinggi tersebut dengan disebutkan nominalnya.


Komentar

Postingan populer dari blog ini

Tugas Rumah PBO-B: Membuat Gambar Pemandangan

Tugas PBO-B: Membuat Foxes and Rabbits Simulator

Tugas Rumah PBO-B: Membuat Database Akademik