OBJECT-ORIENTED MODEL . DOSEN MATA KULIAH : Muhamad Sabar, S.T., M.T. DISUSUN OLEH : Dendy Renaldi Irawan TEKNIK INFORMATIKA CID 18A SEKOLAH TINGGI TEKNOLOGI BANDUNG 2020 Object & Class o Object Objek adalah turunan atau hasil dari suatu class, Java sendiri adalah Bahasa Pemrograman yang murni berbasis Objek, sehingga konsep pemrograman dengan prosedural tidak dikenal oleh java. Contoh objek bisa Anda lihat dikehidupan sehari-hari seperti pesawat, mobil, kucing, dll. Semua Objek memiliki state dan behavior, state adalah keadaan sedangkan behavior adalah perilaku. Misalkan objek dalam kehidupan nyata adalah Fizi(nama manusia) yang memiliki keadaan(nama, alamat, umur) dan perilaku(tidur, makan, melompat). Objek dalam perangkat lunak juga memiliki keadaan dan perilaku. Keadaan pada perangkat lunak disimpan dalam field(variabel) dan perilakunya ditunjukkan melalui method-method. o Class Class adalah entitas yang menggambarkan keadaan dan perilaku dari objek(logis). Artinya, Class adalah Cetakan yang berisi serangkaian perintah untuk membangun jenis objek tertentu. Class juga bisa diartikan sebagai sekelompok objek yang memiliki sifat umum. Contoh dari Class pada kehidupan nyata adalah kendaraan, manusia, hewan, dan lain sebagainya. Misalnya pada class kendaraan bisa memiliki objek seperti mobil, sepeda motor, pesawat, dll. Sebuah Class bisa memiliki salah satu dari jenis variabel seperti Variabel lokal, variabel instance, dan variabel kelas. Class akan mendeklarasikan tipe data baru dan dijalankan sebagai cetakan, dimana model dari objek yang dibuat berdasarkan tipe data tersebut Contoh kasus Pak Kumis adalah pedagang Sate, tiap Hari dia menjual dan menerima Pesanan dari beberapa Pembeli. Harga Sate yang dijual oleh Pak kumis adalah Rp 950 per tusuk. Suatu hari, Ada seorang pembeli memesan Sate 115 Tusuk. Jadi, Berapa harga Sate 115 tusuk yang harus dibayar oleh Pembeli?. Berikut adalah program Java Sederhana berbasis Teks/Console untuk menampilkan rincian pembelian Sate Source Code : public class Penjualan{ private String nama; private int harga, jumlah, total; public Penjualan(String _nama, int _harga, int _jumlah){ nama = _nama; harga = _harga; jumlah= _jumlah; } public int total(){ total = harga * jumlah; return total; } public void tampil(){ System.out.println("Nama Barang : "+ nama); System.out.println("Harga Barang : "+ harga); System.out.println("Jumlah yang Dibeli : "+ jumlah); System.out.println("__________________________________"); System.out.println("Total Harga : "+ total()); } public static void main(String[]args){ Penjualan resi = new Penjualan("Roti Kumis", 950, 115); resi.tampil(); } } Output / Hasil : Inheritance based on type Inheritance (Pewarisan) Inheritance atau Pewarisan/Penurunan adalah konsep pemrograman dimana sebuah class dapat 'menurunkan' property dan method yang dimilikinya kepada class lain. Konsep inheritance digunakan untuk memanfaatkan fitur 'code reuse' untuk menghindari duplikasi kode program Contoh kasus Sebuah kelas super bernama kelas Binatang.java, yang akan menurunkan 2 buah kelas anak yaitu kelas Mamalia dan kelas Reptil. masing-masing kelas anak ini akan menurunkan lagi kelas anak di bawahnya. yaitu kelas Reptil akan menurunkan kelas Buaya , Ular dan Ciak. kelas Mamalia akan menurunkan kelas Anjing, Kucing, Sapi, Pada subkelas itu nanitnnya akan diturunkan lagi Source Code : 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. package binatang; //super kelas untuk kelas anak : Sapi, Kucing, dan Anjing class Mamalia { String Nama; String Keterangan; //konstruktor public Mamalia (String nama, String keterangan) { Nama = nama; Keterangan = keterangan; } //methode public void TampilkanRincian() { System.out.println("Nama Kelas = " + Nama); System.out.println("Keterangan = " + Keterangan); } } package binatang; //kelas Sapi //Turunan dari kelas Mamalia, menggunakan "extends" dan "super" class Sapi extends Mamalia { String Kegunaan; //konstruktor public Sapi (String nama, String keterangan, String kegunaan) { super (nama,keterangan); Kegunaan = kegunaan; } //methode public void TampilkanRincian() { System.out.println("Nama Mamalia = " + Nama); System.out.println("Keterangan = " + Keterangan); System.out.println("Kegunaan = " + Kegunaan); } } package binatang; 41. //kelas Kucing 42. //Turunan dari kelas Mamalia, menggunakan "extends" dan "super" 43. class Kucing extends Mamalia { 44. String Kegunaan; 45. //konstruktor 46. public Kucing (String nama, String keterangan, String kegunaan) { 47. super (nama, keterangan); 48. Kegunaan = kegunaan; 49. } 50. 51. //methode 52. public void TampilkanRincian() { 53. System.out.println("Nama Mamalia = " + Nama); 54. System.out.println("Keterangan = " + Keterangan); 55. System.out.println("Kegunaan = " + Kegunaan); 56. } 57. } 58. 59. package binatang; 60. 61. //kelas Siam 62. //Turunan dari kelas Siam, menggunakan "extends" dan "super" 63. class Siam extends Kucing { 64. String Jenis; 65. //konstruktor 66. public Siam (String nama, String keterangan, String kegunaan, String jenis) { 67. super (nama, keterangan, kegunaan); 68. Jenis = jenis; 69. } 70. 71. //methode 72. @Override 73. public void TampilkanRincian() { 74. System.out.println("Nama Mamalia = " + Nama); 75. System.out.println("Keterangan = " + Keterangan); 76. System.out.println("Kegunaan = " + Kegunaan); 77. System.out.println("Jenis = " + Jenis); 78. } 79. } 80. 81. package binatang; 82. //kelas Tiffany 83. //Turunan dari kelas Tiffany, menggunakan "extends" dan "super" 84. class Tiffany extends Kucing { 85. String Jenis; 86. //konstruktor 87. public Tiffany (String nama, String keterangan, String kegunaan, String jenis) { 88. super (nama, keterangan, kegunaan); 89. Jenis = jenis; 90. } 91. 92. //methode 93. @Override 94. public void TampilkanRincian() { 95. System.out.println("Nama Mamalia = " + Nama); 96. System.out.println("Keterangan = " + Keterangan); 97. System.out.println("Kegunaan = " + Kegunaan); 98. System.out.println("Jenis = " + Jenis); 99. } 100. } 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. package binatang; //kelas Tyoger //Turunan dari kelas Kucing, menggunakan "extends" dan "super" class Tyoger extends Kucing { String Jenis; //konstruktor public Tyoger (String nama, String keterangan, String kegunaan, String jenis) { super (nama, keterangan, kegunaan); Jenis = jenis; } //methode @Override public void TampilkanRincian() { System.out.println("Nama Mamalia = " + Nama); System.out.println("Keterangan = " + Keterangan); System.out.println("Kegunaan = " + Kegunaan); System.out.println("Jenis = " + Jenis); } } package binatang; //kelas Anjing //Turunan dari kelas Mamalia, menggunakan "extends" dan "super" //super kelas untuk kelas Akita, Beagle, dan Boxer class Anjing extends Mamalia { String Kegunaan; //konstruktor public Anjing (String nama, String keterangan, String kegunaan) { super (nama, keterangan); Kegunaan = kegunaan; } //methode public void TampilkanRincian() { System.out.println("Nama Mamalia = " + Nama); System.out.println("Keterangan = " + Keterangan); System.out.println("Kegunaan = " + Kegunaan); } } package binatang; //kelas Akita //Turunan dari kelas Anjing, menggunakan "extends" dan "super" class Akita extends Anjing { String Jenis; //konstruktor public Akita (String nama, String keterangan, String kegunaan, String jenis) { super (nama, keterangan, kegunaan); Jenis = jenis; } //methode @Override public void TampilkanRincian() { System.out.println("Nama Mamalia = " + Nama); System.out.println("Keterangan = " + Keterangan); 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. ) { 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. System.out.println("Kegunaan = " + Kegunaan); System.out.println("Jenis = " + Jenis); } } package binatang; //kelas Beagle //Turunan dari kelas Anjing, menggunakan "extends" dan "super" class Beagle extends Anjing { String Jenis; //konstruktor public Beagle (String nama, String keterangan, String kegunaan, String jenis) { super (nama, keterangan, kegunaan); Jenis = jenis; } //methode public void TampilkanRincian() { System.out.println("Nama Mamalia = " + Nama); System.out.println("Keterangan = " + Keterangan); System.out.println("Kegunaan = " + Kegunaan); System.out.println("Jenis = " + Jenis); } } package binatang; public class Kintamani extends Anjing { String Jenis; //konstruktor public Kintamani (String nama, String keterangan, String kegunaan, String jenis super (nama, keterangan, kegunaan); Jenis = jenis; } //methode public void TampilkanRincian() { System.out.println("Nama Mamalia = " + Nama); System.out.println("Keterangan = " + Keterangan); System.out.println("Kegunaan = " + Kegunaan); System.out.println("Jenis = " + Jenis); } } package binatang; //kelas Reptil //super kelas untuk kelas anak : Ular, Buaya, Cicak class Reptil { String Nama; String Kulit; String Keterangan; //konstruktor public Reptil (String nama, String kulit, String keterangan) { Nama = nama; Kulit = kulit; Keterangan = keterangan; } //methode 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. public void TampilkanRincian() { System.out.println("Nama Kelas = " +Nama); System.out.println("Kulit = " + Kulit); System.out.println("Keterangan = " + Keterangan); } } package binatang; //kelas Cicak //Turunan dari kelas Reptil, menggunakan "extends" dan "super" class Cicak extends Reptil { String Habitat; //konstruktor public Cicak (String nama, String kulit, String keterangan, String habitat) { super (nama, kulit, keterangan); Habitat = habitat; } //methode public void TampilkanRincian() { System.out.println("Nama Reptil = " + Nama); System.out.println("Kulit = " + Kulit); System.out.println("Keterangan = " + Keterangan); System.out.println("Habitat = " + Habitat); } } package binatang; //kelas Buaya //Turunan dari kelas Reptil, menggunakan "extends" dan "super" class Buaya extends Reptil { String Habitat; //konstruktor public Buaya (String nama, String kulit, String keterangan, String habitat) { super (nama, kulit, keterangan); Habitat = habitat; } //methode public void TampilkanRincian() { System.out.println("Nama Reptil = " + Nama); System.out.println("Kulit = " + Kulit); System.out.println("Keterangan = " + Keterangan); System.out.println("Habitat = " + Habitat); } } package binatang; //kelas Ular //Turunan dari kelas Reptil, menggunakan "extends" dan "super" //super kelas untuk kelas Boa, Python, dan Cobra class Ular extends Reptil { String Habitat; //konstruktor public Ular (String nama, String kulit, String keterangan, String habitat) { super (nama, kulit, keterangan); Habitat = habitat; } 281. 282. //methode 283. public void TampilkanRincian() { 284. System.out.println("Nama Reptil = " + Nama); 285. System.out.println("Kulit = " + Kulit); 286. System.out.println("Keterangan = " + Keterangan); 287. System.out.println("Habitat = " + Habitat); 288. } 289. } 290. 291. package binatang; 292. //kelas Python 293. //Turunan dari kelas Ular, menggunakan "extends" dan "super" 294. class Python extends Ular { 295. String Status; 296. //konstruktor 297. public Python (String nama, String kulit, String keterangan, String habitat, St ring status ) { 298. super (nama, kulit, keterangan, habitat); 299. Status = status; 300. } 301. 302. //methode 303. public void TampilkanRincian() { 304. System.out.println("Nama Ular = " + Nama); 305. System.out.println("Kulit = " + Kulit); 306. System.out.println("Keterangan = " + Keterangan); 307. System.out.println("Habitat = " + Habitat); 308. System.out.println("Status = " + Status); 309. } 310. } 311. 312. //kelas Cobra 313. //Turunan dari kelas Ular, menggunakan "extends" dan "super" 314. class Cobra extends Ular { 315. String Status; 316. //konstruktor 317. public Cobra (String nama, String kulit, String keterangan, String habitat,Stri ng status ) { 318. super (nama, kulit, keterangan, habitat); 319. Status = status; 320. } 321. 322. //methode 323. public void TampilkanRincian() { 324. System.out.println("Nama Ular = " + Nama); 325. System.out.println("Kulit = " + Kulit); 326. System.out.println("Keterangan = " + Keterangan); 327. System.out.println("Habitat = " + Habitat); 328. System.out.println("Status = " + Status); 329. } 330. } 331. 332. package binatang; 333. 334. //kelas Boa 335. //Turunan dari kelas Ular, menggunakan "extends" dan "super" 336. public class Boa extends Ular { 337. String Status; 338. //konstruktor 339. public Boa (String nama, String kulit, String keterangan, String habitat, Strin g status ) { 340. super (nama, kulit, keterangan, habitat); 341. Status = status; 342. } 343. 344. //methode 345. public void TampilkanRincian() { 346. System.out.println("Nama Ular = " + Nama); 347. System.out.println("Kulit = " + Kulit); 348. System.out.println("Keterangan = " + Keterangan); 349. System.out.println("Habitat = " + Habitat); 350. System.out.println("Status = " + Status); 351. } 352. } 353. 354. 355. 356. 357. package binatang; 358. //Kelas utama 359. //Perhatikan kata "main" 360. public class Binatang { 361. public static void main(String[] args) { 362. //instansiasi kelas 363. //menggunakan "new" 364. System.out.println("Berikut daftar binatang beserta salah satu turunannya :"); 365. System.out.println(""); 366. 367. Mamalia a = new Mamalia("Mamalia","Binatang Menyusui"); 368. Sapi aa = new Sapi("Sapi","Binatang Menyusui", "Penyedia Daging"); 369. Kucing ab = new Kucing("Kucing","Binatang Menyusui","Peliharaan Rumah"); 370. Tyoger aba = new Tyoger("Kucing","Binatang Menyusui","Peliharaan Rumah","Tyoge r"); 371. Tiffany abc = new Tiffany("Kucing","Binatang Menyusui","Peliharaan Rumah","Tif fany"); 372. Siam abb = new Siam("Kucing","Binatang Menyusui","Peliharaan Rumah","Siam"); 373. Anjing ac = new Anjing("Anjing","Binatang Menyusui","Peliharaan Rumah"); 374. Akita aca = new Akita("Anjing","Binatang Menyusui","Peliharaan Rumah","Akita") ; 375. Beagle acb = new Beagle("Anjing","Binatang Menyusui","Peliharaan Rumah","Beagl e"); 376. Kintamani acc = new Kintamani("Anjing","Binatang Menyusui","Peliharaan Rumah", "Kintamani"); 377. Reptil b = new Reptil("Reptil", "Bersisik", "Binatang Bertelur"); 378. Ular ba = new Ular("Ular","Bersisik","Binatang Bertelur","Hutan"); 379. Boa baa = new Boa("Ular Boa","Bersisik","Binatang Bertelur","Hutan","Tidak Ber bisa"); 380. Python bab = new Python("Ular Python","Bersisik","Binatang Bertelur","Hutan"," Tidak Berbisa"); 381. Cobra bac = new Cobra("Ular Cobra","Bersisik","Binatang Bertelur","Hutan","Ber bisa"); 382. Buaya bb = new Buaya ("Buaya","Bersisik","Binatang Bertelur","Rawa-rawa"); 383. Cicak bc = new Cicak ("Cicak","Bersisik","Binatang Bertelur","Rumah"); 384. 385. //Pemanggilan konstruktor masing - masing 386. //Catatan : penambahan System.out.println("") untuk memberikan ruang kosong 1 b aris, biar ga mepet liatnya :D 387. a.TampilkanRincian(); 388. System.out.println(""); 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. Output / Hasil aa.TampilkanRincian(); System.out.println(""); ab.TampilkanRincian(); System.out.println(""); ac.TampilkanRincian(); System.out.println(""); aca.TampilkanRincian(); System.out.println(""); acb.TampilkanRincian(); System.out.println(""); acc.TampilkanRincian(); System.out.println(""); b.TampilkanRincian(); System.out.println(""); ba.TampilkanRincian(); System.out.println(""); baa.TampilkanRincian(); System.out.println(""); bab.TampilkanRincian(); System.out.println(""); bac.TampilkanRincian(); System.out.println(""); bb.TampilkanRincian(); System.out.println(""); bc.TampilkanRincian(); System.out.println(""); System.out.println(""); } } Polymorphism Polymorphism merupakan suatu aksi yang memungkinkan pemogram menyampaikan suatu pesan tertentu keluar dari hierarki obyeknya, dimana suatu obyek tersebut yang berbeda memberikan tanggapan ataupun respon terhadap pesan yang sama sesuai dengan sifat masing-masing obyek. Itu berarti, Polymorphism “mempunyai banyak bentuk” yang juga merupakan salah satu sifat class yang memungkinkan sebuah method mempunyai nama yang sama, namun memiliki aksi yang berbeda. Polymorphism adalah pemikiran bahwa objek dinamis suatu class dasar dapat berperilaku seperti class turunan. Jika objek menunjuk class dasar maka ia perilaku seperti class dasar, dan jika ia menunjuk class turunan ia akan berperilaku seperti class turunan Contoh kasus kita buat program yang berfungsi untuk menghitung luas dan keliling bangun datar. Source code package inheritance; public class BangunDatar { float luas(){ System.out.println("Menghitung laus bangun datar"); return 0; } float keliling(){ System.out.println("Menghitung keliling bangun datar"); return 0; } } package inheritance; public class Persegi extends BangunDatar { float sisi; } package inheritance; public class Lingkaran extends BangunDatar{ // jari-jari lingkaran float r; } package inheritance; public class PersegiPanjang extends BangunDatar { float panjang; float lebar; } package inheritance; public class Segitiga extends BangunDatar { float alas; float tinggi; } package inheritance; public class Main { public static void main(String[] args) { // membuat objek bangun datar BangunDatar bangunDatar = new BangunDatar(); // membuat objek persegi dan mengisi nilai properti Persegi persegi = new Persegi(); persegi.sisi = 2; // membuat objek Lingkaran dan mengisi nilai properti Lingkaran lingkaran = new Lingkaran(); lingkaran.r = 22; // membuat objek Persegi Panjang dan mengisi nilai properti PersegiPanjang persegiPanjang = new PersegiPanjang(); persegiPanjang.panjang = 8; persegiPanjang.lebar = 4; // membuat objek Segitiga dan mengisi nilai properti Segitiga mSegitiga = new Segitiga(); mSegitiga.alas = 12; mSegitiga.tinggi = 8; // memanggil method luas dan keliling bangunDatar.luas(); bangunDatar.keliling(); persegi.luas(); persegi.keliling(); lingkaran.luas(); lingkaran.keliling(); persegiPanjang.luas(); persegiPanjang.keliling(); mSegitiga.luas(); mSegitiga.keliling(); } } Output / Hasil Aggregation or Composition Aggregation Aggregation adalah bentuk hubungan yang lebih khusus dari Assosiasi dimana sebuah object memiliki lifecycle nya sendiri tapi dengan kepemilikan dan class child tidak dapat memiliki class parentnya. Relasinya biasa di sebut relasi “has-a”. Composition Composition sama dengan relasi Agregasi, tapi lebih spesfic lagi yaitu lifecycle object bergantung pada object ownernya. Contoh kasus Department dan Teacher. Satu Teacher tidak dapat memiliki banyak Department, tapi jika kita menghapus object Department, object Teacher tidak akan ikut terhapus Source code 1. public class Department 2. { 3. private string _name; 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. public Department(string name) { _name = name; _teachers = new List<Teacher>(); } public string Name { get { return _name; } set { _name = value; } } public List<Teacher> _teachers; } 1. public class Teacher 2. { 3. private string _name; 4. public Teacher(string name) 5. { 6. _name = name; 7. } 8. public string Name 9. { 10. get { return _name; } 11. set { _name = value; } 12. } 13. } 1. public class ClientTester 2. { 3. public void AggregationTest() 4. { 5. var department = new Department("Electrical Engineering"); 6. 7. var teacher1 = new Teacher("Teacher 1"); 8. var teacher2 = new Teacher("Teacher 2"); 9. 10. department._teachers.Add(teacher1); 11. department._teachers.Add(teacher2); 12. 13. } 14. } Karena object teacher di buat di luar object department, sehingga jika object department dihancurkan maka object teacher tetap exist. Object department bisa memiliki banyak object teacher yang berasosiasi dengannya, tapi tidak sebaliknya. Sehingga dalam relasi ini object department adalah owner dari object teacher.