Jobsheet Praktikum OOP (v1.0)
3 – Class dan Object (2) PENDAHULUAN Masih tentang Class dan Object, jika pada bagian sebelumnya fokus pembahasan terletak pada bagaimana cara menggambarkan desain Cklas menggunakan Class Diagram, cara membuat Class di Java, cara membuat/deklarasi atribut dan method, cara melakukan instansiasi dan cara mengakses atribut dan method dari suatu objek yang telah terbentuk, maka pada bagian ini akan dibahas konsep Class dan Object yang lebih lanjut. Kensep tersebut antara lain: • • • •
Access Modifier Konstruktor Atribut/Method Instansiasi Atribut/Method Class
Access Modifier Atribut dan method yang dimiliki oleh oleh suatu class bisa dibatasi hak akses terhadapnya. Hal itu bisa dilakukan dengan memberikan access modifier pada atribut dan method dari suatu class. Ada 4 macam access modifier, yaitu:
Pada Class Diagram, private digambarkan dengan tanda -‐, public dengan tanda +, protected dengan tanda # dan default (tanpa modifier access) dengan tanda ~.
Konstruktor Pada bahasan sebelumnya, setelah class terbentuk, selanjutnya harus dibuat objek. Pada saat proses pembentukan objek (instansiasi), sebenarnya yang berperan adalah konstruktor. Pada dasarnya, konstruktor merupakan suatu method tetapi dengan karakteristik khusus. Beberapa karakteristik dari konstuktor antara lain: • • • •
Nama konstruktor selalu sama dengan nama class Selalu memiliki modifier access public Konstruktor hanya jalan saat proses instansiasi Konsruktor tidak memiiki tipe data method, layaknya method pada umumnya
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
•
Tidak bisa memiliki return.
Ada 2 jenis konstruktor, yaitu: •
•
Konstruktor Default : konstruktor yang tidak memiliki parameter atau argumen. Contoh konstruktor untuk class Mahasiswa:
Konstruktor Berparameter/Berargumen : konstruktor yang memiliki parameter atau argumen.
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
Contoh proses instansiasi yang menggunakan konstruktor default dari contoh di atas, yaitu: Mahasiswa m = new Mahasiswa(); Sedangkan contoh proses instansiasi yang menggunakan konstruktor berparameter dari contoh di atas yaitu: Mahasiswa m = new Mahasiswa (“0210630064”, “Imam F”);
Atribut dan Method Instansiasi Atribut dan method instansiasi merupakan atribut dan method yang dimiliki oleh objek hasil instansiasi. Jadi untuk mengakses atribut dan method tersebut, sebelumnya harus dibuat terlebih dahulu objek. Atribut instansiasi biasanya digunakan untuk atribut-‐atribut dari suatu class, dimana nilai dari atribut tersebut untuk objek satu dengan objek yang lain berbeda-‐beda dan tersimpan pada alamat referensi atau alamat memori yang berbeda. Contohnya pada class Mahasiswa di atas, nilai nim dan nama untuk objek mahasiswa satu dengan objek mahasiswa lain bisa berbeda nilainya. Sehingga atribut nim dan nama tersebut termasuk ke jenis atribut instansiasi. Dan untuk mengakses atribut maupun method instansiasi, harus terlebih dahulu dibuat objek. Contohnya: untuk mengakses atribut nim, nama dan memanggil method ubahNama(), terlebih dulu harus dibuat objek dari class Mahasiswa. Baru kemudian atribut nim dan nama dan method ubahNama() bisa diakses.
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
Mahasiswa m = new Mahasiswa(); m.nim = “0210630064”; m.nama = “Imam F”; m.ubahNama(“Imam Fahrur Rozi”);
Atribut dan Method Class Jika atribut instansiasi digunakan untuk atribut yang memiliki nilai yang berbeda-‐beda antara objek yang satu dengan objek yang lain dari class yang sama, maka atribut class digunakan untuk atribut yang nilainya antara objek satu dengan objek yang lain dari class yang sama akan bernilai sama. Misalnya mahasiswa memiliki SPP, dan nilai SPP tersebut dipastikan sama antara mahasiswa satu dengan mahasiswa lainya. Ini berarti, atribut SPP untuk objek mahasiswa satu dengan objek mahasiswa lainnya bernilai sama. Sehingga SPP tersebut bisa digolongkan sebagai atribut class. Untuk membuat atribut dan method class ditandai dengan kata kunci static. Dan untuk mengakses atribut class, tidak perlu dibuat objek lebih dulu, karena bisa diakses langsung dari nama classnya. Contohnya: Class Mahasiswa di atas ditambahi atribut spp yang merupakan atribut class dan method ubahSpp() yang merupakan method class.
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
Dan untuk mengakses atribut spp dan method ubahSpp() tidak perlu membuat objek dari class Mahasiswa lebih dulu, melainkan bisa langsung menggunakan nama class Mahasiswa langsung.
Mahasiswa.spp = 10000; Mahasiswa.ubahSpp(15000);
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
PERCOBAAN 1 : ACCESS MODIFIER Tujuan: 1. Mahasiswa memahami konsep penggunaan access modifier 2. Mahasiswa mampu membuat atribut dan method dengan access modifier 3. Mahasiswa memahami efek dari access modifier yang diterapkan pada suatu atribut maupun method Prosedur Percobaan: 1. Perhatikan class diagram di bawah ini: Sepeda + kode : String # merek : String ~ jenis : String -‐ kecepatan : float -‐ gigi : int + start () : void + tambahKecepatan(float v) : void + kurangiKecapatan(float v) : void -‐ tambahGigi() : void -‐ kurangiGigi() : void + stop(): void + tampilData() : void 2. Buat program dari class diagram di atas, dan simpan dengan nama file Sepeda.java
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
3. Compile dan jalankan class Sepeda tersebut! Amati hasilnya! 4. Buat class baru dan simpan dengan nama file SepedaDemo.java
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
5. Compile dan jalankan class SepedaDemo.java! Amati hasilnya! Pertanyaan: 1. Adakah atribut dan method dari class Sepeda yang tidak bisa diakses dari dalam class itu sendiri? Sebutkan jika ada! …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 2. Dari hasil percobaan tahap 3 (hasil compile dan run terhadap Sepeda.java), apakah Anda menemukan error? Jelaskan (error atau tidak error hasilnya) dikaitkan dengan modifier access dari atribut maupun methodnya! …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 3. Dari hasil percobaan tahap 5 (hasil compile dan run terhadap SepedaDemo.java), apakah Anda menemukan error? Jika iya, jelaskan apa penyebab terjadinya error tersebut! …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 4. Atribut dan method apakah dari class Sepeda, yang hanya bisa diakses dari dalam class itu sendiri? …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. ……………………………………………………………………………………………………………………………………………………..
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
5. Atribut dan method apakah dari class Sepeda, yang bisa diakses dari class lain yang berada pada paket yang sama dengan class Sepeda tersebut? …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 6. Bisakah atribut jenis dari class Sepeda diakses dari class SepedaDemo? Jika bisa, jelaskan lebih lanjut mengapa bisa? …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 7. Jika di dalam method main di dalam class SepedaDemo, ditambahkan sintaks s1.kurangiGigi(), apakah bisa? Jelaskan jawaban Anda! …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 8. Perhatikan baris program 19 dan 24 dari class Sepeda, disitu terlihat dipanggil method kurangiGigi() dan tambahGigi() yang notabene memiliki access modifier private, dan tidak menimbulkan error. Mengapa bisa demikian? …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 9. Apa yang harus dilakukan agar error pada class SepedaDemo bisa hilang? …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 10. Berikan kesimpulan dari percobaan yang telah dilakukan dan beberapa pertanyaan terkait dengan access modifier! …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. ……………………………………………………………………………………………………………………………………………………..
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
PERCOBAAN 2 : KONSTRUKTOR Tujuan: 1. Mahasiswa memahami konsep konstruktor 2. Mahasiswa mampu membuat konstruktor default dan konstruktor berparameter 3. Mahasiswa mampu membuat objek dengan menggunakan konstruktor default dan konstruktor berparameter Prosedur Percobaan: 1. Buka kembali file Sepeda.java di atas! 2. Tambahkan konstruktor default dan konstruktor berparameter dari class Sepeda tersebut. Letakkan konstuktor tersebut di bawah atribut!
3. Di dalam method main() yang ada di dalam class Sepeda, tambahkan beberapa proses instansiasi seperti tampil di gambar berikut:
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
4. Compile dan jalankan kembali class Sepeda! Amati hasilnya!
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
Pertanyaan: 1. Mengapa pada baris pertama hasil keluaran muncul tulisan Objek terbentuk menggunakan konstruktor default ? …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 2. Mengapa juga pada baris-‐baris setelahnya muncul tulisan Objek terbentuk menggunakan konstruktor berparameter 1 dan Objek terbentuk menggunakan konstruktor berparameter 2? …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 3. Perhatikan pada method main() dari class Sepeda tersebut, pada baris berapakah proses instansiasi yang menggunakan konstruktor berparameter dengan 2 parameter dijalankan? …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 4. Perhatikan hasil keluaran program: Objek terbentuk menggunakan konstruktor berparameter 2 KODE = KOSONG MEREK = KOSONG JENIS = KOSONG KECEPATAN = 25.0 GIGI = 4 Setelah ditampilkan muncul nilai kode=KOSONG, merek=KOSONG, jenis=KOSONG, kecepatan=25.0 dan gigi=4. Dapat dari manakah nilai-‐nilai tersebut? …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 5. Misalkan di dalam class Sepeda ditambahkan konstruktor seperti di bawah ini: public Sepeda(int x){ gigi = x; } Bisa apa tidak? Jelaskan! …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. ……………………………………………………………………………………………………………………………………………………..
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
…………………………………………………………………………………………………………………………………………………….. 6. Berikan contoh konstruktor berparameter dengan 3 parameter untuk class Sepeda tersebut, dan berikan juga contoh proses instansiasi yang menggunakan konstruktor dengan 3 parameter tersebut! …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 7. Berikan kesimpulan dari percobaan yang telah dilakukan dan beberapa pertanyaan terkait dengan konstruktor! …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. ……………………………………………………………………………………………………………………………………………………..
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
PERCOBAAN 3 : ATRIBUT&METHOD CLASS DAN ATRIBUT&METHOD INSTANSIASI Tujuan: 1. Mahasiswa memahami konsep atribut&method class dan atribut&method instansiasi 2. Mahasiswa mampu membuat atribut&method class menggunakan kata kunci static 3. Mahasiswa mengetahui beda cara mengakses atribut&method class dengan atribut&method instansiasi Prosedur Percobaan: 1. Buka kembali file Sepeda.java di atas! 2. Tambahkan atribut class jumTotalSepeda dan method class tambahJumTotalSepeda()!
Atribut class
Method class
3. Method main() di dalam class Sepeda juga diubah menjadi sbb:
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
Penjelasan: Setiap selesai proses instansiasi, dijalankan method class tambahJumTotalSepeda(), yang menandakan bahwa jumlah objek yang terbentu dari class Sepeda bertambah 4. Compile dan jalankan class Sepeda, dan amati hasil keluarannya!
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
Pertanyaan: 1. Sebutkan atribut dan method instansiasi yang dimiliki oleh class Sepeda! …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 2. Sebutkan atribut dan method class yang dimiliki oleh class Sepeda! …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 3. Jelaskan perbedaan antara atribut dan method instansiasi dan atribut dan method class dari nilai yang disimpan di dalamnya! …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 4. Jelaskan perbedaan antara atribut dan method instansiasi dan atribut dan method class dari cara mengakses atribut dan method tersebut! …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 5. Perhatikan hasil keluaran di atas. Jelaskan bagaimana bisa muncul nilai 3 untuk jumlah total objek sepeda yang dibuat! …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. 6. Berikan kesimpulan dari percobaan yang telah dilakukan dan beberapa pertanyaan terkait dengan konstruktor! …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. …………………………………………………………………………………………………………………………………………………….. ……………………………………………………………………………………………………………………………………………………..
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
LATIHAN Buatlah program dari Class Diagram di bawah ini!
Balok + panjang : double # lebar : double ~ tinggi : double + jumVolumeTotalBalok : double + hitungVolume () : double + hitungLuasPermukaan() : double + hitungDiagonalRuang() : double ~ hitungDiagonalSisiDepan() : double # hitungDiagonalSisiSamping() : double -‐ hitungDiagonalSisiAtas() : double
Penjelasan: • Perhatikan notasi access modifier pada tiap atribut dan method • Perhatikan juga notasi atribut/method class • Atribut jumVolumeTotalBalok digunakan untuk menyimpan jumlah volume total dari objek-‐objek balok yang sudah terbuat.
Imam Fahrur Rozi, PSMI -‐ Polinema