Anda di halaman 1dari 19

MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

20. Pass-by-Value & Call-by-Reference


Ada berbagai cara di mana parameter data dapat dilewatkan (passing) ke dalam dan keluar
dari method dan fungsi. Mari kita asumsikan bahwa fungsi B() dipanggil dari fungsi A(). Dalam hal
ini A disebut "fungsi pemanggil (caller function)" dan B Juga disebut "fungsi terpanggil (called
function)." Juga, argumen yang dikirim A ke B disebut argumen aktual dan parameter B disebut
argumen formal.
Terdapat dua jenis parameter yaitu:
• Formal parameter
Variabel dan tipe datanya yang berada pada prototype fungsi atau method.

Sintaks 6.23. Formal parameter pada prototype method

Tipe_nilaibalik nama_method(tipe_data nama_variabel){


//body method
};

• Actual parameter
Variabel atau ekspresi yang berkaitan dengan formal parameter yang ada pada perintah
pemanggilan fungsi atau method.

Sintaks 6.24. Actual parameter pada perintah pemanggil method

Tipe data nama_variabel = nama_method(variabel/ekspresi);

Secara umum, ada dua teknik utama untuk meneruskan data dalam bahasa pemrograman:
(1) Pass-by-Value (lewat nilai) dan (2) Pass-by-Reference(lewat referensi). Sementara beberapa
bahasa menganggap Pass-by-Reference dan Pass-by-Value adalah dua teknik yang berbeda, dalam
teori, satu teknik dapat dianggap sebagai spesialisasi dari yang lain, di mana referensi hanyalah alias
ke object, yang implementasinya adalah pointer.
Passing by value merupakan penyalinan data, di mana perubahan pada nilai yang disalin
tidak tercermin dalam nilai aslinya. Pass-by-Reference berarti aliasing data, di mana perubahan pada
nilai alias tercermin dalam nilai asli.
Berbicara mengenai bahasa pemrograman java, Pass-by-Value adalah konsep inti dari Java,
bukan Pass-by-Reference. Terdapat 2 cara pengiriman parameter pada Java yakni:

331
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

• Pass-by-Value
Perubahn terjadi pada formal parameter (parameter pada prototype method). Perubahan yang
terjadi pada parameter di prototype method tidak akan mempengearuhi/ikut mengubah nilai dari
actual parameter (cariabel yang dijdikan argument pada perintah pemanggil method).
• Call-by-Reference
Perubahan yang dilakukan pada parameter formal ditransmisikan kembali ke perintah pemanggil
melalui pengiriman parameter. Setiap perubahan yang terjadi pada parameter formal akan
merefleksikan pada parameter actual di perintah pemanggil karena parameter formal menerima
reference atau alamat memory dari data yang dikirim.
Sebagai catatan, jika sebuah object diteruskan ke sebuah method sebagai argumen, reference
tersebut di lewatkan menggunakan method Pass-by-Value. Namun, karena nilai yang dikirim
mengacu kepada object, salinan nilai tersebut akan tetap merujuk ke object yang sama dengan
dengan argument yang bersangkutan. Sehingga dapat dikatakan bahwa Java secara penuh
menerapkan Pass-by-Value.
Dalam hal ketika suatu nilai dengan tipe primitive dilewatkan menuju method sebagai
argument, maka nilai yang ditetapkan untuk tipe primitive ini diteruskan ke method. Hal tersebut
berarti bahwa perubahan yang terjadi pada nilai tersebut oleh method tidak akan mengubah nilai
primitive yang telah anda lewatkan ke method. Sementara, dalam kasus melewatkan referensi ke
method, Java tetap menggunakan aturan Pass-by-Value.
Sebagaimana yang kita ketahui bahwa reference pada Java merekam lokasi memory dari
object yang dibentuk jika object tersebut ditugaskan ke referensi, jika tidak maka akan
diinisialisasikan dengan NULL. Sekarang poin yang penting untuk diingat di sini adalah bahwa nilai
referensi adalah lokasi memory dari object yang ditugaskan. Jadi, setiap kali kita meneruskan
referensi ke method manapun sebagai argument, maka kita benar-benar melewatkan lokasi memory
dari object yang ditugaskan ke referensi tertentu.
Secara teknis hal tersebut berarti bahwa method target juga memiliki lokasi memory dari
object yang kita buat dan dapat mengaksesnya juga. Jadi, jika method target mengakses object yang
dibuat dan melakukan perubahan terhadap property manapun, maka kita akan ikut mengubah nilai
yang pada object original.

Sintaks 6.25. Parameter tipe primitive

Tipe_nilaibalik nama_method(tipe_data nama_variabel){


//body method
};

332
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

Sintaks 6.26. Parameter tipe object

Tipe_nilaibalik nama_method(nama_class nama_object){


//body method
};

Praktikum 6.44. Pass-by-Value


1. Modifikasi project JavaFundamentalI, pada class Main.java
ketikkan kode berikut:
package JavaFundamentalI;

public class Main {


public static void main(String[] args) {
int Usia = 30;
ubahUsia(Usia);
System.out.println(Usia);
}

static void ubahUsia(int Usia) {


Usia = 35;
}
}

2. Kemudian jalankan atau tekan F6 pada class Main.java.


3. Maka akan muncul output sebagai berikut:

333
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

Gambar 6.49. Screenshot class Main.java pada package JavaFundamentalI praktikum 6.44.

Pada praktikum 6.44, kita telah mempraktikkan Pass-by-Value. Jika Anda menduga bahwa
nilainya akan berubah menjadi 30, Anda benar. Pada baris 5 kita lihat variabel yang bertipe integer
diisi dengan nilai 30. Kemudian pada baris 6 variabel tersebut dikirim ke method ubahUsia(). Pada
saat variabel Usia akan dicetak pada baris 7, variabel Usia akan bernilai 30 lagi karena Java melewati
parameter object dengan nilai (Pass-by-Value). Karena pelewatan dilakukan menggunakan nilainya,
bukan alamat memory dari variabel Usia pada class Main, nilai 35 pada variabel Usia di method
ubahUsia() tidak merefleksikan nilainya ke variabel Usia di method Main(). Sehingga ketika perintah
baris 7 dieksekusi, nilai Usia yang ditampilkan adalah 30, bukan 35.
Seperti C / C ++, Java membuat salinan variabel yang dikirimkan dalam method dan
kemudian melakukan manipulasi. Sehingga perubahan tidak tercermin dalam method utama.

Beri centang di sini! Pernyataan


Saya telah mengerjakan praktikum 6.44 dengan sungguh-sungguh,
membaca serta memahami setiap penjelasan yang ada mengenai
praktikum tersebut.

Praktikum 6.45. Call-by-Reference


1. Modifikasi project JavaFundamentalI, pada class Main.java
ketikkan kode berikut:
package JavaFundamentalI;

class Tes
{

334
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

int x;
Tes(int i) {
x = i;
}

Tes(){
x = 0;
}
}

class Main {
public static void main(String[] args) {
Tes t = new Tes(5);
ubah(t);
System.out.println(t.x);
}

public static void ubah(Tes R){


R.x = 10;
}
}

2. Kemudian jalankan atau tekan F6 pada class Main.java.


3. Maka akan muncul output sebagai berikut:

335
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

Gambar 6.50. Screenshot class Main.java pada package JavaFundamentalI praktikum 6.45.

Pada praktikum 6.45 kita telah melakukan Call-by-Reference. Namun ingat bahwa pada
Java, parameter dengan tipe data reference, seperti object, juga melalui Pass-by-Value. Ini berarti
bahwa ketika method dikembalikan, referensi yang lewat masih merujuk object yang sama seperti
sebelumnya. Sehingga, nilai object dapat diubah dalam method, jika memiliki tingkat akses yang
tepat. Java membuat salinan referensi dan meneruskannya ke method, tetapi masih menunjuk ke
referensi memori yang sama.
Pada program di atas bisa kita lihat terdapat class Main dan class Tes. Pada class Tes,
terdapat dua buah constructor yakni Tes(int i) dan Tes(). Ingat Kembali bahwa konstruktor akan
dieksekusi secara implisit bersamaan pada saat dibentuknya object dari class yang bersangkutan.
Jika terdapat dua buah konstruktor, maka konstruktur yang akan dieksekusi secara impllisit dilihat
dari parameternya sesuai dengan argument yang dikirimkan pada saat pembentukan object.
Program ini akan menampilkan ouput dengan nilai 10. Hal tersebut terjadi karena setelah
dilakukan pembentukan object pada baris 18, argument 5 dikirim ke konstruktor pertama pada baris

336
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

6. Parameter konstruktor yaitu int i kemudian menerima nilai 5 tersebut dan dimasukkan ke variabel
x sesuai dengan perintah baris 7. Sampai di sini, object t memiliki member x dengan nilai 5.
Namun, pada baris 19 dilakukan pemanggilan method ubah() dengan mengirimkan
parameter berupa object, bukan variabel primitive. Hal tersebut berarti bahwa yang dilewatkan
adalah alamat memory dari object t. Kemudian argument yang terlihat berupa object tersebut
diterima oleh parameter berupa object juga yaitu Tes R di dalam method ubah(). Kemudian
dilakukan penugasan agar nilai 10 masuk ke dalam variabel x dari object R seperti dilihat pada baris
24. Walaupun pada method ini bertipe void dan tanpa perintah untuk mengembalikan nilai ke fungsi
pemanggilnya, namun pengeksekusian perintah baris 24 yang telah kita bahas di atas ternyata juga
merubah nilai variabel x pada object t di class Main. Hal ini terjadi karena object R mereferensi
alamat memory dari object t yang dilewatkan ke method, sehingga perubahan yang dilakukan pada
memory secara otomatis akan merubah semua variabel yang menunjuk ke memory tersebut.

Beri centang di sini! Pernyataan


Saya telah mengerjakan praktikum 6.45 dengan sungguh-sungguh,
membaca serta memahami setiap penjelasan yang ada mengenai
praktikum tersebut.

21. Passing & Returning Objcet


Walaupun Java betul-betul hanya menerapkan Pass-by-Value, namun efek yang ditimbulkan
antara pengiriman parameter bertipe primitive dan reference seperti object berbeda.
Ketika kita mengirimkan suatu object ke method, hal tersebut dilakukan secara Pass-by-
Value. Namun, ketika kita mengirimkan sebuah object ke method, terjadi hal yang berbeda, sehingg
pengiriman parameter berupa object lebih tepat disebut Call-by-Reference. Java melakukan hal
menarik tersebut. Ketika mengirim tipe primitive ke suatu method java menggunakan Pass-by-
Value. Sehingga bisa disebut bahwa Jva melakukan cara hybrid antara Pass-by-Value dan Pass-by-
reference. Secara mendasar, sebuah parameter tidak dapat dubah oleh fungsi, namun fungsi dapat
meminta parameter untuk mengubah dirinya sendiri dengan memanggil method tertentu di
dalamnya.
• Saat membuat variabel bertipe class, kita hanya membuat reference/penunjuk ke object.
• Ketika kita mengirmkan reference tersebut ke method, parameter yang menerima akan menunjuk
ke object yang sama dengan dikirimkan melalui argument. Hal tersebut berarti bahwa object
bertindak seolah-olah mereka dilewatkan ke method menggunakan Pass-by-Reference.

337
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

• Perubahan yang dilakukan pada object di dalam method akan merefleksikan perubahan dalam
object yang di gunakan sebagai argument. Karena keduanya menunjukan lokasi object yang
sama

Sintaks 6.27. Mengirim object sebagai argument ke method

Tipe_data nama_variabel = nama_method (nama object);

Sintaks 6.28. Mengembalikan object dari method

Tipe_nilaibalik(nama_class)nama_method(nama_class
nama_object){
//body method
return nama_object;
};

Praktikum 6.46. Passing argument berupa object


1. Modifikasi project JavaFundamentalI, pada class Main.java
ketikkan kode berikut:
package JavaFundamentalI;

class ContohObjectPass {
int a, b;

ContohObjectPass (int x, int y)


{
a = x;
b = y;
}

boolean samaDengan(ContohObjectPass o)
{
return (o.a == a && o.b == b);

338
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

}
}

public class Main {


public static void main(String args[])
{
ContohObjectPass obj1 = new ContohObjectPass
(50, 10);
ContohObjectPass obj2 = new ContohObjectPass
(50, 10);
ContohObjectPass obj3 = new ContohObjectPass (-
1, -1);

System.out.println("obj1 == obj2: " +


obj1.samaDengan(obj2));
System.out.println("obj1 == obj3: " +
obj1.samaDengan(obj3));
}
}

2. Kemudian jalankan atau tekan F6 pada class Main.java.


3. Maka akan muncul output sebagai berikut:

339
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

Gambar 6.51. Screenshot class Main.java pada package JavaFundamentalI praktikum 6.46.

Pada praktikum 6.46 kita telah mempraktikkan object passing atau pengiriman object
sebagai parameter pada pemanggilan method. Pada program di atas terdapat class ContohObjectpass
yang dialamnya terdapat variabel a dan b yang bertipe integer. Selain itu juga terdapat constructor
yang bertugas memindahkan nilai yang diterima dari parameter i dan j ke dalam variabel a dan b.
Di dalam class ContohObjectPass juga terdapat sebuah method bernama samaDengan()
dengan tipe nilai balik Boolean. Method samaDengan() memiliki parameter yang menerima object
yang dikirim oleh perintah pemanggilnya. Data member dari object yag diterima oleh method
tersebut kan dibandingkan dengan data member object yang memanggilnya.
Pada class Main dapat kita lihat pada baris 19 dibentuk sebuah object bernama obj1 dari
class ContohObjectPass, disertai pengiriman argument 50,10. Pada saat pembentukan object ini, nilai
argument dikirimkan ke constructor class pembangunnya. Constructor tersebut dieksekusi secara
implisit saat object obj1 dibentuk. Sehingga, nilai argument 50 dan 10 yang dikirim dari perintah
baris 19 akan masuk ke dalam variabel a dan b dari object obj1. Langkah yang sama juga dilakukan
saat perintah baris 20 dan 21 dieksekusi, sehingga obj2 memiliki variabel a dan be yang masing
masing bernilai 50 dan 10. Sedangkan pada obj3 variabel a dan b bernilai -1 dan -1.
Selanjutnya pada perintah baris 23, obj1 digunakan untuk memanggil method
samaDengan() dengan menjadikan obj2 sebagai argument yang dikirimkan ke method tersebut.
Oargumen ini kemudian diterima oleh method samaDengan() pada baris 10 dan membantuk sebuah
variabel o bertipe ContohObjectPass. Variable atau object ini akan merefer ke obj2 sesuai dengan

340
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

argument yang diterima, sehingga o akan memiliki apa yang dimiliki oleh obj2. o.a adalah variabel
a pada obj2, dengan kata lain o merujuk ke alamat memory dari obj2. Sedangkan variabel a biasa
adalah variabel yang dimiliki oleh obj1 yang memanggil method samaDengan(). Karena nilai
variabel yang dibandingkan dari kedua object adalah sama maka nilai yang dikembalikan ke baris
23 adalah true.
Perintah baris 24 akan menampilkan nilai falce karena nilai o.a dan o.b adalah -1 sedangan
nilai a dan b masing-masing adalah 50 dan 10.

Beri centang di sini! Pernyataan


Saya telah mengerjakan praktikum 6.46 dengan sungguh-sungguh,
membaca serta memahami setiap penjelasan yang ada mengenai
praktikum tersebut.

Praktikum 6.47. Mengembalikan nilai balik berupa object


1. Modifikasi project JavaFundamentalI, pada class Main.java
ketikkan kode berikut:
package JavaFundamentalI;
class ContohObjectReturn {
int a;
ContohObjectReturn(int i)
{
a = i;
}

ContohObjectReturn tambahDua() {
ContohObjectReturn temp = new
ContohObjectReturn(a+10);
return temp;
}
}
public class Main
{
public static void main(String args[])
{
ContohObjectReturn obj1 = new ContohObjectReturn(2);

341
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

ContohObjectReturn obj2;
obj2 = obj1.tambahDua();
System.out.println("obj1.a: " + obj1.a);
System.out.println("obj2.a: " + obj2.a);
}
}

2. Kemudian jalankan atau tekan F6 pada class Main.java.


3. Maka akan muncul output sebagai berikut:

Gambar 6.52. Screenshot class Main.java pada package JavaFundamentalI praktikum 6.47.

342
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

Pada praktikum 6.47 kita telah mengimplementasikan pengembalian nilai balik berupa
object. Dapat kita lihat pada program praktikum 6.47 terdapat class ContohObjectReturn dan Class
Main. Class CotntohObjectReturn terdiri atas data member berupa variabel bernama a bertipe
integer. Pada class tersebut juga terdapat sebuah constructor yang memiliki parameter variabel i
bertipe integer. Constructor tersebut akan menugaskan argument yang masuk ke parameter i ke
dalam variabel a seperti ditunjukkan pada perintah baris 7. Selain itu, dalam class
ContohObjectReturn juga terdapat sebuah method bernama tambahDua(). Di dalam method terdapat
perintah untuk membuat sebuah object baru bernama temp yang kemudian akan dikembalikan
kepada perintah pemanggil dari object.
Beralih ke class Main, pada method main baris 20 dibentuk sebuah object bernama obj1
dari class ContohObjectReturn. Pada saat pendeklarasiannya, dikirimkan sebuah argument bernilai
2 yang akan diterima oleh constructor class. Secara implisit constructor class dieksekusi sehingga
nilai 2 tadi akan terseimpan ke dalam variabel a dalam obj1. Selanjutnya pada baris 21 dibentuk
pula sebuah object bernama obj2. Namun, sapai pada baris perintah ini, obj2 hanya berupa variabel,
belum berisi apapun. Barulah pada pengeksekusian perintah baris 22, obj2 memiliki nilai. Pada saat
baris 22 dieksekusi, obj1 memanggil method tambahDua(). Pada method tambahDua(), seperti kita
lihat pada baris 11, dibentuk sebuah object bernama temp lengkap dengan inisialisasi memory dan
data member. Pada pendeklarasian object tersebut juga dikirimkan argument a+2 dimana a yang
dimaksud adalah variabel a milik obj1 yang hasil penjumlahan dan penyimpanan yang dilakukan
pada konstruktor akan menyimpan hasilnya pada variabel a milik obj temp. “Paket” object temp ini
kemudian dikembalikan ke perintah pemanggilnya pada baris 22 dan ditugaskan ke object obj2.
Dapat dikatakan bahwa obj2 merefer alamat memory dari temp.
Sehingga pada saat nilai variabel a pada obj1 dan variabel a pada obj2 ditampilkan nilai yang
muncul berbeda. Obj1 menampilkan nilai a yang diisi melalui constructor pada saat
pembentukannya. Sedangkan variabel a pada obj2 diperoleh dari hasil penjumlahan variabel a dari
obj1 dengan nilai 10 yang kemudian dimasukkan kedalam variabel a obj2 sendiri oleh constructor
class.

Beri centang di sini! Pernyataan


Saya telah mengerjakan praktikum 6.47 dengan sungguh-sungguh,
membaca serta memahami setiap penjelasan yang ada mengenai
praktikum tersebut.

343
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

22. Asosiasi
Asosiasi berarti membangun hubungan antara dua class yang terpisah melalui object mereka.
Hubungan yang terjadi dapat berupa one to one, one to many, many to one, atau many to many.

Praktikum 6.48. Asosiasi one to one


1. Modifikasi project JavaFundamentalI, ganti class Main.java
menjadi PerusahaanBus.java kemudian ketikkan kode berikut:
package JavaFundamentalI;

class ClassMobil{
String namaMobil;
int idMobil;
ClassMobil(String nama, int id)
{
this.namaMobil = nama;
this.idMobil = id;
}
}
class Supir extends ClassMobil{
String namaSupir;
Supir(String nama, String namaM, int idM){
super(namaM, idM);
this.namaSupir=nama;
}
}
class PerusahaanBus{
public static void main(String args[])
{
Supir obj = new Supir("Acang", "Terios", 2233);
System.out.println(obj.namaSupir+" adalah sopir dari
mobil "
+ "dengan id: "+obj.idMobil);
}
}

344
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

2. Kemudian jalankan atau tekan F6 pada class PerusahaanBus.java.


3. Maka akan muncul output sebagai berikut:

Gambar 6.53. Screenshot class PerusahaanBus.java pada package JavaFundamentalI praktikum


6.48.

Pada praktikum 6.48 kita telah mengimplementasikan sifat asosiasi pada sebuah class. Paa
program di atas, terdapt tiga buah class yakni class ClassMobil, Supir, dan PerusahaanTransportasi.
Class PerusahaanTransportasi merupakan class utama dalam program ini.
Dapat kita lihat di dalam class ClassMobil baris 6 terdapat sebuah constructor. Constructor
tersebut memiliki argument berupa nama dan id. Nilai dari parameter nama dan id tersebut akan

345
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

diperoleh dari pemanggilam method superclass melalui perintah super() berargumen yang terdapat
pada baris 15.
Pada class Supir, terdapat sebuah constructor yang memiliki parameter nama, namaM, dan
idM. Parameter ini nantinya akan menerima nilai pada saat pembentukan object di baris 19.
Pada baris 19 kita lihat pada saat pembentukan object, dikirimkan juga argument berupa
nilai “acing”, “Terios”, dan 2233 kepada konstruktor class Supir. Kemudian ketiga nilai tersebut
diterima oleh parameter nama, namaM, dan idM. Selanjutnya perintah super() disertai argument pada
baris 15 dieksekusi (ingat Kembali materi mengenai keyword super), mengakibatkan constructor
class ClassMobil juga dieksekusi.
Karena variabel pada kedua class telah terisi dan karena class Supir meng-extends class
ClassMobil, maka ketika object obj diperintahkan untuk menampilkan isi dari variabel namaSupir
dan idMobil seperti ditunjukkan pada baris 23, output yang ditampilkan seperti yang terlihat pada
praktikum 6.48.

Beri centang di sini! Pernyataan


Saya telah mengerjakan praktikum 6.48 dengan sungguh-sungguh,
membaca serta memahami setiap penjelasan yang ada mengenai
praktikum tersebut.

23. Aggregasi
Agregasi adalah bentuk khusus dari asosiasi yang merupakan hubungan satu arah searah
antara kelas (atau entitas), misalnya untuk kelas Dompet dan Uang. Dompet memiliki Uang tetapi
uang tidak perlu memiliki Dompet, jadi itu adalah hubungan satu arah. Dalam hal ini hubungan
kedua entri dapat bertahan jika yang lain berakhir.

Praktikum 6.49. Agregasi


1. Modifikasi project JavaFundamentalI, ganti class Main.java
menjadi Mahasiswa.java kemudian ketikkan kode berikut:
package JavaFundamentalI;

class Alamat
{
int noRumah;
String kota;
String provinsi;

346
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

String negara;

Alamat(int noRumah, String kota, String provinsi,


String negara){
this.noRumah=noRumah;
this.kota =kota;
this.provinsi = provinsi;
this.negara = negara;
}
}

class Mahasiswa {
int nim;
String namaMahasiswa;
Alamat alamat;

Mahasiswa(int nim, String namaMahasiswa, Alamat almt){


this.nim=nim;
this.namaMahasiswa=namaMahasiswa;
this.alamat = almt;
}

public static void main(String args[]){


Alamat ad = new Alamat(15, "Makassar", "Sul-Sel",
"Indonesia");
Mahasiswa obj1 = new Mahasiswa(12243, "Rudi", ad);
System.out.println(obj1.nim);
System.out.println(obj1.namaMahasiswa);
System.out.println(obj1.alamat.noRumah);
System.out.println(obj1.alamat.kota);
System.out.println(obj1.alamat.provinsi);
System.out.println(obj1.alamat.negara);
}
}

347
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

2. Kemudian jalankan atau tekan F6 pada class Mahasiswa.java.


3. Maka akan muncul output sebagai berikut:

Gambar 6.54. Screenshot class Mahasiswa.java pada package JavaFundamentalI praktikum 6.49.

Pada praktikum 6.49 kita telah mengimplementasikan agregasi. Pada program dapat kita
lihat terdapat Dua class yakni class Alamat dan Mahasiswa. Kedua class tidak terhubung secara
inheritance.

348
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR

Pada class Alamat terdapat sebuah constructor berparameter yang akan menerima nilai parameter
pada saat pembentukan object dilakukan pada perintah baris 22. Begitupun dengan class Mahasiswa
yang memiliki sebuah constructor.
Pada saat perintah baris 22 dieksekusi, terbentuk sebuah object bernama ad. Pada saat
pembentukan object ini juga dikirimkan argument ke constructor class yang bersangkutan. Sehingga
variabel noRumah, kota, provinsi, dan negara pada object ad akan berisi nilai yang dikirimkan
tersebut.
Selanjutnya pada perintah baris 23 dibentuk sebuah ibject bernama obj1 dari class
Mahasiswa. Pada saat pembentukan object juga dikirimkan argument kepada constructor class
bersangkutan sehingga. Adapun argument yang dikirim yakni 12243 bertipe integer, “Rudi” bertipe
string dan ad bertipe object dari sebuah class. Argument tersebut secara berurut akan diterima oleh
parameter bertipe primitive pada constructor Mahasiswa(int nim, String namaMahasiswa, Alamat
almt). Pada program ini dapat kita lihat object alamat yang dikirim ke constructor mengakibatkan
object yang dibentuk dalam constructor dapat mengakses nilai yang ada pada object ad. Sehingga
kita juga dapat menampilkan nilai dari object ad melalui object obj1.

Beri centang di sini! Pernyataan


Saya telah mengerjakan praktikum 6.49 dengan sungguh-sungguh,
membaca serta memahami setiap penjelasan yang ada mengenai
praktikum tersebut.

349

Anda mungkin juga menyukai