Tugas 3 Pemograman Berorentasi Objek
Grouping Object dan Auction System
Grouping Object
Grouping Object merupakan pengelompokan object dengan Collection. Collection adalah sebuah ad hoc class yang disediakan oleh Java (biasa disebut Java Collection) untuk membantu pengguna bahasa Java dalam melakukan penyimpanan data atau objek serta memanipulasinya.
Secara mudahnya, kelas ini mempermudah kita dalam melakukan operasi struktur data seperti linked list,arraylist,dan struktur data lainnya dalam bahasa Java.
Adapun jenis-jenis operasinya adalah sebagai berikut:
Array List
Array list merupakan contoh implementasi dari interface list. Berikut ini contoh program Collection ArrayList
1. ArrayList dengan iterasi While
Ouput:
4. Menggabungkan ArrayList dengan menggunakan addAll
Output:
5. Menghapus data pada ArrayList dengan menggunakan removeAll
Ouput:
Output:
Hashset
Output:
Linked Hashset
Ouput :HashTable
Output:
Auction System (Sistem Perlelangan)
Pada kali ini,saya akan membuat sebuah sistem perlelangan.Pada sistem ini, kita harus membuat object auction,kemudian menambahkan item apa saja yang akan dilelangkan.Pada sistem perlelangan ini, orang yang menawar dengan harga lebih tinggi dia yang akan mendapatkan barangnya. Dalam sistem perlelangan ini terdapat 4 class yaitu Auction,Lot,Person,dan Bid yang selanjutnya akan kita bahas.
Gambar Auction System
1. Class Auction
Proses dimana perlelangan terjadi.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Auction | |
* | |
* @author Zelda Elma Sibuea | |
* @version 26/10/2020 | |
*/ | |
import java.util.ArrayList; | |
public class Auction | |
{ | |
private ArrayList<Lot> lots;//list barang dalam suatu auction | |
private int LotNumber; | |
public Auction()// membuat Auction baru | |
{ | |
lots = new ArrayList<Lot>();//list barang | |
LotNumber = 1;//nomor barang awal adalah 1 | |
} | |
public void enterLot(String description) | |
{//untuk menambahkan barang baru dalam auction | |
lots.add(new Lot(LotNumber, description)); | |
LotNumber++; | |
} | |
public void showLots() | |
{//menampilkan seluruh barang yang dilelang | |
for(Lot lot : lots) { | |
System.out.println(lot.detail()); | |
} | |
} | |
/** | |
* Method untuk melakukan bid/tawaran. | |
* Jika berhasil melakukan bid akan muncul Success Message. | |
* CurrentlotNumber = id lot yang akan di Bid. | |
* bidder = orang yang akan menawar. | |
* value = harga tawaran. | |
*/ | |
public void MakeBid(int CurrentlotNumber, Person bidder, long value) | |
{ | |
Lot selectedLot = getLot(CurrentlotNumber); | |
if(selectedLot != null) { | |
boolean check = selectedLot.bidFor(new Bid(bidder, value)); | |
if(check) {//check dengan bid sebelumnya, apakah lebih besar atau tidak | |
System.out.println("Penawaran untuk lot nomor " + | |
CurrentlotNumber + " berhasil dilakukan" + " Penawaran dilakukan oleh " +bidder.getName()+ "dengan harga " +value+ "$"); | |
} | |
else {//apabila bid sebelumnya lebih besar, maka bid ini akan gagal | |
Bid highestBid = selectedLot.getHighestBid(); | |
System.out.println("Lot nomor : " + CurrentlotNumber + | |
" dengan penawaran tertinggi: " + | |
highestBid.getBid()); | |
} | |
} | |
} | |
/** | |
* Return id lot jika ada, jika tidak return null | |
* CurrentlotNumber = id lot yang perlu di return | |
*/ | |
public Lot getLot(int CurrentlotNumber) | |
{ | |
if((CurrentlotNumber >= 1) && (CurrentlotNumber < LotNumber)) {//cek apabila lot number ada atau tidak | |
Lot selectedLot = lots.get(CurrentlotNumber - 1); | |
if(selectedLot.getId() != CurrentlotNumber) { | |
System.out.println("Internal error : Lot nomor " + | |
selectedLot.getId() + | |
"telah dikembalikan, bukan lot nomor " + | |
CurrentlotNumber); | |
selectedLot = null; | |
} | |
return selectedLot; | |
} | |
else {//apabila tidak ada print tidak ada | |
System.out.println("Lot nomor : " + CurrentlotNumber + | |
" tidak ada."); | |
return null; | |
} | |
} | |
public void close() | |
{ | |
System.out.println("pelelangan berakhir."); | |
for(Lot lot : lots) | |
{ | |
System.out.println(lot.getId() + ": " +lot.getDescription()); | |
Bid bid = lot.getHighestBid(); | |
if (bid==null) | |
{ | |
System.out.println("Tidak ada bid untuk lot ini"); | |
} | |
else | |
{ | |
System.out.println("Item ini terjual kepada" + | |
bid.getBidder().getName() + " dengan harga : " | |
+ bid.getBid()); | |
} | |
} | |
} | |
} |
2.Class Lot
Class Lot merupakan class untuk menampung barang apa saja yang akan dilelang.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
*Lot | |
* | |
* @author Zelda Elma Sibuea | |
* @version 26/10/2020 */ | |
public class Lot//method untuk membuat Lot | |
{ | |
private final int Id;//id barang | |
private String description;//deskripsi barang | |
private Bid highestBid;//tawaran tertinggi untuk barang tersebut | |
public Lot(int number, String description) | |
{ | |
//buat lot baru dengan id dan deskripsi | |
this.Id = number; | |
this.description = description; | |
} | |
public boolean bidFor(Bid bid) | |
{ | |
//Method untuk mengecek apakah tawaran saat ini lebih besar dari tawaran tertinggi | |
if((highestBid == null) || | |
(bid.getBid() > highestBid.getBid())) { | |
highestBid = bid;//jika ya maka tawaran ini adalah tawaran tertinggi yang baru | |
return true; | |
} | |
else { | |
return false; | |
} | |
} | |
public String detail() | |
{ | |
String details = Id + ": " + description; | |
if(highestBid != null) { | |
details += " Terjual dengan harga " + | |
highestBid.getBid(); | |
} | |
else { | |
details += " (Belum ada Penawaran)"; | |
} | |
return details; | |
} | |
public int getId() | |
{ | |
//Method untuk return id lot | |
return Id; | |
} | |
public String getDescription() | |
{ | |
//Method untuk return deskripsi dari lot | |
return description; | |
} | |
public Bid getHighestBid() | |
{ | |
//Method untuk return tawaran tertinggi dari lot | |
return highestBid; | |
} | |
} | |
3.Class Bid
Class Bid merupakan class untuk melelang
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Bid here. | |
* | |
* @author Zelda Elma Sibuea | |
* @version 26/10/2020 | |
*/ | |
public class Bid | |
{ | |
private final Person bidder;//orang yang akan melakukan tawaran | |
private final long value;//untuk menyimpan harga tawaran | |
public Bid(Person bidder, long value) | |
{ //untuk membuat penawar baru dengan nama dan jumlah tawaran nya | |
this.bidder = bidder; | |
this.value = value; | |
} | |
public Person getBidder() | |
{ | |
//untuk return nama penawar | |
return bidder; | |
} | |
public long getBid() | |
{//untuk return harga tawaran nya | |
return value; | |
} | |
} | |
4. Class Person
Class Person merupakan class untuk memasukkan nama siapa saja yang ikut dalam perlelangan
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Bid here. | |
* | |
* @author Zelda Elma Sibuea | |
* @version 26/10/2020 | |
*/ | |
public class Bid | |
{ | |
private final Person bidder;//orang yang akan melakukan tawaran | |
private final long value;//untuk menyimpan harga tawaran | |
public Bid(Person bidder, long value) | |
{ //untuk membuat penawar baru dengan nama dan jumlah tawaran nya | |
this.bidder = bidder; | |
this.value = value; | |
} | |
public Person getBidder() | |
{ | |
//untuk return nama penawar | |
return bidder; | |
} | |
public long getBid() | |
{//untuk return harga tawaran nya | |
return value; | |
} | |
} | |
Cara untuk menjalankan program-program tersebut adalah sebagai berikut:
- Pertama, beri nama pada sistem pelelangan pada Class Auction
- Lalu,cek apakah item yang dimasukkan tadi sudah terdaftar
- Setelah itu masukkan nama pelelang di Class Person. Disini saya akan memasukkan dua nama.
- Setelah itu, kita akan melakuan pelelangan dengan memasukkan nama pelelang, barang yang dipilih, dan juga memasukkan harganya.
- Maka akan tampil seperti berikut ini
Nama : Zelda Elma Sibuea
NRP : 05111940000038
PBO A
Komentar
Posting Komentar