ASPEK – ASPEK UTAMA PADA OBJEK

  1. Abstraction ( Abstraksi )

Abstraksi adalah suatu cara melihat suatu objek dalam bentuk yang sederhana. Sebagai contoh jika kita melihat sepeda motor. Kita tidak perlu melihat susunan komponen mesin dan dukungan elektriknya yang cukup kompleks dan rumit, namun kita bisa melihat sepeda motor itu sebagai sebuah entitas / satuan tunggal (single entity) yang merupakan sebuah objek yang mempunyai sifat dan karakteristik tersendiri.

Dengan pemikiran yang sederhana ini maka ketika kita mengendarai sepeda motor tersebut kita tidak perlu tahu betapa rumit komponen dan rangkaian yang menyusun sepeda motor. Karena untuk mengendarai sepeda motor yang perlu diketahui adalah bagaimana sepeda motor itu bisa dikendalikan. Sehingga dengan konsep abstraksi ini kita bisa melihat suatu sistem yang kompleks yang terdiri dari subsistem-subsistem yang rumit dan banyak bisa dipandang menjadi sebuah paket sistem yang sederhana.

Pemahaman objek disekitar kita inilah yang akan mendasari pemahaman tentang pemrograman berorientasi objek. Yang paling penting adalah bagaimana mentransformasikan apa yang anda ketahui tentang suatu objek menjadi suatu program.

  1. Inheritance ( Pewarisan Sifat )

Pewarisan adalah proses penciptaan kelas baru dengan mewarisi karakteristik dari kelas yang telah ada, ditambah dengan karakteristik unik dari kelas baru tersebut. Dalam hirarki kelas, jika kelas C merupakan turunan kelas B, dan kelas B merupakan turunan kelas A, maka otomatis attribute  dan  method  kelas  A  juga  diwariskan  kelas  C.  Setiap  subclass  akan  mewarisi  state( variabel-variabel  )  dan  behaviour  (  method-method  )  dari  superclass-nya.  Subclass  kemudian dapat  menambahkan  state  dan  behaviour  baru  yang  spesifik  dan  dapat  pula  memodifikasi  ( override ) state dan behaviour yang diturunkan oleh superclass-nya.

Keuntungan dari inheritance adalah :

  1. Subclass menyediakan  state/behaviour  yang spesifik  yang membedakannya dengan superclass, hal ini akan memungkinkan programmer Java untuk menggunakan ulang source code dari superclass yang telah ada.
  2. Programmer Java  dapat  mendefinisikan  superclass  khusus  yang  bersifat  generik, yang  disebut  abstract class, untuk mendefinisikan  class  dengan  behaviour  dan  state secara umum.
  3. Kemudahan dalam me-manage kelas yang memiliki data dan method yang sama Untuk memodifikasi suatu data atau method untuk semua subkelas / kelas anak, maka tidak perlu melakukan perubahan di masing-masing kelas anak melainkan hanya pada kelas induk saja. Istilah dalam inheritance yang perlu diperhatikan :
  • Extends

Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass.

  • Superclass

Superclass digunakan untuk menunjukkan hirarki class yang berarti class dasar dari subclass/class anak.

  • Subclass

Subclass adalah class anak atau turunan secara hirarki dari superclass.

Sebagai Contoh :

Dari contoh dibawah bisa dilihat bahwa terdapat sebuah kelas CivitasAkademik yang memiliki 2 (dua) kelas turunan, yaitu Dosen dan Mahasiswa. Meskipun didalam kelas Dosen dan Mahasiswa tidak tercantum atribut Nama dan Alamat, tetapi keduanya tetap memiliki kedua atribut tersebut yang diturunkan dari kelas CivitasAkademik. Begitu juga untuk kelas Asisten dan PesertaUjian. Keduanya tetap memiliki atribut Nama dan Alamat yang diturunkan dari kelas Mahasiswa, yang sebenarnya juga turunan dari kelas CivitasAkademik. Hal tersebut tidak hanya berlaku untuk atribut saja, tetapi juga method – method yang ada di kelas induknya.

INHERITANCE

  1. Encapsulation ( Pengapsulan )

Encapsulation adalah proses pemaketan data bersama metode-metodenya dimana hal ini bermanfaat untuk menyembeunyikan rincian-rincian implementasi dari pemakai. Dalam sebuah objek yang mengandung variabel-variabel dan methodmethod, dapat ditentukan hak akses pada sebuah variabel atau method dari objek. Pembungkusan variabel dan method dalam sebuah objek dalam bagian yang terlindungi inilah yang disebut dengan enkapsulasi.

Bagian eksternal dari sebuah objek sering disebut sebagai interface atau antarmuka terhadap objek lain. Karena objek lain harus berkomunikasi dengan obejk itu hanya melalui antarmuka maka bagian internal objek dapat dilindungi dari gangguan luar. Karena program luar tidak mengakses implementasi internal objek, maka implementasi internal dapat berubah tanpa mempengaruhi bagian-bagian program lain.

Di dalam Java, pengkapsulan dapat dilakukan dengan pembentukan kelas-kelas menggunakan keyword class. Sedangkan penyembunyian informasi dapat dilakukan dengan pengendalian tgerhadap pengaksesan pembentuk kelas dengan keyword-keyword untuk kendali pengaksesan default, private, protected, dan public. Penyembunyian informasi deilakukan dengan implementasi penerapan kendari menggunakan keyword private dan protected pada elemen data.

Ada 2 manfaat utama dari enkapsulasi yaitu :

  • Penyembunyian Informasi (information hiding)

Hal ini mengacu kepada perlindungan terhadap implementasi obejk internal. Objek tersebut dari interface public dan bagian private yang merupakan kombinasi data dan metode internal. Manfaat utamanya adalah bagian internal dapat berubah tanpa mempengaruhi bagian-bagian program yang lain.

  • Modularitas

Modularitas berarti objek dapat dikelola secara independen. Karena kode sumber bagian internal objek dikelola secara terpisah dari antarmuka, maka Kita bebas melakukan modifikasi yang tidak menyebabkan masalah pada bagian-bagian lain dari sistem. Manfaat ini mempermudah mendistribusikan objek-objek dari sistem.

Sebagai contoh adalah pada sebuah mesin ATM. Yang disediakan oleh mesin ATM adalah sebuah layar informasi dan perangkat untuk membaca kartu. Saat kartu ATM dimasukkan, maka pengguna akan memasukkan nomor pin. Ketika pin dimasukkan, berarti telah terjadi proses pengaksesan data yang akan memberikan nomor pin untuk dikirimkan dan divalidasi pada server dari ATM tersebut. Disini terjadi penyembunyian informasi tentang bagaimana cara kerja pengecekan validitas kartu, kecocokan pin yang dimasukkan, koneksi ke database server, dll, dimana hal-hal tersebut tidak perlu diketahui oleh pengguna tentang bagaimana cara kerjanya.

  1. Polymorphism ( Banyak Bentuk )

Polymorphism dapat diartikan sebagai memiliki banyak bentuk. Dua objek atau lebih dikatakan sebagai polymorphic bila kedua objek tersebut mempunyai antarmuka identik namun mempunyai perilaku yang berbeda. Dalam pemrograman, polimorfisme dapat diartikan sebagai modul yang memiliki nama sama, namun memiliki behaviour (tingkah laku) yang berbeda sehingga listing code implementasinya juga berbeda.

Kondisi yang harus dipenuhi supaya polimorfisme dapat diimplementasikan adalah :

  • Method yang dipanggil harus melalui variabel dari basis class atau superclass.
  • Method yang dipanggil harus juga menjadi method dari basis class.
  • Signature method harus sama baik pada superclass maupun subclass.
  • Method access attribute pada subclass tidak boleh lebih terbatas dari basis class.

Sebagai contoh adalah sebuah obyek wanita, beberapa peran yang mungkin dimiliki adalah:

  • Bagi suami maka dia berperan sebagai seorang istri.
  • Buat anak-anak berperan sebagai ibu.
  • Di tempat kerja maka dia akan berperan sebagai seorang karyawan.
  • Di tempat kuliah berperan sebagai mahasiswi.
  • Di tempat arisan berperan sebagai ketua arisan

Dari contoh diatas bisa kita lihat bahwa wanita tersebut adalah orang yang sama, tetapi memiliki peran yang berbeda bagi orang yang berinteraksi dengannya.

  1. Message Sending ( Pengiriman Pesan )

Message sending atau pengiriman pesan merupakan pengiriman pesan dari suatu objek lain untuk melakukan suatu operasi

  1. Association ( Hubungan )

ASSOSIATION

Dapat dilihat pada gambar kelas diagram di atas, hubungan asosiasi digambarkan dengan satu garis tidak putus – putus dan tidak memiliki anak panah pada kedua ujungnya. Kemudian juga dibubuhkan kardinal pada garis tersebut.

Asosiasi adalah hubungan yang bisa saling menggunakan di dalam sebuah kelas, dan tidak saling memiliki. Misal pada gambar di atas terdapat kelas Dosen dan kelas Mahasiswa, dilihat dari kardinalitasnya, satu dosen bisa memiliki banyak mahasiswa. Apabila dosen dihilangkan, mahasiswa masih bisa digunakan karena tidak saling memiliki.

Sebagai contoh :

ASSOSIATION1

Bayangkanlah sebuah mobil angkot, yang di dalamnya ada seorang supir, seorang penumpang dan satu penumpang lainnya. Ketika supir dan dua penumpang berada dalam mobil, mereka berasosiasi dan mereka semua menuju ke arah atau alamat yang sama, mereka menempati tempat yang sama, yakni di dalam mobil. Namun kaitan asosiasi ini sifatnya lemah, supir dapat menurunkan salah satu atau kedua penumpang pada arah atau alamat yang terpisah, jadi penumpang tersebut tidak lagi berasosiasi dengan objek lainnya.

  1. Aggregation ( Agregasi )

AGGREGATION

Hubungan agregasi digambarkan dengan diamond putih, yang ditempelkan pada kelas yang memiliki, tidak dibubuhkan panah pada ujung yang tidak memiliki simbol diamond putih. Kemudian juga dibubuhkan kardinalitas seperti pada hubungan asosiasi.

Jika hubungan asosiasi adalah saling menggunakan, di sini hubungan yang terjadi adalah memiliki. Dilihat pada gambar kelas diagram di atas, bahwa kelas Jurusan memiliki kelas Mahasiswa sebagai variable nya. Meskipun kelas Jurusan memiliki kelas Mahasiswa, namun kedua kelas tersebut dapat dibuat secara independen.

Sebagai contoh :

Sebuah microwave terbentuk dari sebuah cabinet (semacam lemari kaca), sebuah pintu, sebuah panel indikator, sejumlah tombol, sebuah alat pemanas dan lain sebagainya. Agregasi mengimplikasikan kedekatan ketergantungan. Sebagai contoh, alat pemanas akan tetap menjadi sebuah alat pemanas meskipun kita melepaskannya dari microwave, namun sebuah microwave akan menjadi tidak berguna tanpa sebuah alat pemanas, karena microwave tersebut tidak akan dapat memanaskan makanan lagi.

Gambar di bawah akan menunjukkan bagaiman kita membuat rumah dengan kaitan agregasi :

AGGREGATION1

REFERENSI  :

http://donykusumawardana.blogspot.com/2014/07/abstraksi-encapsulation-inherintance.html

https://medium.com/skyshidigital/hubungan-antar-kelas-pada-java-bbe2131e592b

https://www.codepolitan.com/aggregation-dan-association-pada-java-58a1991f9b52c

https://www.academia.edu/11876100/Pemrograman_Berorientasi_Obyek