Nama : Ranti Saputri
Nim : H1G112208
Jurusan : Teknik Informatika
Unduh filenya di Intraksi Manusia dan Komputer.
Nim : H1G112208
Jurusan : Teknik Informatika
Unduh filenya di Intraksi Manusia dan Komputer.
href="http://jembersantri.blogspot.com/" style="color: #153ce4; margin: 0px; padding: 0px; text-decoration: initial;" target="_blank">
int
atau boolean
. Seperti
disebutkan pada bagian sebelumnya, mendeklarasikan suatu variabel
dengan tipe suatu kelas tidak berarti membuat objek dari kelas
tersebut. Objek tersebut harus dibuat (constructed). Pada saat objek dibuat, komputer akan mencari tempat yang tidak dipakai
pada memori heap untuk menempatkan objek tersebut, kemudian mengisi
objek itu dengan variabel instansi. Sebagai programmer, kita tidak
peduli dengan bagaimana suatu objek disimpan, akan tetapi kita ingin
mengatur supaya nilai yang disimpan pada saat objek tersebut dibuat
sesuai dengan keinginan kita. Dalam beberapa kasus, kita bahkan ingin
suatu objek melakukan tugas tertentu untuk pertama kali begitu ia
diciptakan.PasanganDadu
, yang melambangkan sepasang dadu. Kelas ini
memiliki dua variabel instansi yang melambangkan nilai yang ditunjukkan
oleh masing-masing dadu dan metode instansi untuk mengocok dadu, yaitu :class PasanganDadu { public int dadu1 = 3; // Angka pada dadu pertama public int dadu2 = 4; // Angka pada dadu kedua public void kocok() { // Kocok dadu dengan menggunakan bilangan acak antara 1 dan 6 dadu1 = (int)(Math.random()*6) + 1; dadu2 = (int)(Math.random()*6) + 1; } } // akhir kelas PasanganDadu
dadu1
dan dadu2
diisi dengan nilai awal 3
dan 4. Inisialisasi ini dilakukan setiap kali objek PasanganDadu
dibuat. Ingat bahwa kelas PasanganDadu
hanya 1, akan tetapi kita bisa
membuat banyak objek dari kelas ini. Setiap kali objek dibuat, objek
tersebut memiliki tempat di memori sendiri, yang disebut dengan
instansi objek tersebut. Perintah "dadu1 = 3
" dan "dadu2 = 4
" akan
dieksekusi setiap kali objek dibuat.class PasanganDadu { public int dadu1 = (int)(Math.random()*6) + 1; // Angka pada dadu pertama public int dadu2 = (int)(Math.random()*6) + 1; // Angka pada dadu kedua public void kocok() { // Kocok dadu dengan menggunakan bilangan acak antara 1 dan 6 dadu1 = (int)(Math.random()*6) + 1; dadu2 = (int)(Math.random()*6) + 1; } } // akhir kelas PasanganDadu
Math.random()
pada inisialisasi variabel instansi. Untuk inisialisasi
variabel static, hal ini tidak mungkin dilakukan, karena hanya ada 1
variabel statik untuk 1 kelas, tidak peduli berapa pun banyaknya objek
yang dibuat.PasanganDadu
dapat menggunakan perintah berikut :// deklarasi variabel dan pembuatan objek dilakukan sekaligus PasanganDadu dadu = new PasanganDadu();
new PasanganDadu()
adalah perintah untuk
membuat objek, meletakkannya di memori dan menyimpan alamat objek ini
di memori pada variabel dadu. Bagian ekspresi PasanganDadu()
mirip
seperti memanggil subrutin. Sebetulnya itulah yang terjadi, yaitu
program memanggil subrutin spesial yang dinamakan konstruktor
(constructor). Mungkin Anda heran karena kita tidak melihat adanya
subrutin bernama PasanganDadu()
. Akan tetapi semua kelas memiliki
konstruktor, yang jika kita tidak buat secara khusus, Java akan
menambahkannya secara otomatis, yang disebut konstruktor bawaan.PasanganDadu
di atas kita ubah sehingga kita
bisa memberi nilai awal sendiri. Dalam hal ini kita buat konstruktor
yang menerima 2 nilai sebagai nilai awal dadu, yaitu nilai1 dan nilai2.class PasanganDadu { public int dadu1; // Angka pada dadu pertama public int dadu2; // Angka pada dadu kedua public PasanganDadu(int nilai1, int nilai2) { // Konstruktor, mengambil nilai1 dan nilai2 sebagai nilai awal untuk dadu1 dan dadu2 dadu1 = nilai1; dadu2 = nilai2; } public void kocok() { // Kocok dadu dengan menggunakan bilangan acak antara 1 dan 6 dadu1 = (int)(Math.random()*6) + 1; dadu2 = (int)(Math.random()*6) + 1; } } // akhir kelas PasanganDadu
PasanganDadu dadu = new PasanganDadu(1,2);
class PasanganDadu { public int dadu1; // Angka pada dadu pertama public int dadu2; // Angka pada dadu kedua public PasanganDadu() { // Isi dadu1 dan dadu2 dengan bilangan acak, dengan memanggil metode // kocok() kocok(); } public PasanganDadu(int nilai1, int nilai2) { // Konstruktor, mengambil nilai1 dan nilai2 sebagai nilai awal untuk // dadu1 dan dadu2 dadu1 = nilai1; dadu2 = nilai2; } public void kocok() { // Kocok dadu dengan menggunakan bilangan acak antara 1 dan 6 dadu1 = (int) (Math.random() * 6) + 1; dadu2 = (int) (Math.random() * 6) + 1; } } // akhir kelas PasanganDadu
new PasanganDadu()
" atau dengan "new PasanganDadu(x,y)
", di
mana x dan y adalah ekpresi bernilai int.(int)(Math.random()*6) + 1
PasanganDadu
. Bagi programmer, teknik seperti ini mempermudah pemecahan
masalah dengan mengelompokkannya menjadi ciri dan perilaku suatu objek.public class KocokDuaPasangDadu { /** * @param args */ public static void main(String[] args) { PasanganDadu daduPertama = new PasanganDadu(); // pasangan dadu pertama PasanganDadu daduKedua = new PasanganDadu(); // pasangan dadu kedua int jumlahKocokan; // untuk mengitung berapa kali dua pasang dadu // tersebut dikocok int total1; // hitung berapa kali dadu pertama muncul int total2; // hitung berapa kali dadu kedua muncul jumlahKocokan = 0; do { daduPertama.kocok(); // kocok dadu pertama total1 = daduPertama.dadu1 + daduPertama.dadu2; // hitung jumlahnya System.out.println("Pasangan dadu pertama berjumlah " + total1); daduKedua.kocok(); // kocok dadu pertama total2 = daduKedua.dadu1 + daduKedua.dadu2; // hitung jumlahnya System.out.println("Pasangan dadu pertama berjumlah " + total2); jumlahKocokan++; System.out.println(); // cetak baris kosong } while (total1 != total2); System.out.println("Butuh " + jumlahKocokan + " kocokan hingga pasangan " + " dadu pertama dan kedua berjumlah sama"); } }
new nama_kelas(parameter);
Murid
pada bagian sebelumnya. Kita akan tambahkan konstruktor dan juga kita ganti variabel instansi "nama
" menjadi bersifat privat.class Murid { private String nama; // Nama murid public double nilai1, nilai2, nilai3; // Nilai-nilai ujian Murid(String namaMurid) { // Konstruktor objek Murid nama = namaMurid; } public String getNama() { // Metode untuk mengambil variabel anggota yang bersifat private // misalnya variabel instansi nama return nama; } public double hitungRataRata() { // Hitung rata-rata ulangan return (nilai1 + nilai2 + nilai3) / 3; } } // akhir kelas Murid
String
yaitu nama murid yang akan kita buat. Objek bertipe Murid ini bisa dibuat dengan pernyataan seperti:mrd1 = new Murid("Ahmad Surahmat"); mrd2 = new Murid("Hamid Samsudin")
nama
harus diisi dengan perintah terpisah setelah objek dibuat. Masalahnya
programmer tidak selalu ingat untuk mengisi nilai nama. Pada versi baru
di atas, setiap kali kita membuat objek, parameter namaMurid
harus disertakan, karena ini dideklarasikan pada konstruktornya. Dengan
demikian potensi bug karena kelalaian programmer dapat dihilangkan
dengan mudah.nama
bersifat private. Ini berarti variabel ini tidak bisa diakses oleh
dunia luar secara langsung. Variabel ini hanya bisa diambil nilainya
dengan metode instansi getNama
,
dan karena tidak bisa diakses langsung dari luar, maka isi variabel ini
tidak bisa diganti dari luar kelas. Sekali objek Murid dibuat, maka
namanya tidak bisa diganti selama murid tersebut ada.class Titik private integer x private integer y Titik() x < 0 y < 0 {end Titik} public getX() -> integer -> x {end getX} public getY() -> integer -> y {end getY} {end class} class Titik3D: Titik private integer z Titik3D() z <- 0 {end Titik3D} public getZ() -> integer -> z {end getZ} {end class}Keterkaitan antara kelas Titik dan Titik3D adalah kelas Titik3D merupakan kelas turunan dari kelas Titik. Dalam hal ini kelas Titik disebut dengan kelas dasar atau super classatau base classsedangkan kelas Titik3D disebut sebagai kelas turunan atau derived classatau subclass.
Titik3D p <- new Titik3D() integer x <- p.getX() integer y <- p.getY() integer z <- p.getZ()Keuntungan dari pewarisan adalah tidak perlu mengutak atik kode kelas yang membutuhkan tambahan atribut atau metode saja, karena tinggal membuat kelas turunannya tanpa harus mengubah kode kelas dasarnya. Kelas dasar akan mewariskan semua atribut dan kodenya kecuali konstruktor dan destruktor yang memiliki izin akses publicdan protectedke kelas turunannya dengan izin akses yang sama dengan pada kelas dasar.
|