Collection

Pada kulian PBO pagi ini kami membahas tentang Collection.

Posted in Kuliah, PBO | 179 Comments

Simulasi Trafic Light


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 Diagram Lampu Lalu Lintas

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?

Waktunya menguji program

Berikut ini adalah langkah-langkah dalam melalukan pengujian:

  1. Buat object (instance) dari class LampuLaluLintas
  2. Panggil method run
  3. masukkan jumlah perulangan
  4. lihat hasilnya…theng-theng.

Hasil pengujian dengan 10 iterasi

Oke…selamat belajar, kalau saya bisa pasti teman-teman juga bisa…tetap semangat..!
Posted in Kuliah, PBO | 50 Comments

Contoh Jawaban UTS PBO

Berikut ini adalah salah satu  contoh jawaban UTS PBO.

Contoh Keluaran Program

Class Diagram Survey GSM

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;
	}
}
Posted in Kuliah, PBO | 41 Comments