Kumpulan Teknik Pemrograman Berorientasi Objek Dengan Java. Oleh : Richi Hariyanto, Amd

Ukuran: px
Mulai penontonan dengan halaman:

Download "Kumpulan Teknik Pemrograman Berorientasi Objek Dengan Java. Oleh : Richi Hariyanto, Amd"

Transkripsi

1 Kumpulan Teknik Pemrograman Berorientasi Objek Dengan Java Oleh : Richi Hariyanto, Amd

2

3 Daftar Isi Modul 1 : Pemrograman Berorientasi Objek Program Kubus Program Konversi Pangkat dua, Pangkat tiga Program Konversi Rupiah Program Lingkaran Program Bola Program Gaji Program Pajak Program Matematika (Rumus ABC) Program Temperatur Air Program Balok Program Titik dan Garis Program GCD Program Kwitansi Program Statistik Modul 2 : Pendalaman Berorientasi Objek Program Pajak II Program Perhitungan PI Program Pewarisan Program Segitiga Siku-siku Program Polimorfism Program Siswa Program Kode Morse dan ASCII Program Tumpukan String Program Pengukuran Panjang

4 Persoalan 1 : Diketahui sisi suatu kubus, hitunglah : Keliling Luas Volume dari kubus tersebut. Bahasan Awal : Program Kubus Kita harus membuat pernyataan ulang persoalan menjadi beraroma orientasi objek. Pernyataan dimulai "menghitung" sering beraoma algoritmik. Di orientasi objek, algoritma merupakan satu elemen terpendam/termuat di wadah objek (direpresentasikan di bagian kelas sebagai cetak biru objek). Pernyataan ulangnya adalah buatlah kelas Kubus yang mempunyai : tanggung jawab atau fitur-fitur atau layanan-layanan Kata tanggung jawab, fitur dan layanan yang diberikan sesuatu (objek) adalah aroma orientasi objek. Dalam level mikro, pandangan algoritmik dan pandangan orientasi objek telah berbeda. Kebiasaan yang dimulai dari level mikro akan terbawa dalam pemberian solusi orientasi objek skala makro beraroma orientasi objek, bukan program orientasi objek beraroma lainnya. Solusi untuk itu adalah kelas CubeToy yang memiliki layanan : menyediakan informasi sisi kubus menyediakan informasi keliling kubus menyediakan informasi luas kubus menyediakan informasi volume kubus Layanan-layanan yang disediakan menjadi pusat perhatian bukan "algoritma" yang terkait pandangan eksternal. Program : /* * CubeToy.java * * Created on 31 August, 2017, 07:48 AM */ package javaapp; /** * richi */ public class CubeToy { private double side = 0;

5 /** Creates a new instance of CubeToy */ public CubeToy(){ public CubeToy(double side) { this.side = side; public void setside(double side) { this.side = side; public double getside() { return this.side; public double getcircumference(){ return calccircumference(); public double getarea() { return calcarea(); public double getvolume() { return calcvolume(); public double calccircumference() { return (12 * this.side); public double calcarea() { return (6 * this.side * this.side); public double calcvolume() { return (side * side * side); static void test() { CubeToy c = new CubeToy(10); System.out.println(c); public static void main(string[] args) { test(); public String tostring() { String str =

6 "Kubus "+"\n"+ "Panjang sisi = "+side+"\n"+ "Keliling = "+calccircumference()+"\n"+ "Luas = "+calcarea()+"\n"+ "Volume = "+calcvolume()+"\n"; return str; Keluaran : run: Kubus Panjang sisi = 10.0 Keliling = Luas = Volume = BUILD SUCCESSFUL (total time: 1 second)ÿý Bahasan : Pada PBO pembuatan kelas merupakan wadah dari solusi. public class CubeToy { private double side = 0; Atribut side adalah parameter untuk mencatat sisi kubus, variabel ini memiliki access modifier private sehingga tidak dapat diakses metode di luar kelas itu. Dalam hal ini, kita menerapkan pengapsulan sehingga representasi internal kelas tidak tampak bagi pemakai kelas. Kita kemudian memberi antarmuka yang digunakan langsung oleh pemakai : Antarmuka pertama adalah contructor untuk inisialisasi yang mempersiapkan penggunaan objek selanjutnya :... public CubeToy(double side) { this.side = side;... Antarmuka mutator adalah metode untuk memberi nilai atribut di kelas. Metode ini biasa diawali kata set, memiliki format nama setxxx() dalam hal ini XXX adalah nama atribut. Mutator ini mengubah state kelas.... public void setside(double side) { this.side = side;...

7 Argumen masukan dapat diberi nama yang sama dengan nama atribut di kelas. Java menyelesaikan masalah konflik nama ini dengan keyword this untuk menunjuk ke objek saat ini this.side = side; this.side menunjuk ke field side objek saat itu sehingga kalimat di atas adalah field side dari objek saat itu diisi side yang berasal dari argumen di metode. Antarmuka berikutnya adalah getside() biasa disebut metode accessor/query :... public double getside() { return this.side;... Antarmuka accessor ini biasa diawali get, memiliki format getxxx() dimana XXX nama atribut di kelas atau nama yang memiliki arti bagi pemakai. Misalnya kita menyimpan sisi kubus, dapat saja memberikan antarmuka :... public double getside(); public double getcircumference(); public double getarea(); public double getvolume();... Metode pertama getside() adalah metode dengan representasi penyimpanan. Metode direalisasikan sekedar memberikan nilai atribut side sebagai berikut :... public double getside() { return this.side;... Pada metode kedua sampai keempat, pemakai tidak memperoleh secara langsung dari memori, program mengomputasinya dari nilai side yang disimpan. Metode pertama disebut fitur yang diperoleh melalui penyimpan (feature by storage) sementara metode kedua sampai keempat fitur yang diperoleh melalui komputasi (feature by computation). Pemakai tidak memperdulikan, yang terpenting perjanjian antarmuka memberikan apa? getside() memberikan sisi dari kubus getcircumference() memberikan keliling kubus getarea() memberikan luas kubus getvolume() memberikan volume kubus

8 Pemakai tidak memperdulikan apakah objek sekedar menampilkan nilai atribut atau harus melakukan komputasi terlebih dahulu. Yang terpenting bagi objek adalah kontrak layanan dipenuhi. Realisasi metode kedua sampai keempat sebagai berikut :... public double getcircumference() { return calccircumference(); public double getarea() { return calcarea(); public double getvolume() { return calcvolume();... Metode-metode private seperti berikut : private double calccircumference() { private double calcarea() { private double calcvolume() { biasa disebut metode bantuan (helper method). Metode-metode ini digunakan metode public untuk mengakomodasi fungsionalitasnya. Metode public sebaiknya terlihat sederhana, bila terasa kompleks maka pecah menjadi metode-metode private yang kemudian dipanggilnya. Kenapa di atas diperlukan helper methods? Bukankah juga masih sederhana untuk diimplementasikan sebagai berikut :... public double getcircumference() { return 12 * side; public double getarea() { return 6 * side * side; public double getvolume() { return side * side * side;... Diatas merupakan contoh untuk memperlihatkan helper methods saja. Untuk persoalan diatas, sebaiknya memang langsung tanpa helper method karena fungsi accessor masih sederhana. Kita sebaiknya menyederhanakan sesedikit mungkin jumlah metode di kelas namun harus mencukupi dan tidak menjadi metode panjang yang sangat kompleks. Sesedikit mungkin metode di kelas merupakan prinsip class minimality rule. Kelas tidak boleh

9 memiliki metode redudan sehingga satu cara dilakukan dengan beberapa cara. Meski demikian, metode yang ada di kelas tidak boleh kurang di mana kelas sampai tidak memiliki metode-metode yang memang diperlukan untuk mengemban tanggung jawab kelas. Kelas disebut kompak bila metode-metode di kelas adalah seminimal mungkin yang telah memadai mengemban tanggung jawab kelas public String tostring() { String str = "Kubus "+"\n"+ "Panjang sisi = "+side+"\n"+ "Keliling = "+calccircumference()+"\n"+ "Luas = "+calcarea()+"\n"+ "Volume = "+calcvolume()+"\n"; return str; Seluruh kelas di Java merupakan turunan kelas Object yang memiliki metode tostring() yang dapat bahkan seharusnya ditimpaulang (override didefinisikan ulang). Metode tostring() biasa digunakan untuk mengirim string yang menunjukkan state objek. Kita menimpa ulang penyediaan informasi/state yang dimiliki objek. Metode System.out.println() secara otomatis mengakses metode tostring() sehingga static void test() { CubeToy c = new CubeToy(10); System.out.println(c); Akan mencetak seluruh informasi yang dikirim metode tostring(). Metode tostring() biasa digunakan untuk keperluan melakukan pengujian dan debugging.

10 Program Konversi Pangkat dua, Pangkat tiga Persoalan 2 : Buat tabel kwadrat dan pangkat tiga bilangan 0 sampai 10 sebagai berikut : Angka Kwadrat Kubik Bahasan Awal : Pandangan orientasi objek adalah terdapat kelas yang memberikan/menyediakan layanan menampilkan tabel kwadrat dan kubik. Jadi kita lebih dahulu bertumpu pada struktur yang jelas (kelas misalnya PowerTabelToy) baru layanan-layanan yang disediakan, yang kemudian diterjemahkan dalam komputasi tertentu. Seperti kita sehari-hari, kesan fisik adalah yang umumnya diterima atau dipersepsi. Keberadaan Mobil, kesan fisik diterima berupa mendaftarkan layanan-layanan yang diberikan mobil : mengemukakan warna, merek, jenis dan sebagainya memberikan aksi bergerak, membuka pintu, dan sebagainya Yang dipersepsi manusia sebagian besar adalah rangsang fisik pancaindera kemudian layanan fisik dan mental yang diterimanya. Program : /* * PowerTableToy.java * * Created on August 31, 2017, 02:18 PM */ package javaapp; /** * richi * * */ public class PowerTableToy {

11 private int numberofrows; /** Creates a new instance of PowerTableToy */ public PowerTableToy() { public PowerTableToy(int numberofrows) { this.numberofrows = numberofrows; public void setnumber(int numberofrows) { this.numberofrows = numberofrows; public int getnumberofrows() { return numberofrows; public void printtable() { System.out.println("Number Square Cube"); for(int i=0; i<numberofrows;i++) { System.out.println(i+" "+(i*i)+" "+(i*i*i)); static void test() { PowerTableToy p = new PowerTableToy(11); p.printtable(); public static void main(string[] args) { test(); Bahasan : Kita membuat kelas PowerTableToy untuk solusi, kelas berisi atribut yang menyatakan maksimum bilangan atau maksimum baris di tabel dengan numberofrows. Penulis biasa membuat konvensi menyatakan jumlah sesuatu dengan numberofxxx sehingga jumlah baris adalah numberofrows. public class PowerTableToy { private int numberofrows; Kita membuat constructor untuk inisialisasi nilai : public PowerTableToy(int numberofrows) { this.numberofrows = numberofrows;

12 Sebaiknya pencetakan tabel tidak langsung dilakukan kelas atau metode main() sebagaimana yang biasa terdapat pada contoh-contoh di buku pengajaran bahasa Java yang lain. Kita memisahkan sebagai metode sendiri yang kemudian dipanggil main(). Cara ini menjadikan kelas semakin fleksibel. Kita sebaiknya melakukan decouple(pemisahan) yang tegas antara : main() bertindak sebagai perantara pengaksesan metode lain di kelas Metode-metode untuk komputasi/pemrosesan seperti printtable() Metode-metode untuk masukan Metode-metode untuk keluaran Metode-metode untuk pengujian yang berlaku sementara saat pengembangan Untuk memperlihatkan berfungsinya kelas, kita sebaiknya membuat satu metode pengujian atau lebih. Penulis mempunyai konvensi metode pengujian diawali testnn(), NN adalah nomor pengujian. Karena seluruh program di buku ini hanya percobaan belaka maka seluruhnya diakses di main() lewat metode pengujian seperti berikut : static void test() { PowerTableToy p = new PowerTableToy(11); p.printtable(); public static void main(string[] args) { test(); Kalau akan digunakan untuk operasi maka kita dapat menyatakan test() di main() sebagai komentar. Bila kita tidak puas dengan satu pengujian maka kita dapat membuat metode-metode pengujian selanjutnya sebagai test01(), test02(), dan seterusnya sampai memadai untuk menguji kelas. Kita akan memperlihatkan fleksibel ini di BMC lain, yaitu ketika digunakan untuk menguji kelas yang kita ciptakan. Program-program berikutnya akan menggunakan pendekatan ini karena memberikan fleksibilitas yang tinggi. Kita tinggal memberikan komentar pada pemanggilan test() di main() untuk operasi di lingkungan produktif. Konvensi penulis untuk metode yang melakukan kerja di lingkungan produktif misalnya production(). Seharusnya di main() terdapat dua option yaitu test() atau production() untuk membedakan antara sedang melakukan pengujian atau untuk produksi.

13 Program Konversi Rupiah Persoalan 3 : Diketahui besaran dalam rupiah kemudian hitung berapa lembar 100 ribu, 50 ribu, 20 ribu, 10 ribu, 5 ribu, 1 ribu, 500 rupiah, kemudian koin 100 rupiah, 50 rupiah, 25 rupiah, 10 rupiah, 5 rupiah dan 1 rupiah. Bahasan awal : Kita perlu membuat pernyataan ulang persoalan. Kita telah dipenuhi dengan aroma algoritmik sehingga persoalan sering diberikan dalam aroma algoritmik. Pemrograman orientasi objek memandang objeklah unit terkecil terpenting yang seharusnya menjadi abstraksi persoalan. Persoalan menjadi buat kelas dengan layanan memberi informasi jumlah lembar atau koin 100 ribu, 50 ribu, 20 ribu, 10 ribu, 5 ribu, 1 ribu, 500 rupiah, kemudian koin 100 rupiah, 50 rupiah, 25 rupiah, 10 rupiah, 5 rupiah dan 1 rupiah. Program : /* * RupiahDistributionToy.java * * Creates on August 31, 2017, 02:52 PM * */ package javaapp; /** * richi */ public class RupiahDistributionToy { private long amount = 0; private long rp100ribu = 0; private long rp50ribu = 0; private long rp20ribu = 0; private long rp10ribu = 0; private long rp5ribu = 0; private long rp1ribu = 0; private long rp500 = 0; private long rp100 = 0; private long rp50 = 0; private long rp25 = 0; private long rp10 = 0; private long rp5 = 0; private long rp1 = 0; /** Creates a new instance of RupiahDistributionToy */ public RupiahDistributionToy() {

14 public RupiahDistributionToy(long amount) { this.amount = amount; distributeamount(); private void distributeamount(){ long t = amount; rp100ribu = t/100000; t -= (rp100ribu * ); rp50ribu = t/50000; t -= (rp50ribu * 50000); rp20ribu = t/20000; t -= (rp20ribu * 20000); rp10ribu = t/10000; t -= (rp10ribu * 10000); rp5ribu = t/5000; t -= (rp5ribu * 5000); rp1ribu = t/1000; t -= (rp1ribu * 1000); rp500 = t/500; t -= (rp500 * 500); rp100 = t/100; t -= (rp100 * 100); rp50 = t/50; t -= (rp50 * 50); rp25 = t/25; t -= (rp25 * 25); rp10 = t/10; t -= (rp10 * 10); rp5 = t/5; t -= (rp5 * 5); rp1 = t/1; public long getamount() { return amount; public long getrp100ribu() {

15 return rp100ribu; public long getrp50ribu() { return rp50ribu; public long getrp10ribu() { return rp10ribu; public long getrp5ribu() { return rp5ribu; public long getrp1ribu() { return rp1ribu; public long getrp500() { return rp500; public long getrp100() { return rp100; public long getrp50() { return rp50; public long getrp25() { return rp25; public long getrp10() { return rp10; public long getrp5() { return rp5; public long getrp1() { return rp1; public String tostring() { String str = "Besar rupiah = "+amount+"\n"+ "Rp = "+rp100ribu+" lembar \n"+ "Rp = "+rp50ribu+" lembar \n"+

16 "Rp = "+rp10ribu+" lembar \n"+ "Rp = "+rp5ribu+" lembar \n"+ "Rp = "+rp1ribu+" lembar \n"+ "Rp. 500 = "+rp500+" lembar \n"+ "Rp. 100 = "+rp100+" buah \n"+ "Rp. 50 = "+rp50+" buah \n"+ "Rp. 25 = "+rp25+" buah \n"+ "Rp. 10 = "+rp10+" buah \n"+ "Rp. 5 = "+rp5+" buah \n"+ "Rp. 1 = "+rp1+" buah \n"; return str; static void test() { RupiahDistributionToy t = new RupiahDistributionToy( ); System.out.println(t); public static void main(string[] args) { test(); Bahasan : Kita membuat RupiahDistributionToy. State yang perlu dicatat adalah jumlah rupiah menggunakan amount. Setelah itu atribut-atribut untuk mencatat jumlah lembar dan koin. Sehingga kelas sebagai berikut : public class RupiahDistributionToy { private long amount = 0; private long rp100ribu = 0; private long rp50ribu = 0; private long rp20ribu = 0; private long rp10ribu = 0; private long rp5ribu = 0; private long rp1ribu = 0; private long rp500 = 0; private long rp100 = 0; private long rp50 = 0; private long rp25 = 0; private long rp10 = 0; private long rp5 = 0; private long rp1 = 0;... Kemudian metode untuk mengakses jumlah yang dimasukkan dan masing-masing lembar/koin uang. public long getamount() { return amount;

17 public long getrp100ribu() public long getrp50ribu() public long getrp10ribu() public long getrp5ribu() public long getrp1ribu() public long getrp500() public long getrp100() public long getrp50() public long getrp25() public long getrp10() public long getrp5() public long getrp1() Metode Perhitungan adalah distributeamount() Perhitungan dimulai dari satuan tertinggi rp100ribu, menggunakan operator div (/) dan mod (%). Setelah itu amount dikurangi jumlah yang telah disebarkan di rp100ribu, angka ini kemudian disebarkan ke rp50ribu, dan seterusnya. Redefinisi terhadap Metode tostring() Dibandingkan kita melakukan System.println.out() secara terpisah, kita buat saja tostring() untuk memperlihatkan informasi state objek. Apabila dikehendaki maka kapanpun kita dapat menggunakan tostring() untuk memperlihatkan kondisi objek secara menyeluruh.

18 Persoalan 4 : Diketahui jari-jari (radius), kemudian hitung/cetak Diameter lingkaran Keliling lingkaran Luas lingkaran Program Lingkaran Bahasan awal : Terdapat dua hal yang patut diwaspadai dari deskripsi persoalan diatas. Deskripsi itu dapat membuat tersesat : 1. Deskripsi persoalan beraroma algoritmik. 2. Deskripsi persoalan merancukan layanan komputasi dan layanan keluaran. Aroma algoritmik harus diubah menjadi beraroma orientasi objek : Buat kelas Lingkaran(CircleToy) yang menyediakan layanan menyediakan informasi jari-jari, diameter, keliling, luas, volume lingkaran. Bahkan kita dapat menambahkan layanan-layanan misalnya memberi aksi mengembang dan mengerut lingkaran. Kerancuan Komputasi dan Keluaran Seharusnya suatu layanan bersifat se-independen mungkin. Bila layanan dapat diusahakan tidak terikat sesuatu maka jangan diikatkan layanan itu ke sesuatu terlalu dini : Di kelas CircleToy Bukannya berisi layanan printcircuference() berikut : private void printcircumference() { System.out.println(Math.PI * 2 * radius); Tapi seharusnya private double getcircumference() { return (Math.PI * 2 * radius); Layanan gaya kedua tidak mengikatkan pada sesuatu (yaitu perangkat keluaran monitor) sedini mungkin dibanding metode gaya pertama. Format keluaran yang dikehendaki serta di media mana diserahkan kelas (metode) yang menggunakan layanan getcircumference(). Kelas CircleToy hanya memberi layanan berkaitan dengan lingkaran, tidak terikat pada media dan format keluaran. Format dan media keluaran merupakan ikatan yang terlalu dini untuk CircleToy. Program : /* * CircleToy.java

19 * * Created on September 2, 07:27 AM */ package javaapp; /** * richi * */ public class CircleToy { private double radius; /** Creates a new instance of CircleToy */ public CircleToy() { radius = 0.0; public CircleToy(double radius) { this.radius = radius; public void setradius(double radius) { this.radius = radius; public double getradius() { return radius; public double getdiameter() { return calcdiameter(); public double getcircumference() { return calccircumference(); public double getarea() { return calcarea(); private double calcdiameter() { return 2 * radius; private double calccircumference() { return (Math.PI * 2 * radius); private double calcarea() { return (Math.PI * radius * radius);

20 public String tostring() { String str = "Lingkaran "+"\n"+ "Radius = "+radius+"\n"+ "Diameter = "+calcdiameter()+"\n"+ "Keliling = "+calccircumference()+"\n"+ "Luas = "+calcarea(); return str; static void test() { CircleToy c = new CircleToy(10); System.out.println(c); public static void main(string[] args) { test(); Keluaran : run: Lingkaran Radius = 10.0 Diameter = 20.0 Keliling = Luas = BUILD SUCCESSFUL (total time: 0 seconds) Bahasan : Program diatas memperlihatkan penyelesaian orientasi objek khususnya menggunakan bahasa Java. Kita memisahkan tugas-tugas berikut dengan tegas secara rekursif : 1. Tugas masukan/keluaran Tugas masukan Tugas keluaran 2. Tugas komputasi Pada satu sistem besar, kita harus secara tegas memisahkan komponen-komponen untuk masukan/keluaran dan komputasi di sistem besar itu. Kemudian, pada masing-masing subsistem juga secara tegas dipisahkan antara masukan/keluaran dan komputasi. Demikian secara terusmenerus sampai pada kelas unit terkecil. Pada masing-masing kelas harus secara tegas dipisahkan metode-metode masukan/keluaran dan komputasi. Kelas CircleToy.java adalah kelas komputasi sehingga menyerahkan tugas berkaitan dengan

21 masukan/keluaran ke kelas lebih atas yang mempergunakannya. Tugas-tugas seperti memperoleh masukan menggunakan perangkat apa (keyboard, file atau saluran masukan apa ditentukan kelas lain), serta tugas-tugas keluaran seperti format dan perangkat keluaran dilakukan kelas lain. 1. Tugas masukan/keluaran Tinjauan pada level mikro kelas maka masing-masing kelas pun memiliki tugas masukan dan keluaran sehingga : Tugas masukan dilayani metode yang namanya diawali set sehingga berbentuk setxxx() atau lewat constructor. Pada program CircleToy.java di atas tidak ada metode yang diperuntukkan tugas masukan berbentuk setxxx(). Tugas masukan dapat secara default dilakukan constructor, constructor akan diciptakan secara otomatis diciptakan adalah constructor tanpa argumen. Pada program di atas terdapat dua contructor, /** Creates a new instance of CircleToy */ public CircleToy() { radius = 0.0; public CircleToy(double radius) { this.radius = radius; Di Java, constructor selalu bernama sama dengan nama kelas tanpa mendeklarasikan tipe keluaran yang dikirim/dihasilkan karena dapat dipastikan constructor mengirim objek bertipe kelas itu. Kita tidak selalu dipaksa membuat metode setxxx() sebagai mutator bagi objek. Mutator adalah metode yang mengubah nilai atribut (state) objek. Bila memang constructor telah mencukupi maka kita cukup menggunakan constructor sebagai sarana masukan. Kita seharusnya senantiasa menerapkan aturan minimalis dalam pembuatan kelas. Aturan minimalis menyatakan membuat seminimal mungkin kumpulan metode yang telah memadai. Tugas keluaran seharusnya secara konvensi dilaksanakan metode dengan nama berawalan get, berbentuk getxxx() seperti : public double getradius() public double getdiameter() public double getcircumference() public double getarea() Kita sebaiknya mengikuti saran Bertrand Meyer untuk secara tegas memisahkan metodemetode menjadi dua kelompok, yaitu : 1. Metode query 2. Metode command Metode yang mengirim nilai adalah metode query. Metode query tidak boleh mendua memberi efek samping (side effect) mengubah state objek. Metode getxxx() tidak boleh melakukan perubahan state objek, metode query hanya mengirim nilai atribut tertentu atau hasil perhitungan/komputasi berdasar atribut-atribut tertentu di objek tanpa

22 mengubah atribut-atribut di objek, tanpa mengubah state objek. Sementara itu, metode command adalah metode yang melakukan perubahan state tanpa mengirim nilai. Prinsip pemisahan secara tegas command dan query tidak seratus persen diikuti di pustaka Java. Contoh pelanggaran di pustaka Java terhadap prinsip pemisahan secara tegas metode query dan command dapat dijumpai pada interface Iterator dimana metode next() maju ke elemen berikutnya sambil mengirim elemen saat itu. Apabila kita mengikuti secara konsisten prinsip ini, prinsip ini akan menyamankan kita saat membaca program. Penerapan prinsip ini akan mengakibatkan seluruh metode void f() dapat dipastikan adalah metode command yang mengubah state objek, sementara metode berbentuk Type f() yang mengirim hasil bertipe Type adalah metode query yang dipastikan tidak mengubah state objek. Kebiasaan membuat metode bernama setxxx() untuk mutator (mengubah state objek) dan getxxx() untuk pengaksesan/query akan bermanfaat pada saat pembangunan program berbasis komponen Javabeans. 2. Tugas komputasi Tugas komputasi sebaiknya berupa metode private yang tidak terjangkau pemakai secara langsung. Pemakai sebaiknya cukup dihadapkan dengan beragam metode getxxx() di mana didalamnya kita memanggil metode private yang sebenarnya melakukan komputasi level bawah. 3. Metode tostring Metode tostring() untuk pengujian. Metode bertugas untuk menyatakan keseluruhan state objek secara jelas. Pada program yang hanya satu kelas, kita patut melakukan pengujian kelas itu. Seperti dinyatakan di BMC sebelumnya sebaiknya kita melakukan otomatisasi pengujian. Pada program di atas : public String tostring() { String str = "Lingkaran "+"\n"+ "Radius = "+radius+"\n"+ "Diameter = "+calcdiameter()+"\n"+ "Keliling = "+calccircumference()+"\n"+ "Luas = "+calcarea(); return str; Metode tostring() mengirim string yang menyatakan seluruh state objek secara jelas sehingga bila dipanggil akan menginformasikan seluruh state objek yang diperlukan untuk pengujian atau debugging. Metode tostring() juga jangan dikacaukan dengan segala macam tetek-bengek aspek rinci keluaran baik format maupun media. Sebaiknya tostring() hanya mengirim string informasi state objek secara lengkap dan jelas. Format dan media tampilan lebih lanjut dipasrahkan pada metode pemakai metode itu. String hendaknya dikeluarkan ke media mana merupakan tanggung jawab metode/kelas pemanggil. Seharusnya tidak ada perintah khas perangkat I/O di tostring() seperti System.out.println(). Sebagai tambahan, dibuat metode test() untuk menguji kelas. Seperti dapat Anda amati, metode-metode pokok di kelas tidak ada yang secara langsung berhubungan dengan rincianrincian masukan/keluaran. Baru metode test() mungkin harus berurusan dengan interaksi, namun kalau sekedar untuk menguji kebenaran metode-metode di kelas sebaiknya

23 dikodekan secara program (hard coded). Bila meminta masukan yang berukuran besar maka sebaiknya dilakukan dengan masukan berasal dari file sehingga pengujian dapat sepenuhnya diulang otomatis.

24 Program Bola Persoalan 5 : Terhadap bola, maka diketahui jari-jari (radius), kemudian cetak/hitunglah : Diameter lingkaran Keliling lingkaran Luas lingkaran Volume bola Bahasan Awal : Jangan terjebak deskripsi persoalan aroma algoritmik dan kerancuan pengikatan terhadap format dan media. Pernyataan persoalan yang beraroma orientasi objek adalah : Buat kelas Bola (BallNextToy) yang menyediakan layanan : atau memberikan informasi jari-jari-nya (bola) memberikan informasi diameternya (bola) memberikan informasi luas selimutnya (bola) memberikan informasi volumenya (bola) Kelas bola yang mempunyai tanggung jawab : atau mengetahui jari-jari, diameter, luas selimut dan volume (nya) dapat melakukan aksi... Kelas bola yang memiliki fitur-fitur : jari-jari, diameter, luas selimut dan volume aksi Kosa kata yang digunakan dalam aroma orientasi objek adalah : layanan tanggung jawab fitur Terserah anda memilihnya? Penulis jarang menggunakan fitur karena masih terasa asing, lebih mudah tanggung jawab dan layanan. Sementara kosakata "hitung" adalah aroma algoritmik terpendam di layanan. Tanggung jawab dan layanan di suatu kelas, hanya dua macam yaitu : Mengetahui dan menyediakan informasi Memberikan aksi

25 Program : /* * BallNextToy.java * * Created on September 02, 2017, 09:29 AM */ package javaapp; /** * richi * */ public class BallNextToy { private double radius; /** Creates a new instance of BallToy */ public BallNextToy() { public BallNextToy(double radius) { this.radius = radius; public void setradius(double radius) { this.radius = radius; public double getradius() { return radius; public double getdiameter() { return calcdiameter(); public double getvolume() { return calcvolume(); public double getarea() { return calcarea(); private double calcdiameter() { return 2 * radius; private double calcvolume() { return (4/3 * Math.PI * radius * radius * radius);

26 private double calcarea() { return 4 * Math.PI * radius * radius; public String tostring() { String str = "Bola "+"\n"+ "Radius = "+radius+"\n"+ "Diameter = "+calcdiameter()+"\n"+ "Luas = "+calcarea()+"\n"+ "Volume ; return str; = "+calcvolume()+"\n" static void test() { BallNextToy b = new BallNextToy(10); System.out.println(b); public static void main(string[] args) { test(); Keluaran : run: Bola Radius = 10.0 Diameter = 20.0 Luas = Volume = BUILD SUCCESSFUL (total time: 0 seconds) Bahasan : Program serupa program sebelumnya : Penerapan prinsip pemisahan secara tegas metode-metode untuk masukan/keluaran dan komputasi. Metode masukan/keluaran tidak bergantung perangkat tertentu. Kelas benar-benar memiliki cara masukan/keluaran generik. Kelas atau metode pemakai yang menentukan cara berhubungan dengan dunia eksternal. Penerapan prinsip pemisahan secara tegas metode command and query. Metode test() untuk pengujian kelas. Anda dapat menambahkan kode pengujian sehingga memperoleh pengujian yang memenuhi kriteria-kriteria pengujian kelas yang baik.

27 Program Gaji Persoalan 6 : Pegawai yang menerima gaji diwajibkan membayar pajak penghasilan. Dengan demikian terdapat : Gaji kotor (gross) Pajak penghasilan sebesar taxrate * gross Gaji bersih adalah gaji kotor Bahasan Awal : Pernyataan ulang terhadap deskripsi persoalan : Buat kelas (TaxForSalaryToy) yang menyediakan layanan penghitungan gaji dan pajak penghasilan serta gaji bersih yang diterima pegawai. Program : /* * TaxForSalaryToy.java * * Created on September 02, 2017, 11:17 AM */ package javaapp; /** * richi */ public class TaxForSalaryToy { private double gross = 0.0; private double taxrate = 0.0; private double net = 0.0; private double tax = 0.0; /** Creates a new instance of TaxForSalaryToy */ public TaxForSalaryToy(double gross, double taxrate) { this.gross = gross; this.taxrate = taxrate; calc(); private void calc() { tax = taxrate * gross; net = gross - tax; public double gettaxrate() { return taxrate;

28 public double gettax() { return tax; public double getgross() { return gross; public double getnet() { return net; public String tostring() { String str = "Penghasilan kotor = "+gross+"\n"+ "Rate pajak = "+taxrate+"\n"+ "Pajak penghasilan = "+tax+"\n"+ "Penghasilan bersil = "+net; return str; static void test() { TaxForSalaryToy t = new TaxForSalaryToy(1000,.1); System.out.println(t); public static void main(string[] args) { test(); Keluaran : run: Penghasilan kotor = Rate pajak = 0.1 Pajak penghasilan = Penghasilan bersil = BUILD SUCCESSFUL (total time: 0 seconds) Bahasan : Serupa program sebelumnya, kita mengamati terdapat atribut-atribut yang diperuntukkan menyimpan state objek sebagai berikut : private double gross = 0.0; Atribut untuk menyimpan nilai gaji kotor. private double taxrate = 0.0;

29 Atribut untuk menyimpan nilai rate (persentase) pajak penghasilan. private double net = 0.0; Atribut untuk menyimpan gaji bersih. private double tax = 0.0; Atribut untuk menyimpan nilai dari besarnya pajak penghasilan. Pada saat inisialisasi di constructor, kita dapat langsung mengisi nilai-nilai state yang dipengaruhi masukan argumen nilai gaji dan rate pajak penghasilan. public TaxForSalaryToy(double gross, double taxrate) { this.gross = gross; this.taxrate = taxrate; calc(); Kita mengeksekusi metode calc() di constructor. Bila tidak dimasukkan, kita secara konsisten ketat memisahkan metode masukan (khususnya inisialisasi dan komputasi). Namun, bila dipikirkan calc() termasuk metode jenis command yang mampu mengubah state, yang tidak akan diakses metode lain lagi. Untuk itu tidak mengapa kita sekaligus memasukkan calc() di constructor. Penerapan prinsip pemisahan query dan command lebih ditekankan dibanding penerapan prinsip pemisahan masukan/keluaran dan komputasi. Beberapa kriteria perancangan bagus memang kadang bertentangan seperti antara prinsip konsistensi pemisahan dengan prinsip menjaga agar jumlah metode di kelas adalah minimal. Setelah eksekusi calc() maka nilai-nilai untuk layanan query telah tersimpan sehingga layanan getxxx() hanya sekedar mengirim nilai atribut objek.

30 Program Pajak Persoalan 7 : Persoalan penghitungan pajak pertambahan nilai serupa persoalan TaxForSalaryToy.java, hanya sebaliknya bukan mengurangi namun menambah. Pada pembelian barang atau jasa tertentu, kita dapat dikenai pajak pertambahan nilai (PPN atau VAT Value Added Tax) biasanya sebesar 10%. Dengan demikian terdapat : Harga barang Rate pajak pertambahan nilai dari persen Pajak pertambahan nilai sebesar VATRate * gross Bahasan Awal : Pernyataan ulang terhadap deskripsi persoalan : Buat kelas (TaxServiceToy) yang menyediakan layanan penghitungan harga barang dan pajak pertambahan nilai serta kewajiban bayar konsumen! Program : þÿ/* * TaxServiceToy.java * * Created on September 02, 2017, 11:38 AM */ package javaapp; /** * richi */ public class TaxServiceToy { private double amount = 0.0; private double VATRate = 0.0; private double finalamount = 0.0; private double vat = 0.0; /** Creates a new instance of TaxServiceToy */ public TaxServiceToy(double amount, double VATRate) { this.amount = amount; this.vatrate = VATRate; calc(); private void calc() { vat = VATRate * amount; finalamount = amount + vat;

31 public double getvatrate() { return VATRate; public double getamount() { return amount; public double getvat() { return vat; public double getfinalamount() { return finalamount; public String tostring() { String str = "Jumlah = "+amount+"\n"+ "Rate PPN = "+VATRate+"\n"+ "PPN = "+vat+"\n"+ "Total bayar = "+finalamount; return str; static void test() { TaxServiceToy t = new TaxServiceToy(1000,.10); System.out.println(t); public static void main(string[] args) { test(); Keluaran : run: Jumlah = Rate PPN = 0.1 PPN = Total bayar = BUILD SUCCESSFUL (total time: 0 seconds) Bahasan : Sama dengan atas

32 Program Matematika (Rumus ABC) Persoalan 8 : Dibaca tiga buah harga A, B, dan C, yang mewakili koefisien persamaan kuadrat: AX 2 + BX + C Buat program menghitung akar-akar persamaan kuadrat (hanya akar-akar riil). Bahasan Awal : Pernyataan ulang terhadap deskripsi persoalan : Buat kelas (SquareEquationToy) yang menyediakan layanan penyelesaian persamaan kwadrat menggunakan rumus ABC. Program : þÿ/* * SquareEquationToy.java * * Created on September 02, 2017, 01:30 PM */ package javaapp; /** * richi */ public class SquareEquationToy { private double a; private double b; private double c; private double x1; private double x2; private boolean fvalid = false; public SquareEquationToy(double a, double b, double c) { this.a = a; this.b = b; this.c = c; calcx(); private double calcdiscriminant() { return b*b-4*a*c;

33 private void calcx() { double d = calcdiscriminant(); if (d > 0) { x1 = (-b + Math.sqrt(d)) / (2*a); x2 = (-b - Math.sqrt(d)) / (2*a); fvalid = true; public boolean isvalid() { return fvalid; public double geta() { return a; public double getb() { return b; public double getc() { return c; public double getx1() { return x1; public double getx2() { return x2; static void test() { SquareEquationToy s = new SquareEquationToy(1.0, 6.0, 2.0); if (s.isvalid()) { System.out.println("Persamaan "+s.geta() +" X^2"+s.getB()+" X "+s.getc()+ " mempunyai akar "+s.getx1()+" dan "+s.getx2()); else { System.out.println("Persamaan "+s.geta()+" X^2"+s.getB()+" X "+s.getc()+ " tidak mempunyai akar-akar riil"); public static void main (String[] args) { test(); Keluaran : run:

34 Persamaan 1.0 X^26.0 X 2.0 mempunyai akar dan BUILD SUCCESSFUL (total time: 0 seconds) Bahasan : Atribut-atribut berikut : private double a; private double b; private double c; Mencatat koefisien-koefisien persamaan kwadrat. private double x1; private double x2 Mencatat hasil akar-akar persamaan kwadrat. private boolean fvalid = false; Mencatat apakah persamaan mempunyai akar-akar bilangan riil. Atribut fvalid langsung diinisialisasi sebagai false yang menyatakan saat ini objek dalam state tidak sah. Constructor berikut : public SquareEquationToy(double a, double b, double c) { this.a = a; this.b = b; this.c = c; calcx(); Langsung menghitung akar-akar persamaan kwadrat. Metode calc() adalah metode private untuk mencari akar-akar persamaan kwadrat menggunakan rumus ABC. Setelah dipanggil di constructor maka nilai-nilai akar berada di atribut x1 dan x2. Namun, pemakai dapat mengambil atribut tidak langsung, melainkan melalui metode getx1() dan getx2(); Sebagai persyaratan keabsahan getx1() dan getx2() adalah objek di state sah (valid). Metode isvalid() untuk memeriksa apakah objek di state sah sehingga getx1() dan getx2() menyatakan nilai akar-akar sebenarnya. Persyaratan yang menyatakan kondisi dimana suatu metode sah untuk dieksekusi adalah penerapan design-by-contract. Dengan design-by-contract akan terlihat jelas manfaat-manfaat yang akan diperoleh dan kewajiban-kewajiban yang harus dipenuhi. Metode getx1() dan getx2() mensyaratkan objek berkondisi sah yang menjamin nilai x1 dan x2 sah. Untuk keperluan itu, sebelum kita memanggil getx1() dan getx2(), kita harus memeriksa keabsahan state objek berikut : if (s.isvalid()) { System.out.println("Persamaan "+s.geta() +" X^2"+s.getB()+" X "+s.getc()+ " mempunyai akar "+s.getx1()+" dan "+s.getx2()); else { System.out.println("Persamaan "+s.geta()+" X^2"+s.getB()+" X "+s.getc()+

35 " tidak mempunyai akar-akar riil");

36 Program Temperatur Air Persoalan 9 : Bentuk air bergantung terhadap suhu (t-temperature) sebagai berikut : t<0 t=0 0<t<100 t=100 t>100 Berbentuk es atau beku Berbentuk transisi es dan cair Berbentuk cair Berbentuk transisi cair dan gas Berbentuk gas atau uap Bahasan awal : Pernyataan ulang terhadap deskripsi persoalan : Buat kelas (WaterToy) yang menyediakan layanan penentuan wujud air. Program : /* * WaterToy.java * * Created on September 02, 2017, 02:45 PM */ package javaapp; /** * richi */ public class WaterToy { private double temperature; /** Creates a new instance of WaterToy */ public WaterToy(double temperature) { this.temperature = temperature; public String getform() { if(temperature < 0) return "Es - beku"; if(temperature == 0) return "Transisi Es dan Air"; if(temperature > 0 && temperature < 100) return "Air - cair"; if(temperature == 100) return "Transisi cair dan Uap"; if(temperature > 100) return "Uap - gas"; return ""; public String getworseform() { // Bila tanpa fasilitas return seperti pada Pascal String str = ""; if (temperature < 0) str = "Es - Beku";

37 else if (temperature == 0) str = "Transisi Es dan Air"; else if (temperature > 0 && temperature < 100) str = "Air - Cair"; else if (temperature == 100) str = "Transisi Cair dan Uap"; else if (temperature > 100) str = "Uap - Gas"; return str; public String getworstform() { // Bila tanpa fasilitas return dan else if seperti pada Pascal String str=""; if(temperature < 0) { str = "Es - Beku"; else { if (temperature == 0) { str = "Transisi Es dan Air"; else { if (temperature > 0 && temperature < 100) { str = "Air - Cair"; else { if (temperature == 100) { str = "Transisi Cair dan Uap"; else { if (temperature > 100) { str = "Uap - Gas"; return str; public String tostring() { String str = "Air bersuhu : "+temperature+"\n"+ "Berbentuk : "+getform(); return str; public String toworsestring() { String str = "Air bersuhu : "+temperature+"\n"+ "Berbentuk : "+getworseform(); return str; public String toworststring() { String str = "Air bersuhu : "+temperature+"\n"+ "Berbentuk : "+getworstform(); return str;

38 static void test01() { System.out.println(new WaterToy(-10)); System.out.println(new WaterToy(0)); System.out.println(new WaterToy(10)); System.out.println(new WaterToy(100)); System.out.println(new WaterToy(110)); static void test02() { WaterToy t = new WaterToy(-10); System.out.println(t.toWorseString()); static void test03() { WaterToy t = new WaterToy(-10); System.out.println(t.toWorstString()); static void test() { test01(); test02(); test03(); public static void main(string[] args) { test(); Keluaran : run: Air bersuhu : Berbentuk : Es - beku Air bersuhu : 0.0 Berbentuk : Transisi Es dan Air Air bersuhu : 10.0 Berbentuk : Air - cair Air bersuhu : Berbentuk : Transisi cair dan Uap Air bersuhu : Berbentuk : Uap - gas Air bersuhu : Berbentuk : Es - Beku Air bersuhu : Berbentuk : Es - Beku BUILD SUCCESSFUL (total time: 1 second) Bahasan : Atribut-atribut :

39 private double temperature; Untuk mencatat temperature (suhu) dari air. Cara terbaik : public String getform() { if(temperature < 0) return "Es - beku"; if(temperature == 0) return "Transisi Es dan Air"; if(temperature > 0 && temperature < 100) return "Air - cair"; if(temperature == 100) return "Transisi cair dan Uap"; if(temperature > 100) return "Uap - gas"; return ""; Cara terbaik memrogram adalah menggunakan fasilitas-fasilitas ampuh bahasa secara tepat dan seoptimal mungkin. Bahasa Java menyediakan beragam kendali tidak lokal meniru C/C++ seperti : 1. break 2. return 3. continue Fasilitas return merupakan fasilitas yang sangat ampuh. Prinsip yang diterapkan dalam penggunaan return adalah : Bila pemroses telah dapat diselesaikan sedini mungkin kenapa kita mesti/harus berlama berada di dalam subrutin? Kode berikut : if(temperature < 0) return "Es - beku"; Berarti begitu, persoalan telah dapat diselesaikan maka segara saja diselesaikan, mengirim hasil dan keluar dari subrutin. Bandingkan dengan bentuk metode berikut : public String getworseform() { // Bila tanpa fasilitas return seperti pada Pascal String str = ""; if (temperature < 0) str = "Es - Beku"; else if (temperature == 0) str = "Transisi Es dan Air"; else if (temperature > 0 && temperature < 100) str = "Air - Cair"; else if (temperature == 100) str = "Transisi Cair dan Uap"; else if (temperature > 100) str = "Uap - Gas"; return str; Fungsi diatas harus tetap dilanjutkan sampai kebawah demi menjaga pemenuhan kriteria single Entry, Single Exit seperti biasa terdapat di Pascal. Apalagi kalau bahasa tidak menyediakan fasilitas else-if berantai seperti Pascal maka program menjadi sebagai berikut : public String getworstform() {

40 // Bila tanpa fasilitas return dan else if seperti pada Pascal String str=""; if(temperature < 0) { str = "Es - Beku"; else { if (temperature == 0) { str = "Transisi Es dan Air"; else { if (temperature > 0 && temperature < 100) { str = "Air - Cair"; else { if (temperature == 100) { str = "Transisi Cair dan Uap"; else { if (temperature > 100) { str = "Uap - Gas"; return str; Pandangan diatas merupakan teknik pemrograman yang memaksakan prinsip Single Entry Single Exit. Terdapat beragam tentangan : 1. Kenyataan bahasa pemrograman yang berkembang selalu meniru bentukan-bentukan kendali bahasa C/C++ bukan Pascal. Pemakaian break, return dan continue lebih berarti pada saat algoritma melibatkan banyak loop bersarang. Tanpa hal itu maka lebih banyak waktu untuk menangani kendali loop dibanding untuk menyelesaikan masalah sesungguhnya yang dihadapi.

41 Program Balok Persoalan 10 : Diketahui sisi panjang, lebar, dan tinggi suatu balok, hitunglah : Luas sisi-sisinya Volume balok Bahasan Awal : Pernyataan ulang terhadap deskripsi persoalan : Buat kelas (BoxToy) yang menyediakan layanan geometri kubus/kotak. Program : /* * BoxToy.java * * Created on September 03, 2017, 07:21 AM */ package javaapp; /** * richi */ public class BoxToy { private double width = 0; private double length = 0; private double height = 0; /** Creates a new instance of BoxToy */ public BoxToy(double length, double width, double height) { this.width = width; this.length = length; this.height = height; public void setwidth(double width) { this.width = width; public void setlength(double length) { this.length = length; public void setheight(double height) { this.height = height;

42 public double getwidth() { return width; public double getlength() { return length; public double getheight() { return height; public double getarea() { return calcarea(); public String tostring() { String str = "Balok "+"\n"+ "Panjang = "+length+"\n"+ "Lebar = "+width+"\n"+ "Tinggi = "+height+"\n"+ "Luas = "+calcarea()+"\n"+ "Volume = "+calcvolume()+"\n"; return str; static void test() { System.out.println(new BoxToy(10, 20, 50)); public static void main(string args[]) { test(); private double calcarea() { return 2 * ((width * length) + (width * height) + (length * height)); public double calcvolume() { return width * length * height; Keluaran : run: Balok Panjang = 10.0 Lebar = 20.0 Tinggi = 50.0

43 Luas = Volume = BUILD SUCCESSFUL (total time: 4 seconds) Bahasan : Persoalan itu diungkapkan dalam aroma prosedural / algoritmik. Kita seharusnya menyatakan ulang menjadi deskripsi persoalan orientasi objek. Kita sebenarnya dibawa ke persoalan balok, kelas balok (box). Dalam cara fikir orientasi objek, kita seharusnya selalu memandang kelas sebagai "person" atau paling tidak mesin. Salah satu tokoh orientasi objek, Wirfs, memandang perlu mencari tanggung jawab yang diemban kelas. Kelas yang mengemban tanggung jawab berarti kelas itu mempunyai arti di sistem. Tanggung jawab suatu kelas adalah dua macam, yaitu : 1. Apa-apa yang perlu diketahui? 2. Aksi-aksi apa yang dapat dilakukannya? Pada kelas Box dapat dikatakan bahwa kelas Box bertanggung jawab mengetahui : 1. Lebar (width) 2. Panjang (length) 3. Tinggi (height) 4. Luasnya 5. Volumenya Tanggung jawab tidak mungkin dipenuhi bila kelas tidak memperoleh informasi dari luar sehingga kita menciptakan contructor kelas Box sebagai berikut : public BoxToy(double length, double width, double height) { this.width = width; this.length = length; this.height = height; Constructor meminta masukan berupa length, width dan height. Kelas Box berkewajiban menyimpan di atribut-atribut berikut : private double width = 0; private double length = 0; private double height = 0; Tanggung jawab kelas BoxToy mengetahui length, width dan height. Dapat dilaksanakan di mana pemakai dapat menanyakan mengenai itu. Pemakai meminta layanan : public double getwidth(); public double getlength(); public double getheight();

44 Sementara itu, untuk tanggung jawab mengetahui luas dan volume, kelas Box menyediakan layanan : public double getarea(); public double getvolume(); Dalam menyediakan layanan, kelas melakukannya melalui dua cara, yaitu : 1. Melalui penyimpanan (by storage), dimana metode sekedar mengirim nilai atribut tertentu. 2. Melalui komputasi (by computation), dimana metode harus melakukan komputasi terlebih dahulu sehingga layanan yang dimaksud diperoleh. Dalam orientasi objek, pemakai kelas sesungguhnya tidak perlu memperdulikan apakah layanan dilakukan melalui penyimpanan atau melalui komputasi. Yang perlu diketahui pemakai hanya cara dan syarat dalam meminta/memperoleh layanan. Memanggil getwidth() untuk memperoleh lebar kotak. Memanggil getlength() untuk memperoleh panjang kotak. Memanggil getheight() untuk memperoleh panjang kotak, serta Memanggil getarea() untuk memperoleh luas total sisi kotak. Memanggil getvolume() untuk memperoleh volume kotak. Urusan pembuat kelas BoxToy untuk menerapkan melalui penyimpanan atau melalui komputasi. Dalam persoalan kotak, kelas tidak mempunyai tanggung jawab melakukan aksi tertentu. Bila kotak diperluas maka kita dapat menambahkan tanggung jawab aksi misalnya : Mengembangkan kotak, yang dapat diimplementasikan sebagai berikut : 1. Metode enlarge() untuk menaikkan masing-masing sisi dengan satu, atau 2. Metode enlarge(double persent) untuk menaikkan masing-masing sisi sebesar persent 3. Metode enlarge(double w, double l, double h) untuk menaikkan masing-masing sisi dengan masing-masing nilai. Mengerutkan kotak, yang akan dapat diimplementasikan sebagai berikut : 1. Metode shrink() untuk menurunkan masing-masing sisi dengan satu, atau 2. Metode shrink(double percent) untuk menurunkan masing-masing sisi sebesar persence. 3. Metode shrink(double w, double l, double h) untuk menurunkan masing-masing sisi dengan masing-masing nilai. Dan sebagainya.

45 Program Titik dan Garis Persoalan 11 : Bagaimana memrogram garis yang dibatasi dua ujung. Kedua ujung merupakan titik. Bahasan Awal : Pernyataan ulang terhadap deskripsi persoalan : Buat elas (LineToy) yang menyediakan layanan gemetri anaitis garis. Program : /* * PointToy.java * * Created on September 03, 2017, 09:22 AM */ package javaapp; /** * richi */ public class PointToy { private double x, y; /** Creates a new instance of PointToy */ public PointToy() { x = 0.0; y = 0.0; public PointToy (double x, double y) { this.x = x; this.y = y; public PointToy (PointToy p) { x = p.x; y = p.y; public double getx() { return x; public double gety() { return y;

46 public void moveby(double dx, double dy) { x = x + dx; y = y + dy; public void moveto(double x, double y) { this.x = x; this.y = y; public String tostring() { return ("x = "+x+" y "+y); static void test() { System.out.println(new PointToy(2.0, 3.0)); public static void main(string args[]) { test(); Keluaran : run: x = 2.0 y 3.0 BUILD SUCCESSFUL (total time: 0 seconds) Bahasan : Kita membuat kelas PointToy yang memiliki tanggung jawab 1. Mengetahui koordinat x dan y 2. Melakukan aksi mengubah posisinya menjadi di koordinat lain Berdasarkan koordinat yang dituju, diimplementasikan sebagai moveto(). Berdasar delta yang harus dilakukan, diimplementasikan moveby(). Tiga constructor berbeda : public PointToy() { x = 0.0; y = 0.0; Untuk penciptaan tanpa argumen. public PointToy (double x, double y) { this.x = x; this.y = y;

47 Untuk penciptaan tanpa argumen koordinat x dan y yang dikehendaki : public PointToy (PointToy p) { x = p.x; y = p.y; Untuk penciptaan berdasarkan koordinat objek PointToy yang lain. Kita dapat menguji kelas-kelas ini dengan metode test() yang dipanggil main(). Pengujian yang baik memerlukan pemahaman matematika kombinatorial yang cukup tinggi agar dapat melakukan pengujian secara seminimum mungkin dengan syarat-syarat pengujian secara bagus. Java memungkinkan pengujian kelas secara individu, kita dapat membuat metode-metode static pengujian testxx(), XX dari 00 sampai dengan 99 bila perlu. Agar dapat melengkapi metode testxx() dengan pengujian yang memenuhi kriteria pengujian level kelas. Pengujian dapat dibantu dengan kakas-kakas berikut : Fasilitas make, di Java telah dikembangkan Ant. Fasilitas pengujian, di Java telah dikembangkan JUnit, HTTPUnit, Cactus Fasilitas profiling seperti JMeter dari Apache Fasilitas manajemen konfigurasi misalnya manajemen versi seperti CVS Dan sebagainya

PENYELEKSIAN /PERCABANGAN & PERULANGAN Part II. 5 th week Estu Sinduningrum ST,MT

PENYELEKSIAN /PERCABANGAN & PERULANGAN Part II. 5 th week Estu Sinduningrum ST,MT PENYELEKSIAN /PERCABANGAN & PERULANGAN Part II 5 th week Estu Sinduningrum ST,MT Review last week Percabangan Pada java terdapat beberapa percabangan, yaitu : 1. if 2. if-else 3. switch 4. case Penyeleksian

Lebih terperinci

MATERI PRAKTIKUM 2 ARRAY

MATERI PRAKTIKUM 2 ARRAY MATERI PRAKTIKUM 2 ARRAY A. Teori 1. Deklarasi dan Penciptaan Array Array adalah bentukan yang menyediakan penyimpanan sejumlah item bertipe sama. Item-item array dapat berupa data sederhana atau komposit.

Lebih terperinci

Membuat dan Menggunakan Class

Membuat dan Menggunakan Class Pertemuan 3 Halaman 1/1 Membuat class pada java : Untuk mendefinisikan suatu class pada java digunakan : class ClassName { suatu class dapat terdiri dari - attribute / data field - method Attribute Attribute

Lebih terperinci

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM Materi kuliah ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM Ir. Roedi Goernida, MT. (roedig@yahoo.com) Program Studi Sistem Informasi Fakultas Rekayasa Industri Institut Teknologi Telkom Bandung

Lebih terperinci

UNIVERSITAS GUNADARMA

UNIVERSITAS GUNADARMA PEMROGRAMAN BERBASIS OBYEK Encapsulation 2IA08 1. Ade hardiyanto 50412121 2. Burhanuddin Ginting 51412532 3. Muhamad Iqbal Tawakal 54412803 4. Perdi Atmaja 55412663 5. Reza Cipta Permana 56412192 UNIVERSITAS

Lebih terperinci

Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class

Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class Tessy Badriyah, SKom. MT. http://lecturer.eepis-its.edu/~tessy Pendahuluan Pada bagian ini, kita akan membuat program berbasis obyek menggunakan

Lebih terperinci

SUMBER BELAJAR PENUNJANG PLPG

SUMBER BELAJAR PENUNJANG PLPG SUMBER BELAJAR PENUNJANG PLPG 2017 [TIK] BAB VIII PEMROGRAMAN BERORIENTASI OBJEK [Alfa Faridh Suni] KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL GURU DAN TENAGA KEPENDIDIKAN 2017 BAB VIII

Lebih terperinci

Dasar Pemrograman Java

Dasar Pemrograman Java Dasar Pemrograman Java Tessy Badriyah, SKom. MT. http://lecturer.eepis-its.edu/~tessy Tujuan Pembelajaran Penggunaan Komentar dalam program Memahami perbedaan identifier yang valid dan yang tidak valid

Lebih terperinci

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method Pemrograman Lanjut Instance Variable Access Modifier Set dan Get Method PTIIK - 2014 Objectives Mampu mendeklarasikan class dan menggunakannya untuk membuat object. Mampu mendeklarasikan methods dalam

Lebih terperinci

I. Tujuan Instruksional Umum Mengenal konsep dasar berorientasi objek Memahami dan dapat mengimplementasikan Kelas dan Objek pada java.

I. Tujuan Instruksional Umum Mengenal konsep dasar berorientasi objek Memahami dan dapat mengimplementasikan Kelas dan Objek pada java. I. Tujuan Instruksional Umum Mengenal konsep dasar berorientasi objek Memahami dan dapat mengimplementasikan Kelas dan Objek pada java II. Bahan Kajian 1. Kelas(Class) Kelas adalah definisi umum (pola,

Lebih terperinci

Other OOP Basic. Viska Mutiawani, M.Sc

Other OOP Basic. Viska Mutiawani, M.Sc Other OOP Basic Viska Mutiawani, M.Sc Konsep penting Method overloading Encapsulation this keyword final static Visualisasi Class Class divisualisasikan dalam UML sebagai kotak persegi dengan 3 ruang:

Lebih terperinci

Bab 8. Dasar-Dasar OOP

Bab 8. Dasar-Dasar OOP Bab 8. Dasar-Dasar OOP Pemrograman Berorientasi Obyek Politeknik Elektronika Negeri Surabaya 2007 Overview Introduction Encapsulation Information Hiding Interface to access data Constructor Overloading

Lebih terperinci

Other OOP Basic. Viska Mutiawani, M.Sc. 1 Viska Mutiawani - Informatika FMIPA Unsyiah

Other OOP Basic. Viska Mutiawani, M.Sc. 1 Viska Mutiawani - Informatika FMIPA Unsyiah Other OOP Basic Viska Mutiawani, M.Sc 1 Viska Mutiawani - Informatika FMIPA Konsep penting Method overloading Encapsulation this keyword final static 2 Viska Mutiawani - Informatika FMIPA Visualisasi Class

Lebih terperinci

IKG2I4 / Software Project I

IKG2I4 / Software Project I IKG2I4 / Software Project I Mahmud Imrona, M.T. Izzatul Ummah, M.T. Kelompok Keahlian Algoritma dan Komputasi LECTURE NOTE WEEK 2 1 3/11/2015 WEEK 2 Class Driver Constructor Public vs private Get dan set

Lebih terperinci

PEMROGRAMAN BERORIENTASI OBJEK

PEMROGRAMAN BERORIENTASI OBJEK MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK NINF615 SEMESTER GASAL 2016/2017 PROGRAM STUDI S1 TEKNIK INFORMATIKA MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK DISUSUN OLEH: Tim Asisten Praktikum Jurusan

Lebih terperinci

Pemrograman. Pertemuan-3 Fery Updi,M.Kom

Pemrograman. Pertemuan-3 Fery Updi,M.Kom Pemrograman Pertemuan-3 Fery Updi,M.Kom 1 Pokok Bahasan Mengenal Tipe Data, Variabel Mengenal Operator 2 public class Main { Komentar /** Bentuk Dasar Kode Java * @param args */ public static void main(string[]

Lebih terperinci

Gambar 1: Hirarki class

Gambar 1: Hirarki class BAB 11 Pewarisan, Polimorfisme, dan Interface 11.1 Tujuan Dalam bagian ini, kita akan membicarakan bagaimana suatu class dapat mewariskan sifat dari class yang sudah ada. Class ini dinamakan subclass dan

Lebih terperinci

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM 1. Praktikan memahami perbedaan objek dan class pada Java. 2. Praktikan memahami konsep berorientasi objek. 3. Praktikan dapat membuat program sederhana dengan

Lebih terperinci

Pemrograman Berorientasi. Class dan Obyek 2

Pemrograman Berorientasi. Class dan Obyek 2 Pemrograman Berorientasi Obyek Class dan Obyek 2 anton@ukdw.ac.id Method main pada Java public static void main(string[] args) Merupakan bagian yang dieksekusi oleh program Java Sifat: public, static,

Lebih terperinci

PRAKTIKUM OBJECT ORIENTED PROGRAMING

PRAKTIKUM OBJECT ORIENTED PROGRAMING PRAKTIKUM OBJECT ORIENTED PROGRAMING Class, Object dan Elemen dalam Class Pada Java Disusun oleh: KELOMPOK 1 STMIK STIKOM INDONESIA (STIKI)-BALI 2016 KATA PENGANTAR Puji syukur penulis panjatkan kehadiran

Lebih terperinci

BAB II VARIABEL DAN TIPE DATA

BAB II VARIABEL DAN TIPE DATA BAB II VARIABEL DAN TIPE DATA Bahasa pemrograman pada umumnya, mengenal adanya variabel yang digunakan untuk menyimpan nilai atau data. Sedangkan Java sendiri dikenal sebagai bahasa pemrograman dengan

Lebih terperinci

Bahasa Pemrograman :: Polimorfism and Abstraction

Bahasa Pemrograman :: Polimorfism and Abstraction Bahasa Pemrograman :: and Abstraction Julio Adisantoso ILKOM IPB 24 Mei 2010 Access Modifiers Access Modifiers Accessor Methods Mutator Methods Inheritance Akses Default (Package Accessibility) Tidak terdapat

Lebih terperinci

2 TIPE DATA DAN VARIABEL

2 TIPE DATA DAN VARIABEL BAB 2 TIPE DATA DAN VARIABEL Kompetensi Dasar dan Indikator : Setelah mengikuti materi kuliah ini mahasiswa mampu menggunakan tipe data dan variable yang ada dalam Java, dengan indikator mahasiswa mampu:

Lebih terperinci

MODUL 1. CLASS, OBJECT, CONSTRUCTOR DAN METHOD

MODUL 1. CLASS, OBJECT, CONSTRUCTOR DAN METHOD MODUL 1. CLASS, OBJECT, CONSTRUCTOR DAN METHOD MODUL 1 Class, Object, Constructor dan Method TUJUAN PRAKTIKUM 1. Praktikan dapat memahami dan menerapkan pengertian object dan class dalam java 2. Praktikan

Lebih terperinci

MODUL 4. Classes and Objects (part I)

MODUL 4. Classes and Objects (part I) MODUL 4 Classes and Objects (part I) I. GUIDED Praktikum kali ini mengimplementasikan constructor, misalnya pada contoh Class Calendar. Object yang memungkinkan untuk diinstansiasi dari class Calendar

Lebih terperinci

Pertemuan 4 Halaman 1/1. Class Inheritance

Pertemuan 4 Halaman 1/1. Class Inheritance Pertemuan 4 Halaman 1/1 Inheritance merupakan suatu cara untuk menurunkan suatu class yang lebih umum menjadi suatu class yang lebih spesifik. Superclass dan Subclasses Subclass merupakan class yang diturunkan

Lebih terperinci

Array. Pengantar. int a, b, c, d, e;

Array. Pengantar. int a, b, c, d, e; Array Pengantar Program yang cukup kompleks membutuhkan variabel dalam jumlah besar. Kita mungkin saja mendeklarasikan variabel-variabel tersebut satu per satu. Andaikan sebuah program membutuhkan 5 (lima)

Lebih terperinci

KENDALI PROSES. Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan.

KENDALI PROSES. Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan. KENDALI PROSES Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan. PERINTAH KONDISIONAL Pemrograman Java memiliki 2 Decision-making

Lebih terperinci

Dasar-Dasar OOP di Java

Dasar-Dasar OOP di Java Dasar-Dasar OOP di Java Information hiding Pada bab sebelumnya telah dibahas bagaimana mengakses anggota class, baik yang berupa atribut ataupun method. Misalnya saja kita mempunyai sebuah class seperti

Lebih terperinci

Pemrograman Lanjut Tipe Data dan Constructor PTIIK

Pemrograman Lanjut Tipe Data dan Constructor PTIIK Pemrograman Lanjut Tipe Data dan Constructor PTIIK - 2013 Objectives Mengetahui perbedaan antara tipe data primitive dan reference. Mampu mendeklarasikan dan menggunakan constructor untuk memastikan bahwa

Lebih terperinci

ENKAPSULASI Data Hiding

ENKAPSULASI Data Hiding PEMROGRAMAN LANJUT Sistem Informasi FILKOM UB Semester Genap 2016/2017 ENKAPSULASI Data Hiding Dr. Eng. Herman Tolle, ST., MT Fakultas Ilmu Komputer, Universitas Brawijaya Pemrograman Lanjut 1. Nama Matakuliah

Lebih terperinci

Praktikum 6 Class Design (Encapsulation)

Praktikum 6 Class Design (Encapsulation) Praktikum 6 Class Design (Encapsulation) Tujuan Mengetahui bagaimana cara mendeklarasikan suatu class beserta atribut dan metodenya, serta mengakses anggota dari suatu obyek. Dasar Teori Deklarasi class

Lebih terperinci

Class & Object 2 ~Praktikum~ Imam Fahrur Rozi

Class & Object 2 ~Praktikum~ Imam Fahrur Rozi Class & Object 2 ~Praktikum~ Imam Fahrur Rozi Materi * Package * Kata kunci import * Access Modifier * Konstruktor * Kata kunci static Package Package namapaket * Package dalam Java digunakan untuk mengorganisir

Lebih terperinci

Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni

Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni Enkapsulasi u Dapat dikatakan sebagai penyembunyian data/informasi (Information hiding). u Implementasi ke bahasa Pemrograman

Lebih terperinci

1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar?

1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar? 1 of 14 2/21/2008 2:34 PM Waktu Sisa : 0:43:58 1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar? 2 of 14 2/21/2008 2:34 PM 2. Pernyataan manakah yang benar mengenai

Lebih terperinci

Modul Praktikum 3 Pemograman Berorientasi Objek

Modul Praktikum 3 Pemograman Berorientasi Objek Modul Praktikum 3 Pemograman Berorientasi Objek 1. Judul : Kontrol Keputusan dan Pengulangan 2. Tujuan Percobaan : Diakhir praktikum, mahasiswa diharapkan mampu : Menggunakan struktur kontrol keputusan

Lebih terperinci

Tipe Data Floating Point Tipe data yng digunakan untuk menampung bilangan desimal

Tipe Data Floating Point Tipe data yng digunakan untuk menampung bilangan desimal I. Bahan Kajian 1. Kelas(Class) Kelas adalah definisi umum (pola, template atau cetak biru) untuk himpunan objek sejenis. Kelas menetapkan spesifikasi perilaku (behavior) dan atribut dari objek-objek (*lebih

Lebih terperinci

Pemrograman Lanjut. Constructor. Aryo Pinandito, ST, M.MT Team Teaching Pemrograman Lanjut

Pemrograman Lanjut. Constructor. Aryo Pinandito, ST, M.MT Team Teaching Pemrograman Lanjut Pemrograman Lanjut Constructor Aryo Pinandito, ST, M.MT Team Teaching Pemrograman Lanjut Objectives Mengetahui dan memahami constructor Mampu mendeklarasikan dan menggunakan constructor untuk memastikan

Lebih terperinci

MODUL 1. Class, Object, Constructor dan Method

MODUL 1. Class, Object, Constructor dan Method MODUL 1 Class, Object, Constructor dan Method TUJUAN PRAKTIKUM 1. Praktikan dapat memahami dan menerapkan pengertian object dan class dalam java 2. Praktikan dapat memahami pengertian dan penggunaan Constructor

Lebih terperinci

LAPORAN V PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK

LAPORAN V PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK LAPORAN V PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berbasis Objek Yang Dibimbing oleh Heru Wahyu Herwanto, S.T., M.KOM Oleh: Amadeuz Ezrafel 120533430965

Lebih terperinci

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA Asep Herman Suyanto info@bambutechno.com http://www.bambutechno.com Bahasa pemrograman pada umumnya, mengenal adanya variabel yang digunakan untuk menyimpan nilai

Lebih terperinci

Pewarisan, Polimorfisme, dan Interface

Pewarisan, Polimorfisme, dan Interface Pewarisan adalah keuntungan besar dalam pemrograman berbasis object karena suatu sifat atau method didefinisikan dalam superclass, sifat ini secara otomatis diwariskan dari semua subclasses. Jadi, Anda

Lebih terperinci

PEMAHAMAN DASAR DASAR JAVA

PEMAHAMAN DASAR DASAR JAVA MODUL 1 PEMAHAMAN DASAR DASAR JAVA A. PENGANTAR JAVA Java Standard Development Kit (JDK/SDK) merupakan alat-alat utama bagi programmer untuk membuat dan menjalankan java. Development Kit dapat didownload

Lebih terperinci

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom BAB III DASAR-DASAR PEMROGRAMAN Tipe Data Data adalah sekumpulan kejadian/fakta yang dipresentasikan dengan huruf, angka,

Lebih terperinci

Pemrograman Berorientasi. Abstract & Interface

Pemrograman Berorientasi. Abstract & Interface Pemrograman Berorientasi Obyek Abstract & Interface anton@ukdw.ac.id Latar Belakang Kita sudah mengenal pewarisan, bahwa class anak akan selalu mendapat warisan atribut dan behavior dari class induk Class

Lebih terperinci

BAB 1 PEMROGRAMAN BERORIENTASI OBJEK

BAB 1 PEMROGRAMAN BERORIENTASI OBJEK BAB 1 PEMROGRAMAN BERORIENTASI OBJEK Pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan

Lebih terperinci

Pertemuan 4 Array pada Java

Pertemuan 4 Array pada Java Pertemuan 4 Array pada Java Objektif : 1. Mahasiswa dapat memahami pengertian Array pada Java 2. Mahasiswa dapat mengetahui bentuk umum dari Array 3. Mahasiswa dapat mengetahui jenis-jenis Array pada Java

Lebih terperinci

Polymorphism (Polimorfisme)

Polymorphism (Polimorfisme) Polymorphism (Polimorfisme) Pemrograman Berorientasi Objek Minggu 7 Alfa Faridh Suni Polymorphisme * Poly + morph = banyak + bentuk * Polymorphism yang berarti satu objek dapat memiliki banyak bentuk yang

Lebih terperinci

IKG2I4 / Software Project I

IKG2I4 / Software Project I IKG2I4 / Software Project I Mahmud Imrona, M.T. Izzatul Ummah, M.T. Kelompok Keahlian Algoritma dan Komputasi LECTURE NOTE WEEK 3 1 02/02/2016 8:59:08 WEEK 3 Inheritance Pewarisan class (atribut dan method)

Lebih terperinci

2015 BAHASA PEMROGRAMAN I. Pertemuan VI Inheritance (Pewarisan)

2015 BAHASA PEMROGRAMAN I. Pertemuan VI Inheritance (Pewarisan) Pertemuan VI Inheritance (Pewarisan) 6.1. Tujuan Mahasiswa diharapkan dapat: 1. Memahami konsep inheritance dalam pemecahan permasalahan. 2. Mengimplementasikan konsep inheritance dalam bentuk program.

Lebih terperinci

OBJECT, CLASS DAN METHOD. 1. Mengetahui pengertian dari objek & class 2. Dapat membuat program sederhana dari java dengan menggunakna objek dan class

OBJECT, CLASS DAN METHOD. 1. Mengetahui pengertian dari objek & class 2. Dapat membuat program sederhana dari java dengan menggunakna objek dan class OBJECT, CLASS DAN METHOD Obyektif : 1. Mengetahui pengertian dari objek & class 2. Dapat membuat program sederhana dari java dengan menggunakna objek dan class Object dan Class class Dalam dunia nyata,

Lebih terperinci

Inheritance dan Kata Kunci static

Inheritance dan Kata Kunci static Inheritance dan Kata Kunci static PEWARISAN (INHERITANCE) Salah satu fitur yang paling kuat dalam OOP adalah penggunaan kode kembali (code reuse). Sekali sebuah prosedur dibuat, maka kita bisa menggunakannya

Lebih terperinci

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN Obektif: Praktikan mengetahui arra, percabangan, dan perulangan pada Java. Praktikan mengetahui bentuk umum

Lebih terperinci

PEWARISAN D E W I S A R T I K A, M. K O M

PEWARISAN D E W I S A R T I K A, M. K O M PEWARISAN D E W I S A R T I K A, M. K O M PENDAHULUAN Pewarisan (inheritance) merupakan suatu hubungan antara dua buah kelas atau lebih, dimana ada kelas yang memiliki atribut dan method yang sama dengan

Lebih terperinci

MATERI PRAKTIKUM STRUKTUR DATA

MATERI PRAKTIKUM STRUKTUR DATA MATERI PRAKTIKUM STRUKTUR DATA Materi pembelajaran struktur data selama satu semester meliputi: No Materi Umum Tujuan yang diharapkan 1 Pengertian Struktur Data, Tipe Data Mahasiswa dapat Memahami dan

Lebih terperinci

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN http://sholikins.wordpress.com http://sholikins.wordpress.com 1 Pemrograman Berorientasi Objek / OOP (Objek Oriented Programming)??? http://sholikins.wordpress.com

Lebih terperinci

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita PEMROGRAMAN JAVA Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita Education is not the filling of a pail, but the lighting of a fire. (William

Lebih terperinci

Pada akhir pertemuan ini, diharapkan mahasiswa memiliki kemampuan untuk: Menggunakan struktur kendali pencabangan bersyarat dalam bahasa pemrograman.

Pada akhir pertemuan ini, diharapkan mahasiswa memiliki kemampuan untuk: Menggunakan struktur kendali pencabangan bersyarat dalam bahasa pemrograman. Pemrograman Dasar 1 Pada akhir pertemuan ini, diharapkan mahasiswa memiliki kemampuan untuk: Menggunakan struktur kendali pencabangan bersyarat dalam bahasa pemrograman. 2 Pencabangan Bersyarat Pernyataan

Lebih terperinci

MINGGU II : DASAR C# Tujuan Pembelajaran. Materi

MINGGU II : DASAR C# Tujuan Pembelajaran. Materi MINGGU II : DASAR C# Bagian ini akan membahas tentang struktur dasar C# dan elemen-elemen dasar dalam C#. Pembahasan meliputi struktur dasar C#, Ekspresi, Tipe data, variable dan operator dalam C#. Tujuan

Lebih terperinci

BEKERJA DENGAN JAVA CLASS LIBRARY

BEKERJA DENGAN JAVA CLASS LIBRARY MK. Pemrograman Berorientasi Objek BEKERJA DENGAN JAVA CLASS LIBRARY (CLASS-METHOD-OBJECT) KARMILASARI ANALOGI OBJEK DALAM DUNIA NYATA Objek di dunia nyata = Objek dalam perangkat lunak Atribut di dunia

Lebih terperinci

2.1 if Jenis-jenis Percabangan if adalah if, if else, If else if else if - else

2.1 if Jenis-jenis Percabangan if adalah if, if else, If else if else if - else I. Bahan Kajian Sebagai bahasa pemrograman, java memiliki cara untuk mengontrol alur eksekusi program bergantung pada kondisi yang telah ditetapkan Secara garis besar alur eksekusi ini dapat dikelompokan

Lebih terperinci

KONSEP OOP: PEWARISAN / INHERITANCE

KONSEP OOP: PEWARISAN / INHERITANCE PEMROGRAMAN LANJUT Sistem Informasi PTIIK UB Semester Genap 2014/2015 KONSEP OOP: PEWARISAN / INHERITANCE Dr. Eng. Herman Tolle Program Teknologi Informasi & Ilmu Komputer, Universitas Brawijaya Outline

Lebih terperinci

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya : VI. FUNGSI 6.1. FUNGSI Fungsi adalah sekumpulan perintah operasi program yang dapat menerima argumen input dan dapat memberikan hasil output yang dapat berupa nilai ataupun sebuah hasil operasi. Hasil

Lebih terperinci

Algoritma dan Pemrograman

Algoritma dan Pemrograman Algoritma dan Pemrograman Oleh: Eddy Prasetyo N 27/02/2014 1 Konten Pengantar Analisa Kasus Logika IF Then Logika Depend On Notasi Algoritmanya Latihan Analisa Kasus 27/02/2014 2 Pokok Bahasan Analisa

Lebih terperinci

Dasar-Dasar OOP di Java

Dasar-Dasar OOP di Java Pertemuan 7 - Pemrograman Berbasis Obyek Oleh: Ali Ridho Barakbah Information hiding Dasar-Dasar OOP di Java Pada bab sebelumnya telah dibahas bagaimana mengakses anggota class, baik yang berupa atribut

Lebih terperinci

Pengenalan JavaScript

Pengenalan JavaScript Pengenalan JavaScript Tujuan - Mahasiswa memahami konsep dasar Javascript - Mahasiswa mampu memahami cara menggunakan Javascript - Mahasiswa mampu memahami dasar variabel di Javascript - Mahasiswa mampu

Lebih terperinci

Modul Pelatihan : Pembuatan Game Animasi Menggunakan Greenfoot

Modul Pelatihan : Pembuatan Game Animasi Menggunakan Greenfoot Modul Pelatihan : Pembuatan Game Animasi Menggunakan Greenfoot 1 Bab 1 PENDAHULUAN Greenfoot adalah perangkat lunak yang didesain untuk pemula agar dapat terbiasa dengan Pemrograman Berorientasi Objek(Object-Oriented

Lebih terperinci

1.Tujuan. 2. Latar Belakang. Mendefinisikan superclasses dan subclasses Override method dari superclasses Membuat method final dan class final

1.Tujuan. 2. Latar Belakang. Mendefinisikan superclasses dan subclasses Override method dari superclasses Membuat method final dan class final 1.Tujuan Mendefinisikan superclasses dan subclasses Override method dari superclasses Membuat method final dan class final 2. Latar Belakang Dalam bagian ini, kita akan membicarakan bagaimana suatu class

Lebih terperinci

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman Jurusan Teknik Informatika Fakultas Teknik Universitas Maritim Raja Ali Haji ALGORITMA DAN PEMOGRAMAN I. ALGORITMA II. BAHASA

Lebih terperinci

Modul 2. [access specifier] [tipe data] [nama variabel];

Modul 2. [access specifier] [tipe data] [nama variabel]; Modul 2 Objek, Kelas, dan Instance Variabel 1. Deklarasi variable, kelas, dan method Di setiap bahasa pemrograman, programmer selalu membuat variabel untuk dapat memanipulasi data dan mengoperasikannya.

Lebih terperinci

MODUL 2 Constructor. Tujuan: Mahasiswa dapat mengenal dan memahami konsep constructor dan overloading constructor

MODUL 2 Constructor. Tujuan: Mahasiswa dapat mengenal dan memahami konsep constructor dan overloading constructor MODUL 2 Constructor Tujuan: Mahasiswa dapat mengenal dan memahami konsep constructor dan overloading constructor Materi: Pengantar Constructor Overloading constructor Soal Latihan Referensi: Fikri, Rijalul.

Lebih terperinci

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH) PEMROGRAMAN JAVA Yoannita, S.Kom Input Kondisi (IF-ELSE, SWITCH) 1 import java.io.* Operasi input/output dimaksudkan untuk berinteraksi dengan user, User mengetikkan sesuatu input, program java akan menerima

Lebih terperinci

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK Deskripsi Singkat Praktikum pemrograman berorientasi objek adalah praktikum yang menggunakan bahasa Java sebagai bantuan dalam memahami konsep pemrograman

Lebih terperinci

Praktikum 3 Konsep Class, Attribute dan Method

Praktikum 3 Konsep Class, Attribute dan Method Praktikum 3 Konsep Class, Attribute dan Method Dosen : Ir. Nanang Syahroni M.Kom Pokok Bahasan Konsep pemprograman bahasa Java Konsep Object Oriented Programming (OOP) Deklarasi pemprograman OOP dengan

Lebih terperinci

2 Class dan Object (1)

2 Class dan Object (1) 2 Class dan Object (1) PENDAHULUAN Konsep yang paling mendasar dari Object Oriented Programming adalah Class dan Object. Objek merepresentasikan suatu objek nyata yang ditemukan dalam suatu sistem. Sedangkan

Lebih terperinci

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR BAB 3 TYPE DATA, VARIABLE DAN OPERATOR Bahasa pemrograman pada umumnya, mengenal adanya variabel yang digunakan untuk menyimpan nilai atau data. Sedangkan Java sendiri dikenal sebagai bahasa pemrograman

Lebih terperinci

Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program.

Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program. Class & Objek Pengenalan OOP Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program. Object tersebut dikarakterisasi oleh property dan behavior. Pengenalan

Lebih terperinci

3/31/2011. Tujuan. Inheritance, Polymorphism,& Interfaces. Inheritance / pewarisan. Inheritance / pewarisan. Inheritance / pewarisan

3/31/2011. Tujuan. Inheritance, Polymorphism,& Interfaces. Inheritance / pewarisan. Inheritance / pewarisan. Inheritance / pewarisan Tujuan JAVA Education Network Indonesia Inheritance,,& Interfaces Pengenalan Pemrograman 1 Pada akhir bab, Anda diharapkan mampu untuk Menjelaskan super class dan subclass Meng-override method dari superclass

Lebih terperinci

Struktur Kontrol Pemrograman Java : PERCABANGAN

Struktur Kontrol Pemrograman Java : PERCABANGAN MK. Pemrograman Berorientasi Objek Struktur Kontrol Pemrograman Java : PERCABANGAN Karmilasari Struktur Kontrol Percabangan If, If-Else, If bersarang Switch - Case Pengulangan 2 Percabangan : IF Pada percabangan

Lebih terperinci

KONSEP OOP: PEWARISAN / INHERITANCE

KONSEP OOP: PEWARISAN / INHERITANCE PEMROGRAMAN LANJUT Informatika FILKOM UB Semester Genap 2015/2016 KONSEP OOP: PEWARISAN / INHERITANCE Dr. Eng. Herman Tolle Program Teknologi Informasi & Ilmu Komputer, Universitas Brawijaya Outline Keyword

Lebih terperinci

Method. Pemrograman Dasar Sistem Informasi PTIIK Herman Tolle

Method. Pemrograman Dasar Sistem Informasi PTIIK Herman Tolle Method Pemrograman Dasar Sistem Informasi PTIIK Herman Tolle Definisi Metode: Sekumpulan baris kode program yang mempunyai fungsi tertentu dan dapat dipanggil dari fungsi utama, Dapat dipanggil berulang

Lebih terperinci

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR TIPE-TIPE FUNGSI ATAU METHOD

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR TIPE-TIPE FUNGSI ATAU METHOD LAPORAN PRAKTIKUM PEMROGRAMAN DASAR TIPE-TIPE FUNGSI ATAU METHOD Disusun oleh : Nama : Ach Fauzan NIM : 135150201111002 Asisten 1 : Fadel Trivandi Dipantara Asisten 2 : Karid Nurvenus Asisten 3 : Apiladosi

Lebih terperinci

BAHASA PEMROGRAMAN. Untuk SMK. Kadarisman Tejo Yuwono Totok Sukardiyono Adi Dewanto. : Ratu Amilia Avianti. Perancang Kulit

BAHASA PEMROGRAMAN. Untuk SMK. Kadarisman Tejo Yuwono Totok Sukardiyono Adi Dewanto. : Ratu Amilia Avianti. Perancang Kulit BAHASA PEMROGRAMAN Untuk SMK Penulis Editor Perancang Kulit Ukuran Buku : Suprapto Kadarisman Tejo Yuwono Totok Sukardiyono Adi Dewanto : Ratu Amilia Avianti : Tim : 18,2 x 15,7 cm Direktorat Pembinaan

Lebih terperinci

MODUL III ARRAYLIST TUGAS PENDAHULUAN

MODUL III ARRAYLIST TUGAS PENDAHULUAN MODUL III ARRAYLIST TUGAS PENDAHULUAN 1. Jelaskan pengertian ArrayList? 2. Jelaskan perbedaan Array dan ArrayList? 3. Tuliskan contoh sintak ArrayList! 1. TUJUAN Mahasiswa dapat memahami konsep ArrayList

Lebih terperinci

Konsep Dasar Pemrograman Berorientasi Objek

Konsep Dasar Pemrograman Berorientasi Objek Konsep Dasar Pemrograman Berorientasi Objek CLASS & OBJECT Kita dapat membuat banyak OBJECT dari satu CLASS Untuk membuat banyak OBJECT, kita cukup gunakan keyword new berulang kali Misal: Rekening CLASS

Lebih terperinci

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK Deskripsi Singkat merupakan bentuk struktur data seperti tumpukan yang memiliki konsep Last In First Out (LIFO). Bermakna data yang terakhir masuk merupakan

Lebih terperinci

MINGGU VI : PBO (LANJUTAN)

MINGGU VI : PBO (LANJUTAN) MINGGU VI : PBO (LANJUTAN) Pertemuan minggi ini membahas topik tambahan dalam konsep PBO di C#. Topik tambahan tersebut meliputi kelas method dan properti statis, kelas Object, Automatic Property, Struct

Lebih terperinci

Pemrograman Berorientasi Objek

Pemrograman Berorientasi Objek Pemrograman Berorientasi Objek Class, Object, Method Pada Java Dalam pemrograman tradisional atau prosedural, seluruh data dan kode digabung menjadi satu bagian dalam satu program. Untuk membuat program-program

Lebih terperinci

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04)

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04) TIPE DATA PADA JAVA Pertemuan (K-04/L-04) Alangkah baiknya kita mempelajari terlebih dahulu tentang apa itu tipe data dan mengenal ada berapa tipe data yang digunakan dalam Bahasa Pemrograman Java. Sudah

Lebih terperinci

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya PRAKTIKUM 2 PEMBUATAN CLASS DAN OBJEK A. TUJUAN PEMBELAJARAN 1. Memahami mengenai konsep Class dan Objek 2. Mampu mengubah konsep Objek di dunia nyata menjadi objek dalam pemrograman. 3. Memahami cara

Lebih terperinci

Pertemuan 2 Struktur Kontrol Percabangan

Pertemuan 2 Struktur Kontrol Percabangan Pertemuan 2 Struktur Kontrol Percabangan Objektif : 1. Mahasiswa dapat memahami konsep struktur kontrol percabangan dalam pemrograman. 2. Mahasiswa dapat menggunakan struktur kontrol pemilihan (if, else,

Lebih terperinci

PEMROGRAMAN JAVA. Yoannita, S.Kom. Class & Method sederhana Konsep Pemrograman Berorientasi Objek. Company LOGO

PEMROGRAMAN JAVA. Yoannita, S.Kom. Class & Method sederhana Konsep Pemrograman Berorientasi Objek. Company LOGO Company LOGO PEMROGRAMAN JAVA Yoannita, S.Kom Class & Method sederhana Konsep Pemrograman Berorientasi Objek Method Method atau metode adalah fungsi yang didefinisikan di dalam kelas dan beroperasi pada

Lebih terperinci

PERTEMUAN 3 OBJEK DAN CLASS

PERTEMUAN 3 OBJEK DAN CLASS PERTEMUAN 3 OBJEK DAN CLASS Obyektif: Praktikan memahami perbedaan objek dan class pada Java. Praktikan memahami konsep berorientasi objek. Praktikan dapat membuat program sederhana dengan menggunakan

Lebih terperinci

LAPORAN RESMI PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK (PBO) MODUL 5 INTERFACE

LAPORAN RESMI PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK (PBO) MODUL 5 INTERFACE LAPORAN RESMI PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK (PBO) MODUL 5 INTERFACE Disusun Oleh : TGL PRAKTIKUM : 3 Desember 2012 NAMA : ACHMAD FAJAR NORULLAH NRP : 11.04.111.000.75 KELAS/KELOMPOK : B/3 DOSEN

Lebih terperinci

PEMROGRAMAN BERORIENTASI OBJEK

PEMROGRAMAN BERORIENTASI OBJEK MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK NINF615 SEMESTER GASAL 2016/2017 PROGRAM STUDI S1 TEKNIK INFORMATIKA MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK DISUSUN OLEH: Tim Asisten Praktikum Jurusan

Lebih terperinci

Java Basic. Variabel dan Tipe Data. Lokasi di dalam memori komputer yang digunakan untuk menyimpan suatu informasi (nilai)

Java Basic. Variabel dan Tipe Data. Lokasi di dalam memori komputer yang digunakan untuk menyimpan suatu informasi (nilai) Variabel dan Tipe Data Lokasi di dalam memori komputer yang digunakan untuk menyimpan suatu informasi (nilai) Nilai variabel dapat diubah di pernyataan manapun di dalam program Java Basic By Didit Setya

Lebih terperinci

MINGGU IV : PEMROGRAMAN BERORIENTASI OBJEK

MINGGU IV : PEMROGRAMAN BERORIENTASI OBJEK MINGGU IV : PEMROGRAMAN BERORIENTASI OBJEK Pertemuan ini bertujuan untuk memperkenalkan konsep dasar pemrograman berorientasi objek. Bahasan pada pertemuan ini meliputi konsep dasar Pemrograman Berorientasi

Lebih terperinci

Pemrograman Berorientasi Objek / Object Oriented Programming / (OOP) Nur Hasanah, M.Cs

Pemrograman Berorientasi Objek / Object Oriented Programming / (OOP) Nur Hasanah, M.Cs Pemrograman Berorientasi Objek / Object Oriented Programming / (OOP) Nur Hasanah, M.Cs Object Oriented Programming (OOP) adalah inti dari pemrograman Java. Dalam OOP, setiap objek didefinisikan sebagai

Lebih terperinci

Pemrograman Lanjut Class, Instance Variable dan Method PTIIK

Pemrograman Lanjut Class, Instance Variable dan Method PTIIK Pemrograman Lanjut Class, Instance Variable dan Method PTIIK - 2013 Objectives Mampu mendeklarasikan class dan menggunakannya untuk membuat object. Mampu mendeklarasikan methods dalam class (tingkah laku

Lebih terperinci

BAB IV HASIL PENELITIAN DAN PENERAPAN

BAB IV HASIL PENELITIAN DAN PENERAPAN 87 BAB IV HASIL PENELITIAN DAN PENERAPAN 4.1 Karakteristik bahasa pemrograman DOGI Berikut ini akan dijabarkan karakteristik-karakteristik bahasa pemrograman DOGI yang mempengaruhi readability, writability

Lebih terperinci