Pada kulian PBO pagi ini kami membahas tentang Collection.
Categories
Unknown Feed- An error has occurred, which probably means the feed is down. Try again later.

Pendahuluan
Baiklah teman, kali ini kita akan membuat program yang dapat mensimulasikan cara kerja sebuah Lampu Lalu Lintas. Seperti yang umum kita ketehui bahwa sebuah lampu lalulintas memiliki tiga buah lampu yang berwarna merah, kuning dan hijau. Dalam hitungan waktu tertentu nyala lampu akan berubah sesuai dengan aturan yang berlaku di suatu wilayah. Di Surabaya, kota kita ini, lampu lalu lintas memiliku pola nyala lampu sebagai berikut:
Misalnya saat ini yang nyala adalah lampu merah, maka selanjutnya yang nyala adalah lampu warna hijau. Dari lampu warna hijau, akan nyala warna kuning, kemudian merah dan kembali ke warna hijau lagi. Begitu seterusnya. Pola tersebut kalau kita gambarkan kurang lebih seperti berikut:
M->H->K->M->H->K->M
Rancangan Class
Melihat cerita di atas, kita dapat membuat rancangan class yang dapat merepesentasikan sebuah lampu lalu lintas. Oke…masih betah baca kan? Lampu lalu lintas tentu terdiri dari tiga buah lampu, ini kata kunci pertama berarti kita butuk objek lampu. Setiap lampu memiliki informasi mengenai warna lampu dan status lampu. Warna lampu akan berisi warna merah, kuning atau biru. Untuk status lampu, menggambarkan apakah lampu sedang nyala atau mati. Class yang berikutknya adalah class LampuLaluLintas, yang akan berisi tiga buah objek lampu. Sehingga kita bisa menggambar class diagram seperti berikut:
Class Lampu
public class Lampu{
public static boolean ON=true;
public static boolean OFF=false;
private String warna;
private boolean on;
public Lampu(String warna, boolean on){
this.warna=warna;
this.on=on;
}
public boolean isOn(){
return on;
}
public void setOnOff(){
on=!on;
}
public String toString(){
return warna + "=" +(isOn()?"ON":"OFF");
}
}
Class Lampu Lalu Lintas
/**
* class LampuLaluLintas
* @author: teguhs
* */
public class LampuLaluLintas{
//ada tiga lampu merah, kuning, hijau
private Lampu []dataLampu=new Lampu[3];
private int c=0;
/**
* inisialisasi lampu
* */
public LampuLaluLintas(){
dataLampu[0]=new Lampu("Merah",Lampu.ON);
dataLampu[1]=new Lampu("Kuning",Lampu.OFF);
dataLampu[2]=new Lampu("Hijau",Lampu.OFF);
}
public void ubahNyalaLampu(){
dataLampu.setOnOff();
if(c==0){
c=2;
dataLampu.setOnOff();
}else{
--c;
dataLampu.setOnOff();
}
}
public void run(int lama){
System.out.println("Merah\tKuning\tHijau");
cetak();
for(int i=1;i<lama;i++){
ubahNyalaLampu();
cetak();
}
}
public void cetak(){
System.out.println(toString());
}
public String toString(){
String str=new String("");
for(Lampu l:dataLampu)
str = str + (l.isOn()?"ON":"-") + "\t";
return str;
}
}
Pengujian
Yah…akhirnya kita tiba saatnya melakukan uji coba…apakah class-class yang kita bangun telah sesuai dengan pola nyala lampu lalulintas yang sudah dijelaskan dibagian pendahuluan?
Berikut ini adalah langkah-langkah dalam melalukan pengujian:
Berikut ini adalah salah satu contoh jawaban UTS PBO.
Class KartuSeluler
public class KartuSeluler {
private String namaKartu;
private int jPria;
private int jWanita;
public KartuSeluler(String namaKartu, int jPria, int jWanita) {
this.namaKartu = namaKartu;
this.jPria = jPria;
this.jWanita = jWanita;
}
public KartuSeluler(String nama) {
this.namaKartu=nama;
}
/**
* @return the namaKartu
*/
public String getNamaKartu() {
return namaKartu;
}
/**
* @param namaKartu the namaKartu to set
*/
public void setNamaKartu(String namaKartu) {
this.namaKartu = namaKartu;
}
/**
* @return the jPria
*/
public int getjPria() {
return jPria;
}
/**
* @param jPria the jPria to set
*/
public void setjPria(int jPria) {
this.jPria = jPria;
}
/**
* @return the jWanita
*/
public int getjWanita() {
return jWanita;
}
/**
* @param jWanita the jWanita to set
*/
public void setjWanita(int jWanita) {
this.jWanita = jWanita;
}
public String toString(){
return namaKartu+"\tP:"+jPria + "\tW:"+jWanita;
}
}
Class Provider
import java.util.*;
public class Provider {
private Vector daftarKartu=new Vector();
private String namaProvider;
public Provider(String nama) {
this.namaProvider = nama;
}
public int hitungPenggunaPria(){
int total=0;
for(KartuSeluler kartu:daftarKartu)
total +=kartu.getjPria();
return total;
}
public int hitungPenggunaWanita(){
int total=0;
for(KartuSeluler kartu:daftarKartu)
total +=kartu.getjWanita();
return total;
}
public void addKartu(KartuSeluler kartu){
daftarKartu.add(kartu);
}
public String getNamaProvider(){
return namaProvider;
}
}
Class SurveyGSM
public class SurveyGSM {
private KartuSeluler []daftarKartu={
new KartuSeluler("Mentari"),
new KartuSeluler("Matrix"),
new KartuSeluler("IM3"),
new KartuSeluler("Simpati"),
new KartuSeluler("Halo"),
new KartuSeluler("AS"),
new KartuSeluler("XL"),
new KartuSeluler("3")
};
private Provider daftarProvider[]={
new Provider("Indosat"),
new Provider("Telkomsell"),
new Provider("XL"),
new Provider("3")
};
public void initDataRandom(){
int jPria=0;
int jWanita=0;
for(KartuSeluler kartu:daftarKartu){
jPria=(int)(Math.random()*100);
jWanita=(int)(Math.random()*100);
kartu.setjPria(jPria);
kartu.setjWanita(jWanita);
}
daftarProvider[0].addKartu(daftarKartu[0]);
daftarProvider[0].addKartu(daftarKartu[1]);
daftarProvider[0].addKartu(daftarKartu[2]);
daftarProvider[1].addKartu(daftarKartu[3]);
daftarProvider[1].addKartu(daftarKartu[4]);
daftarProvider[1].addKartu(daftarKartu[5]);
daftarProvider[2].addKartu(daftarKartu[6]);
daftarProvider[3].addKartu(daftarKartu[7]);
}
public void cetakPenggunaKartu(){
for(KartuSeluler kartu:daftarKartu)
System.out.println(kartu);
}
public static void main(String arg[]){
SurveyGSM survey=new SurveyGSM();
survey.initDataRandom();
survey.cetakPenggunaKartu();
System.out.println("Jumlah Responden Pria\t:" + survey.hitungJmlPria());
System.out.println("Jumlah Responden Wanita\t:" + survey.hitungJmlWanita());
System.out.println("Kartu Seluler Paling diminati Pria\t:" + survey.cariKartuFavPria().getNamaKartu());
System.out.println("Kartu Seluler Paling diminati Wanita\t:" + survey.cariKartuFavWanita().getNamaKartu());
System.out.println("Provider Paling diminati Pria\t:" + survey.cariProvFavPria().getNamaProvider());
System.out.println("Provider Paling diminati Wanita\t:" + survey.cariProvFavWanita().getNamaProvider());
}
public int hitungJmlPria(){
int total=0;
for(KartuSeluler k:daftarKartu)
total +=k.getjPria();
return total;
}
public int hitungJmlWanita(){
int total=0;
for(KartuSeluler k:daftarKartu)
total +=k.getjWanita();
return total;
}
public KartuSeluler cariKartuFavPria(){
KartuSeluler k=daftarKartu[0];
for(KartuSeluler k0:daftarKartu)
if(k.getjPria()<k0.getjPria())
k=k0;
return k;
}
public KartuSeluler cariKartuFavWanita(){
KartuSeluler k=daftarKartu[0];
for(KartuSeluler k0:daftarKartu)
if(k.getjWanita()<k0.getjWanita())
k=k0;
return k;
}
public Provider cariProvFavPria(){
Provider pMax=daftarProvider[0];
for(Provider p:daftarProvider)
if(pMax.hitungPenggunaPria()<p.hitungPenggunaPria())
pMax=p;
return pMax;
}
public Provider cariProvFavWanita(){
Provider pMax=daftarProvider[0];
for(Provider p:daftarProvider)
if(pMax.hitungPenggunaWanita()<p.hitungPenggunaWanita())
pMax=p;
return pMax;
}
}