Tugas Rumah PBO-B: Membuat Music Organizer dan Program Pelelangan
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
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
Posting Komentar