XRCIS WORKBOOK IF-212-GNAP-2013/2014 1 IDNTITAS Kajian Konsep Pemrograman Java, Konsep Objek dan Kelas dan relasinya Topik Pertemuan 3 dan 4: Penggunaan Java Pengenalan Kelas Konsep Kelas dan Objek Konsep Konstrukor Passing by value dan Passing by reference Keyword this Referensi [1] Hariyanto, Bambang. 2010. sensi-esensi Bahasa Pemrograman Java. Bandung: Palasari [2] Schildt, Herbert. 2007. The Complete Reference Java 7th dition.new York:McGrawHill [3] Sanjaya, Ridwan. 2005. Pengolahan Database MySQL 5 dengan Java 2. Yogyakarta:Andi [4] Martin, Robert C. 2003. UML for Java Programmer. Canada:Pretince Hall Kompetensi Utama Mengetahui tentang konsep pemrograman java Memahami konsep objek dan kelas dan relasinya Memahami hubungan antar kelas Lama Pengerjaan 2 x 100 menit Jenis Pengerjaan *(bisa dipilih lebih dari 1) Individu Kelompok Mandiri Terbimbing 2 PRTANYAAN PNDAHULUAN 1. Buatlah sebuah program untuk menentukan apakah suatu bilangan input user adalah bilangan prima genap atau bilangan prima ganjil 2. Perhatikan potongan kode berikut: int x = 10; int y = x++; int z = --y; berapakah nilai z? 3. Buatlah sebuah program sederhana untuk mencari daftar bilangan genap diantara 2 bilangan input (bisa memasukkan dari argument atau melalui scanner). Contoh: input1 5
XRCIS WORKBOOK IF-212-GNAP-2013/2014 input2 10 output 6, 8, 10 4. Apakah yang dimaksud dengan: i. Kelas ii. Objek iii. Passing by value dan Passing by reference 3 RINGKASAN TORI Kelas dan Objek Obyek merupakan dasar dari struktur Pemograman Berorientasi Obyek (OOP).Fitur dari OOP adalah Abstraksi, nkapsulasi, Pewarisan, dan Polymorphism. Fitur Abstraksi yaitu mengkarakteristikan obyek yaitu dengan pemberian atribut pada suatu obyek, hal ini akan diimplementasikan dengan pembuatan kelas (class). Kelas mempunyai 2 komponen yaitu Atribut dan Method. Object adalah gambaran dari entity, baik dunia nyata atau konsep dengan batasan-batasan dan pengertian yang tepat. Objek-objek ini kemudian juga dapat berupa gabungan dari beberapa objek yang lebih kecil. Sebagai contoh, lihatlah sebuah mobil.mobil adalah sebuah objek dalam kehidupan nyata. Namun mobil sendiri merupakan gabungan beberapa objek yang lebih kecil seperti roda ban, mesin, jok, dll. Mobil sebagai objek yang merupakan gabungan dari objek yang lebih kecil dibentuk dengan membentuk hubungan antara objek-objek penyusunnya. Begitu juga dengan sebuah program.objek besar dapat dibentuk dengan menggabungkan beberapa objek-objek dalam bahasa pemrograman. Objek-objek tersebut berkomunikasi dengan saling mengirim pesan kepada objek lain seperti halnya roda harus punya mur yang pas untuk dipasang di mobil. Dengan kata lain dapat dikatakan bahwa sebuah object merupakan turunan dari object lain sehingga mewarisi sifat-sifat induknya. Misal, motor dan mobil merupakan kendaraan bermotor, sehingga motor dan mobil mempunyai sifat-sifat yang dimiliki oleh class kendaraan bermotor. Namun selain sifat-sifat umum kendaraan bermotor seperti memerlukan bahan bakar, dan mempunyai ban, motor dan mobil juga memiliki perilaku sendiri yang khas. Dalam OOP, kita harus mengetahui 3 karakteristik object. 1. Behavior object (kelakuan dari object) Sifat (behaviour) menentukan bagaimana object merespon permintaan dari object lain dan melambangkan setiap hal yang dapat dilakukan. Sifat ini diimplementasikan dengan sejumlah operasi untuk object.misalnya kita mempunyai object pintu, objek ini mempunyai behavior proses menutup dan proses membuka pintu. Di dalam Java hal ini akan di implementasikan sebagai suatu method.
XRCIS WORKBOOK IF-212-GNAP-2013/2014 2. State Object Status (state) dari object adalah satu kondisi yang mungkin ada. Status dari object akan berubah setiap waktu dan ditentukan oleh sejumlah property (atribut) dengan nilai dari property, ditambah relasi object dengan object lainnya. Misalnya object pintu mempunyai state tertutup dan terbuka. 3. Atribut Object Sesuatu yang dimiliki oleh suatu object. Misalnya object pintu mempunyai gagang pintu, kunci. Dengan atribut ini, objek-objek yang memiliki state dan behavior yang sama dapat saling dibedakan. Misalnya object pintu dengan object mulut. Keduanya memiliki state yang mirip yaitu tertutup dan terbuka, juga memiliki behavior yang mirip yaitu proses menutup dan proses membuka. Kelas mendeskripsikan suatu objek.dalam bahasa biologi, dapat dikatakan bahwa kelas adalah species, sedangkan objek merupakan individu.kelas merupakan sebuah "blueprint" atau cetak biru yang sama untuk objek yang dibentuk dengan nilai yang berbeda-beda. Kelas memiliki variabel yang disebut sebagai atribut dan subrutin yang biasa disebut method.dalam sudut pandang pemrograman, kelas digunakan untuk menciptakan suatu objek. Atau dengan kata lain, kelas adalah pabrik pembuat objek. Bagian non-statik dari suatu kelas adalah bagian yang memuat detail suatu objek, yaitu apa isi variabel dan metodenya. Perbedaan kelas dan objek adalah : Objek diciptakan dan dihancurkan ketika program berjalan, sehingga kita bisa memiliki beberapa objek sekaligus. Dalam pemrograman berorientasi objek, kelas digambarkan dengan kelas diagram yang memperlihatkan method, atribut serta keterhubungan antar kelas. Contoh: Diagram kelas berikut: RumahSangatSederhana -lebar : int -panjang : int -developer : string -kursi : string -meja : string +getlebar() +getdvlpr() +setkursi(in kursi : string) +setmeja(in mj : string) +getkursi() +getmeja() +getpanjang() Memiliki kode sebagai berikut:
XRCIS WORKBOOK IF-212-GNAP-2013/2014 Secara umum, pola kode dari pembentukan kelas adalah sebagai berikut: Classmodifier class namaclass [extends namasuperclass] [implements namainterface] /* Mendefinisikan atribut */ Type instance-variabel1; Type instance-variabel2; Type instance-variabeln; /* Mendefinisikan atribut */
XRCIS WORKBOOK IF-212-GNAP-2013/2014 Type instance-variabel1; Type instance-variabel2; Type instance-variabeln; /* Mendefinisikan constructor */ [<access specifier>] namaclass(parameterlist){ constructor body; /*Mendefinisikan method*/ [<access specifier>] Type methodname1(parameterlist){ Methodbody; [<access specifier>] Type methodname2(parameterlist){ Methodbody; Terdapat beberapa modifier pada Java, yaitu: 1. Access modifier / Visibility Modifier berlaku untuk class, method, variable dan interface, meliputi modifier Public, Protected, Private, dan Default (tak ada modifier). Modifier ini berguna untuk menentukan kontrol terhadap member class tersebut. Modifier Class dan Interface Method dan Variabel Default(tak ada modifier) Tampak di Paketnya Diwarisi oleh subclassnya di paket yang sama dengan classnya. Dapat diakses oleh method-method di classclass yang sepaket. Public Tampak di manapun Diwarisi oleh semua subclassnya. Dapat diakses dimanapun. Protected Tidak dapat diterapkan Diwarisi oleh semua subclassnya. Dapat diakses oleh method-method di class-class yang sepaket. Private Tidak dapat diterapkan Tidak diwarisi oleh subclassnya
XRCIS WORKBOOK IF-212-GNAP-2013/2014 Tidak dapat diakses oleh class lain. 2. Final modifier berlaku untuk class,variabel dan method, meliputi modifier final. 3. Static modifier berlaku untuk variabel dan method, meliputi modifier static. 4. Abstrac modifier berlaku untuk class dan method, meliputi modifier abstract. 5. Syncronized modifier berlaku untuk method, meliputi modifier syncronized. 6. Native modifier berlaku untuk method, meliputi modifier native. 7. Storage modifier berlaku untuk variabel, meliputi transient dan volatile. Modifier Class Interface Method Variabel Abstract Class dapat berisi method abstract. Class tidak dapat diinstantiasi Tidak mempunyai constructor Optional untuk diberikan di interface karena interface secara inheren adalah abstract. Tidak ada badan method yang didefinisikan. Method memerlukan class kongkret yang merupakan subclass yang akan mengimplementasikan method abstract Tidak dapat Final Class menjadi tidak dapat digunakan untuk menurunkan class yang baru. Tidak dapat Method tidak dapat ditimpa oleh method di subclasssubclassnya Berperilaku sebagai konstanta Static Tidak dapat Tidak dapat Mendefinisikan method (milik) class. Dengan demikian tidak memerlukan instant object untuk menjalankanya. Method ini tidak dapat menjalankan method yang bukan static serta tidak dapat mengacu variable yang bukan static. Mendefinisikan variable milik class. Dengan demikian, tidak memerlukan instant object untuk mengacunya. Variabel ini dapat digunakan bersama oleh semua instant objek. synchronized Tidak dapat Tidak dapat ksekusi dari method adalah secara mutual Tidak dapat diterapkan pada
XRCIS WORKBOOK IF-212-GNAP-2013/2014 exclusive diantara semua thread. Hanya satu thread pada satu saat yang dapat menjalankan method deklarasi. Diterapkan pada instruksi untuk menjaga haya satu thread yang mengacu variable pada satu saat. Native Tidak dapat Tidak dapat Tidak ada badan method yang diperlukan karena implementasi dilakukan dengan bahas lain. Tidak dapat transient Tidak dapat Tidak dapat Tidak dapat Variable tidak aka diserialisasi Volatile Tidak dapat Tidak dapat Tidak dapat Variabel diubah secara asinkron. Kompilator tidak pernah melakukan optimasi atasnya. Fungsi dan Prosedur Seperti bahasa pemrograman lainnya, java juga memiliki fungsi dan prosedur.fungsi dan prosedur pada bahasa java merupakan method yang mengembalikan/tidak mengembalikan nilai.jika method tersebut mengembalikan nilai, maka method tersebut berupa fungsi.sedangkan jika tidak mengembalikan suatu nilai, method tersebut adalah sebuah prosedur. Bentuk umum dari fungsi: <access specifier> NamaKelas { <access specifier><tipe data> namaattribut; <access specifier><tipe data> namafungsi(){ //melakukan sesuatu return <nilai>;
XRCIS WORKBOOK IF-212-GNAP-2013/2014 Tipe data yang diberikan untuk sebuah fungsi tergantung dengan tipe data (int/double/char/string/kelas) dari nilai yang dikembalikan. Bentuk umum dari prosedur: <access specifier> NamaKelas{ <access specifier><tipe data> namaattribut; <access specifier>void namafungsi(){ //melakukan sesuatu Prosedur tidak mengembalikan nilai, sehingga tidak ada kode return seperti yang tercantum pada fungsi. nkapsulasi nkapsulasi merupakan proses pemaketan objek beserta methodnya untuk menyembunyikan rincian implementasi dari pemakai/objek lainnya. Inti dari enkapsulasi atau pengkapsulan adalah ketidaktahuan apa yang ada dalam suatu objek dan bagaimana pengimplementasiannya. Yang dibutuhkan hanyalah apa kegunaan, bagaimana cara memakainya dan apa yang akan terjadi. Dengan enkapsulasi, maka programmer tidak dapat mengakses suatu atribut yang dimiliki oleh suatu class.kemampuan ini ditujukan untuk mendapatkan desain suatu software yang baik dan untuk keamanan software itu sendiri. Segala yang tidak perlu diketahui oleh yang lain, tidak perlu di-publish. Dalam nkapsulasi, terdapat empat jenis pendeklarasian di class, yaitu default modifier, public, private dan protected. Salah satu implementasi dari enkapsulasi adalah adanya setter dan getter untuk suatu atribut dalam suatu kelas.jika pada suatu kelas terdapat atribut a dan b, maka terdapat method seta-geta dan setb-getb. Bentuk lain dari enkapsulasi adalah memasukkan nilai atribut dengan menggunakan konstruktor. Fungsi dari enkapsulasi adalah: a) Penyembunyian data Penyembunyian data (data hiding) mengacu perlindungan data internal objek.objek tersebut disusun dari antarmuka public method dan private data. Manfaat utama adalah bagian internal dapat berubah tanpa mempengaruhi bagian-bagian program yang lain. b) Modularitas Modularitas (modularity) berarti objek dapat dikelola secara independen. Karena kode sumber bagian internal objek dikelola secara terpisah dari antarmuka, maka kita bebas melakukan modifikasi yang
XRCIS WORKBOOK IF-212-GNAP-2013/2014 tidak menyebabkan masalah pada bagian-bagian lain. Manfaat ini mempermudah mendistribusikan objek-objek di sistem. Contoh ilustrasi pada mobil. Mobil memiliki sistem transmisi dan sistem ini menyembunyikan proses yang terjadi di dalamnya tentang bagaimana cara ia bekerja, mulai dari bagaimana cara ia mengatur percepatan dan apa yang dilakukan terhadap mesin untuk mendapat percepatan tersebut. Kita sebagai pengguna hanya cukup memindah-mindahkan tongkat transmisi untuk mendapatkan percepatan yang diinginkan. Tongkat transmisi adalah satu-satunya interface yang digunakan dalam mengatur sistem transmisi mobil tersebut. Kita tidak dapat menggunakan pedal rem untuk mengakses sistem transmisi tersebut dan sebaliknya dengan mengubah-ubah sistem transmisi kita tidak akan bisa menghidupkan radio mobil atau membuka pintu mobil. Konsep yang sama dapat pula kita terapkan dalam pemrograman orientasi objek. Keyword static dan final Keyword Static pada java digunakan untuk mengakses member baik variable ataupun method pada class tertentu tanpa harus membuat suatu objek dari class itu. Umumnya untuk mengakses member dari kelas lain kita harus membuat objek kelas itu tapi dengan menggunakan keyword static kita dapat langsung menggunakan member kelas lain. Keyword static bisa digunakan untuk variable ataupun method.selain itu keyword static juga berperan untuk membuat variabel global pada Java. Keword final digunakan pada bahasa java untuk: Konstanta jika digunakan pada variable (instance/local/parameter) Pemberian alamat tetap pada memori jika digunakan pada objek Pernyataan bahwa suatu kelas tidak dapat diturunkan jika digunakan pada kelas Konstruktor Constructor atau konstruktor digunakan untuk melakukan inisialisasi variable-variabel instan class serta melakukan persiapan-persiapan yang diperlukan oleh suatu objek untuk dapat beroperasi dengan baik. Format umum pendeklarasian dan pendefinisian constructor adalah : Nama constructor sama dengan nama class. Sebelum itu dapat diberi access modifier untuk mengatur visibility constructor. Dalam suatu Class dapat lebih dari satu constructor, masing-masing harus mempunyai parameter yang berbeda sebagai penandanya. Hal seperti ini disebut Overloading terhadap constructor. Deklarasi konstruktor adalah sebagai berikut:
XRCIS WORKBOOK IF-212-GNAP-2013/2014 [modifier] namaclass(parameter1){ Body constructor; [modifier] namaclass(parameter1,parameter2){ Body constructor; [modifier] namaclass(parameter1,parameter2,,parametern){ Body constructor; Contoh: public class ContohConstructor { int ivar; /** Creates a new instance of ContohConstructor */ public ContohConstructor(int ivar){ System.out.println("Ditampilkan ketika objek diciptakan"); this.ivar = ivar; public ContohConstructor(int iparam,string sparam){ System.out.println(sParam); ivar = iparam; int mtambah(){ ivar = ivar + 10; return ivar; public static void main(string args[]){ ContohConstructor obconst1 = new ContohConstructor(100);
XRCIS WORKBOOK IF-212-GNAP-2013/2014 ContohConstructor obconst2 = new ContohConstructor(200, "ditampilkan lagi ketika objek2 diciptakan"); System.out.println("nilai dari parameter inputan untuk constructor objek1 "+obconst1.mtambah()); System.out.println("nilai dari parameter inputan untuk constructor objek2 "+obconst2.mtambah()); Output: D:\>java ContohConstructor Ditampilkan ketika objek diciptakan ditampilkan lagi ketika objek2 diciptakan nilai dari parameter inputan untuk constructor objek1 110 nilai dari parameter inputan untuk constructor objek2 210 Passing by Value dan Passing by Reference Pada java, dikenal method yang dapat berbentuk fungsi ataupun prosedur. Dalam OOP, Method digunakan untuk memodularisasi program melalui pemisahan tugas dalam suatu kelas. Pemanggilan method menspesifikasikan nama method dan menyediakan informasi (parameter) yang diperlukan untuk melaksanakan tugasnya. Dua Teknik pelewatan parameter (parameter passing) : Contoh: Pelewatan dengan nilai (Pass By Value) dimana parameter dilewatkan melalui pengkopian nilai argumen, sehingga perubahan terhadap parameter tidak berpengaruh terhadap argument Pelewatan dengan Acuan (Pass By Reference) dimana yang dilewatkan adalah objek, sehingga perubahan terhadap parameter akan berlaku untuk variabel yang dilewatkan ke metode class Test { int ivar1, ivar2, ivar3; Test(int ivar1, int ivar2, int ivar3) { this.ivar1 = ivar1; this.ivar2 = ivar2;
XRCIS WORKBOOK IF-212-GNAP-2013/2014 this.ivar3 = ivar3; /*Overidding method dengan pass by value */ void Calculate(int ical1, int ical2) { ical1 = ical1 * 10; ical2 = ical2 / 2; /* Overidding method dengan pass by reference */ void Calculate(Test obtest) { obtest.ivar1 = obtest.ivar1 * 10; obtest.ivar2 = obtest.ivar2 / 2; /*Overidding method yang mengembalikan nilai*/ int OverMethod(int iangka){ ivar3 = ivar3 + iangka; System.out.println("Tulisan ini bukan dari parameter inputan"); System.out.print("iVar3 + iangka = "+ivar3+" + "+iangka+" = "); return (ivar3+iangka); /*Overidding method yang tidak mengembalikan nilai*/ void OverMethod(int iangka, String scomment){ System.out.println(sComment); System.out.println("iVar3 + iangka = "+ivar3+" + "+iangka+" = "+(ivar3 + iangka));
XRCIS WORKBOOK IF-212-GNAP-2013/2014 public class ContohMethod{ /** Creates a new instance of ContohMethod*/ public ContohMethod() { public static void main(string[] argv) { int iparam1, iparam2; String skalimat ="Tulisan ini dikirim dari parameter inputan "; Test obtestparam = new Test(50,100,500); iparam1 = 10; iparam2 = 20; System.out.println("Nilai sebelum pass by value"); System.out.println("iParam1 = "+iparam1); System.out.println("iParam2 = "+iparam2); /* pemanggilan method dengan pass by value*/ obtestparam.calculate(iparam1,iparam2); System.out.println("Nilai setelah pass by value"); System.out.println("iParam1 = "+iparam1); System.out.println("iParam2 = "+iparam2); /*-------------------------------------------------*/ System.out.println("Nilai sebelum pass by reference"); System.out.println("obTestParam.iVar1 = "+obtestparam.ivar1); System.out.println("obTestParam.iVar2 = "+obtestparam.ivar2); /* pemanggilan method dengan pass by reference*/ obtestparam.calculate(obtestparam);
XRCIS WORKBOOK IF-212-GNAP-2013/2014 System.out.println("Nilai setelah pass by reference"); System.out.println("obTestParam.iVar1 = "+obtestparam.ivar1); System.out.println("obTestParam.iVar2 = "+obtestparam.ivar2); /* pemanggilan method yang mengembalikan nilai */ System.out.println(obTestParam.OverMethod(500)); /* pemanggilan method yang tidak mengembalikan nilai */ obtestparam.overmethod(500,skalimat); Output: D:\>java ContohMethod Nilai sebelum pass by value iparam1 = 10 iparam2 = 20 Nilai setelah pass by value iparam1 = 10 iparam2 = 20 Nilai sebelum pass by reference obtestparam.ivar1 = 50 obtestparam.ivar2 = 100 Nilai setelah pass by reference obtestparam.ivar1 = 500 obtestparam.ivar2 = 50 Keyword this Java memasukkan suatu besaran referensi khusus yang disebut this, yang digunakan didalam method yang dirujuk untuk objek yang sedang berlaku. Nilai this merujuk pada objek dimana method yang sedang berjalan dipanggil.
XRCIS WORKBOOK IF-212-GNAP-2013/2014 Terdapat 2 cara dalam penggunan this yaitu secara ksplisit dan Implisit. Pemanggilan ksplisit biasanya digunakan untuk mengatasi penamaan yang sama. Sedangkan pada pemanggilan Implisit, karena tidak ada pertentangan maka tidak harus menulis kata kunci this secara eksplisit. Bilapun ditulis akan mempunyai efek yang sama. Namun sebenarnya kompilator akan menambahkan kata kunci this untuk pengacuan ke lokasi yang tepat di objek itu secara otomatis. Pada program ContohConstructor terlihat parameter di constructor yaitu ivar yang memiliki kesamaan nama dengan variabel instant ivar di class ContohConstructor, untuk mengatasinya maka digunakan this yang mengacu variabel instant milik objek. Potongan program ContohConstructor : public class ContohConstructor { /* ini merupakan penerapan dari Pemanggilan ksplisit */ public ContohConstructor(int ivar){ System.out.println("Ditampilkan ketika objek diciptakan"); this.ivar = ivar; /* ini merupakan penerapan dari Pemanggilan Implisit */ public ContohConstructor(int iparam,string sparam){ System.out.println(sParam); ivar = iparam; Keyword this juga dapat digunakan untuk memanggil suatu konstruktor dari konstruktor lainnya. Contoh: publicclass Buku { privatestring pengarang; privatestring judul; private Buku() { this("rumah Kita", "GoodBles"); // this ini digunakan untuk memanggil konstruktor yang menerima dua parameter
XRCIS WORKBOOK IF-212-GNAP-2013/2014 private Buku(String judul,string pengarang){ this.judul = judul; this.pengarang = pengarang; privatevoid cetakkelayar(){ System.out.println("Judul : " + judul + " Pengarang : " + pengarang); publicstaticvoid main(string[] args){ Buku a,b ; a = new Buku("JurassicPark", "Michael Chricton"); b = new Buku(); a.cetakkelayar(); b.cetakkelayar(); Keluaran: Judul : JurassicPark Pengarang : Michael Chricton Judul : Rumah Kita Pengarang : GoodBles Pada contoh program di atas, terlihat bahwa penggunaan modifier private pada constructor mengakibatkan constructor tersebut hanya dapat dikenali dalam satu class saja, sehingga pembuatan objek hanya dapat dilakukan dalam lokal class tersebut. 4 STUDI KASUS 1. Buatlah sebuah program dengan menggunakan bahasa Java untuk menghitung nilai dari selisih dua buah waktu dengan menggunakan prinsip kelas, objek, method dan atribut, contoh: Jam pertama: 2 jam 3 menit 25 detik Jam kedua : 2 jam 3 menit 27 detik Selisih : 0 jam 0 menit 2 detik 2. Buatlah diagram kelas berdasarkan kode perhitungan jam yang telah dibuat sebelumnya 3. Buatlah sebuah program untuk menentukan apakah suatu bilangan input user adalah bilangan prima genap atau bilangan prima ganjil dengan menggunakan prinsip kelas dan objek dan buatlah diagram kelas dari kode tersebut. 4. Buatlah sebuah program dengan menggunakan bahasa Java untuk mengkonversikan nilai suhu dari Celcius ke Reamur, Kelvin dan Fahrenheit dengan mengacu pada diagram kelas berikut:
XRCIS WORKBOOK IF-212-GNAP-2013/2014 -temperatur Suhu +Suhu(in temperatur : double) +getreamur() : double +getfahrenheit() : double +getkelvin() : double 5. Bank ABC menyediakan layanan kepada nasabahnya. Bank ABC mempunyai beberapa cabang, setiap cabang mempunyai ID cabang. Setiap nasabah akan disimpan informasinya seperti nama, no rekening, alamat, no telepon. Identifikasikan kelas dan atribut yang harus dibuat. 6. Buatlah sintaks Java untuk soal diatas, dimana tiap kelas diberikan method untuk menampilkan datanya, 7. Definisikan sebuat class Account yang didalamnya terdapat method hitungbunga(). Method ini digunakan untuk menghitung jumlah saldo. Tiap Account mempunyai noaccount. 8. Carilah kesalahan pada program dibawah. Kemudian lengkapilah program tersebut (area() merupakan method untuk mencari luas) public class SomethingIsWrong{ public static void main(string[] args){ Rectangle myrect; myrect.width = 40; myrect.height = 50; System.out.println("myRect's area is " + myrect.area()); 9. Diketahui sebuah class diagram sebagai berikut: Kelas penjual 1. Atribut nama menyimpan nama penjual 2. Atribut alamat menyimpan alamat penjual 3. Atribut barang menyimpan jenis barang yang dijual oleh penjual. Maksimal seorang penjual membeli 5 jenis barang 4. Atribut hargabeli menyimpan harga beli barang per satuannya 5. Atribut jumlahbarang menyimpan jumlah barang yang dibeli tiap jenisnya 6. Atribut hargajual menyimpan harga jual tiap barang per satuannya 7. Atribut jumlahterjual menyimpan jumlah barang yang berhasil dijual tiap jenisnya 8. Atribut keuntungan menyimpan total keuntungan penjual 9. Konstruktor penjual digunakan untuk mengeset nama dan alamat penjual 10. Method getkeuntungan digunakan untuk menghitung keuntungan seorang penjual dengan persamaan:
XRCIS WORKBOOK IF-212-GNAP-2013/2014 Keuntungan = (JumlahTerjual x HargaJual) (JumlahBarang x HargaBeli) Penjual nama : String alamat : String barang : String[5] hargabeli : Double[5] jumlahbarang : Integer[5] hargajual : Double[5] jumlahterjual : Integer[5] keuntungan : Double Penjual() String getnama() String getalamat() setbarang() sethargabeli() setjumlahbarang() sethargajual() setjumlahterjual() setkeuntungan() String getbarang() Double gethargabeli() Integer getjumlahbarang() Double gethargajual() Integer getjumlahterjual() Double getkeuntungan() Tugas : Buatlah code Java untuk diagram kelas di atas! Buatlah sebuah class driver dengan menggunakan Java yang menggunakan kelas di atas di mana driver akan memanggil array bertipe kelas penjual berisi 5 orang penjual. Class driver harus menampilkan nama dan alamat setiap penjual, beserta data barang dagangan masing-masing penjual (jumlahbarang, hargabeli, jumlahterjual, hargajual), dan juga keuntungan masing-masing penjual! (data diasumsikan sendiri)