September 15, 2015 thumb Belajar Java #10: Keuntungan Menggunakan Tipe Data Referral Object

artikel ini merupakan artikel sambungan dari artikel sebelumnya. BelaJar Java #9 : Menggunakan Tipe Data Referral Object. jadi jika kebetulan belum membaca postingan saya sebelumnya silakan dibaca postingan sebelumnya. kali ini saya ingin membahas sedikit keuntungan dalam menggunakan tipe data object (abstract). sebagai contoh postingan saya sebelumnya, ketika kita menginginkan agar data manusia selain disimpan menggunakan nama usia dan grade, jikalau kita juga ingin menyimpan data lain misalnya alamat, dapat dengan mudah diakomodasi, sebagai contoh. pada source code manusia berikut akan kita tambahkan sebuah data baru yang berisikan alamat.

package goblooge.main;
/**
 * kelas sederhana untuk implementasi 
 * Tipe data Abstract (Referral Object)
 * @author goblooge
 * @since 22 May 2015
 */
public class Manusia {

	private String nama_manusia;
	private int usia_manusia;
	private char grade_manusia;
	private String alamat;			//tambahan data
	
	
	/**
	 * merupakan constructor untuk tipe data Manusia
	 * @param nama String yang menjadi nama manusia
	 * @param usia integer yang berisi tentang usia
	 * @param grade char merupakan grade dari manusia ini
	 */
	public Manusia(String nama, int usia, char grade){
		this.nama_manusia=nama;
		this.usia_manusia=usia;
		this.grade_manusia=grade;
	}
	
	/**
	 * merupakan constructor kedua (overload) untuk tipe data Manusia
	 * @param nama String yang menjadi nama manusia
	 * @param usia integer yang berisi tentang usia
	 * @param grade char merupakan grade dari manusia ini
	 */
	public Manusia(String nama, int usia, char grade,String alamat){
		this.nama_manusia=nama;
		this.usia_manusia=usia;
		this.grade_manusia=grade;
		this.alamat=alamat;			//tambahan data
	}
	
	/**
	 * methode ini digunakan 
	 * untuk mencetak data 
	 * dari manusia ini.
	 */
	public String getBiodata(){
		String biodata="========================================\n" +
				"Nama  : "+this.nama_manusia+"\n" +
				"Usia  : "+this.usia_manusia+"\n" +
				"Alamat  : "+this.alamat+"\n" +			//tambahan data
				"Grade : "+this.grade_manusia;
		return biodata;
	}
	
}

perhatikan kita menambahkan data alamat pada biodata manusia. dan tinggal hanya menambahkan satu baris dan semua manusia sekarang memiliki alamat. perhatikan terdapat dua contructor disana, yang pertama tanpa alamat dan yang kedua menggunakan alamat. dalam ilmu OOP ini dinamakan Overloading dalam bahasa sederhananya sebuah method yang memiliki nama sama, tetapi data yang digunakan untuk memanggil berbeda, kita dapat mendefiniskan berbagai macam contructor dengan berbagai macam inputan. akan saya bahas lebih lanjut mengenai overloading. sekarang kita perlu menambahkan sedikit coding pada Goblooge.java untuk menggunakan contrcutor yang baru.

package goblooge.main;
import goblooge.main.Manusia; //import dahulu kelas Manusia

/**
 * Class Sederhana dalam java 
 * untuk belajar Menggabungkan dan Memecah String 
 * @author goblooge
 *
 */
public class Goblooge {
	/**
	 * Belajar String
	 * @param args
	 */
	public static void main(String args[]){
		
		/* inisialisasi data manusia*/
		Manusia satu=new Manusia("Nurul Huda", 26, 'A' );
		Manusia dua=new Manusia("Eka Safitri", 25, 'B' );
		Manusia tiga=new Manusia("Salman Al-Farisi Ibnu Al-Huda", 1, 'A' );
		Manusia empat=new Manusia("Abdul Malik", 1, 'A',"Lamongan" );		//menggunakan contructor yang baru dg alamat
		Manusia lima=new Manusia("Muniswatin", 1, 'A',"Gresik" );			//menggunakan contructor yang baru dg alamat
		
		/*mencetak data manusia*/
		System.out.println(satu.getBiodata());
		System.out.println(dua.getBiodata());
		System.out.println(tiga.getBiodata());
		System.out.println(empat.getBiodata());
		System.out.println(lima.getBiodata());
	}
}

nah perhatikan manusia empat dan manusia lima yang saya tambahkan, keduanya menggunakan contructor baru yang mana akan meload data alamat. coba di running dan lihat hasilnya.

Perubahan Hasil Eksekusi Object Class

Perubahan Hasil Eksekusi Object Class

nah perhatikan, sekarang setiap manusia akan berubah datanya memiliki alamat. untuk alamat-alamat 3 yang diatas, tidak akan berisikan null yang mana berupa data kosong yang tidak diisi. sekarang kita akan ubah, yang mana setiap data nama yang tidak disi akan berisikan tulisan “– Kosong –“. caranya gimana, sangat mudah hanya dengan menambahkan satu baris saja. dimana coba ? iyup di contructor manusia yang pertama atau langsung di assign dibagian atas deklarasi variable alamat atau dibagian method getBiodata() diberikan if else untuk meng-handle string yang kosong. dan ingat kita sama sekali tidak akan merubah Goblooge.java hanya merubah Manusia.java. saya akan tunjukan ketiga-tiganya saya akan silakan dipilih salah satu. well, ubahlah dibagain Manusia.java

package goblooge.main;
/**
 * kelas sederhana untuk implementasi 
 * Tipe data Abstract (Referral Object)
 * @author goblooge
 * @since 22 May 2015
 */
public class Manusia {

	private String nama_manusia;
	private int usia_manusia;
	private char grade_manusia;
	private String alamat="--Kosong--";			//tambahan data, cara #pertama untuk memberikan data secara langsung pada tipe data alamat ketika pertama kali di inisialisasi
	
	
	/**
	 * merupakan constructor untuk tipe data Manusia
	 * @param nama String yang menjadi nama manusia
	 * @param usia integer yang berisi tentang usia
	 * @param grade char merupakan grade dari manusia ini
	 */
	public Manusia(String nama, int usia, char grade){
		this.nama_manusia=nama;
		this.usia_manusia=usia;
		this.grade_manusia=grade;
		this.alamat="-- Kosong --";		//handling string kosong #kedua, ketika memanggil contructor tanpa alamat, data alamat langsung di assign dengan String --Kosong--
	}
	
	/**
	 * merupakan constructor kedua (overload) untuk tipe data Manusia
	 * @param nama String yang menjadi nama manusia
	 * @param usia integer yang berisi tentang usia
	 * @param grade char merupakan grade dari manusia ini
	 */
	public Manusia(String nama, int usia, char grade,String alamat){
		this.nama_manusia=nama;
		this.usia_manusia=usia;
		this.grade_manusia=grade;
		this.alamat=alamat;			//tambahan data
	}
	
	/**
	 * methode ini digunakan 
	 * untuk mencetak data 
	 * dari manusia ini.
	 */
	public String getBiodata(){
		
		if(this.alamat==null) this.alamat="-- Alamat --"; // cara #ketiga menghandle String kosong dengan memberikan if dan else.
		
		String biodata="========================================\n" +
				"Nama  : "+this.nama_manusia+"\n" +
				"Usia  : "+this.usia_manusia+"\n" +
				"Alamat  : "+this.alamat+"\n" +			//tambahan data
				"Grade : "+this.grade_manusia;
		return biodata;
	}
	
}

perhatikan baris dengan hastag #pertama, #kedua, #ketiga , anda hanya perlu memilih salah satu dari ketiganya, sekarang coba di compile, dan fuala. sekarang setiap data yang alamat yang kosong tidak lagi tampil NULL, melainkan tulisan “– Kosong –“.

Semua data yang Kosong sekarang berisikan String Kosong

Semua data yang Kosong sekarang berisikan String Kosong

sebenarnya ada lagi satu cara, dan ini sangat tidak saya sarankan, serta mereporkan. yaitu dengan mengan mengubah satu persatu data di Goblooge.java, seperti berikut.

package goblooge.main;
import goblooge.main.Manusia; //import dahulu kelas Manusia

/**
 * Class Sederhana dalam java 
 * untuk belajar Menggabungkan dan Memecah String 
 * @author goblooge
 *
 */
public class Goblooge {
	/**
	 * Belajar String
	 * @param args
	 */
	public static void main(String args[]){
		
		/* inisialisasi data manusia*/
		Manusia satu=new Manusia("Nurul Huda", 26, 'A',"-- Kosong --" );					//ditambahi kata-kata kosong satu-persatu
		Manusia dua=new Manusia("Eka Safitri", 25, 'B',"-- Kosong --" );					//ditambahi kata-kata kosong satu-persatu
		Manusia tiga=new Manusia("Salman Al-Farisi Ibnu Al-Huda", 1, 'A',"-- Kosong --" );	//ditambahi kata-kata kosong satu-persatu
		Manusia empat=new Manusia("Abdul Malik", 1, 'A',"Lamongan" );		//menggunakan contructor yang baru dg alamat
		Manusia lima=new Manusia("Muniswatin", 1, 'A',"Gresik" );			//menggunakan contructor yang baru dg alamat
		
		/*mencetak data manusia*/
		System.out.println(satu.getBiodata());
		System.out.println(dua.getBiodata());
		System.out.println(tiga.getBiodata());
		System.out.println(empat.getBiodata());
		System.out.println(lima.getBiodata());
	}
}

cara diatas adalah cara yang sangat tidak efektif dan efisien, iya kalau datanya cuma 3 lha kalau ada 1 juta data, mau merubah satu-satu saya jamin tangan anda akan kiu. ngomong2 soal cara #pertama, #kedua, dan #ketiga, manakah yang lebih baik. wah kalau masalah ini saya tidak bisa bahas disini. butuh pembahasan yang lebih dalam lagi, karena berbicara masalah efisiensi dan efektifitas dalam komputer.

inilah salah satu kelebihan jika kita menggunakan tipe data Referral Object (Abstract) ketika terjadi perubahan akan sangat mudah diakomodasi, banyangkan jika kita menggunakan array untuk menyelesaikan masalah ini. saya jamin source code anda akan lebih semrawut. ngomong-ngomong kalau mau download source codenya boleh , klik saja tombol dibawah ini, jangan lupa like, dan share . berikutnya akan saya lanjutkan menggunakan Belajar Java #11 : LinkedList, salam Goblooge

Download Source Code

Comments

total comments